📄 phantomioctl.h
字号:
#ifndef PhantomIoCtlIncluded
#define PhantomIoCtlIncluded
#define PHANTOM_MAXBLOCKSIZE (16)
#define PHANTOM_MAX_CHANNELS (2)
typedef struct _PHANTOM_READ_STATUS_REGISTER
{
UCHAR Value;
} PHANTOM_READ_STATUS_REGISTER, *PPHANTOM_READ_STATUS_REGISTER;
typedef struct _PHANTOM_WRITE_STATUS_REGISTER
{
UCHAR Value;
} PHANTOM_WRITE_STATUS_REGISTER, *PPHANTOM_WRITE_STATUS_REGISTER;
typedef struct _PHANTOM_READ_CONTROL_REGISTER
{
UCHAR Value;
} PHANTOM_READ_CONTROL_REGISTER, *PPHANTOM_READ_CONTROL_REGISTER;
typedef struct _PHANTOM_WRITE_CONTROL_REGISTER
{
UCHAR Value;
} PHANTOM_WRITE_CONTROL_REGISTER, *PPHANTOM_WRITE_CONTROL_REGISTER;
typedef struct _PHANTOM_READ_ECR_REGISTER
{
UCHAR Value;
} PHANTOM_READ_ECR_REGISTER, *PPHANTOM_READ_ECR_REGISTER;
typedef struct _PHANTOM_WRITE_ECR_REGISTER
{
UCHAR Value;
} PHANTOM_WRITE_ECR_REGISTER, *PPHANTOM_WRITE_ECR_REGISTER;
typedef struct _PHANTOM_READ_BYTE
{
UCHAR Address;
UCHAR Value;
} PHANTOM_READ_BYTE, *PPHANTOM_READ_BYTE;
typedef struct _PHANTOM_WRITE_BYTE
{
UCHAR Address;
UCHAR Value;
} PHANTOM_WRITE_BYTE, *PPHANTOM_WRITE_BYTE;
typedef struct _PHANTOM_WRITE_BLOCK
{
UCHAR Address;
UCHAR Count;
UCHAR Values[PHANTOM_MAXBLOCKSIZE];
} PHANTOM_WRITE_BLOCK, *PPHANTOM_WRITE_BLOCK;
typedef struct _PHANTOM_READ_BLOCK
{
UCHAR Address;
UCHAR Count;
UCHAR Values[PHANTOM_MAXBLOCKSIZE];
} PHANTOM_READ_BLOCK, *PPHANTOM_READ_BLOCK;
typedef struct _PHANTOM_READ_WRITE_BLOCK
{
UCHAR ChannelMask;
UCHAR ReadCount[PHANTOM_MAX_CHANNELS];
UCHAR WriteCount[PHANTOM_MAX_CHANNELS];
UCHAR Values[PHANTOM_MAX_CHANNELS][PHANTOM_MAXBLOCKSIZE];
BOOLEAN EnableSoftwareWatchdog;
} PHANTOM_READ_WRITE_BLOCK, *PPHANTOM_READ_WRITE_BLOCK;
typedef struct _PHANTOM_ENABLE_TIMER_EVENT
{
HANDLE EventHandle;
BOOLEAN UseSoftwareTimer;
ULONG SoftwareTimerPeriodMs;
} PHANTOM_ENABLE_TIMER_EVENT, *PPHANTOM_ENABLE_TIMER_EVENT;
typedef struct _PHANTOM_READ_EVENT_COUNT
{
ULONG EventCount;
} PHANTOM_READ_EVENT_COUNT, *PPHANTOM_READ_EVENT_COUNT;
//
// Macro definition for defining IOCTL and FSCTL function control codes. Note
// that function codes 0-2047 are reserved for Microsoft Corporation, and
// 2048-4095 are reserved for customers.
//
#define CTL_CODE( DeviceType, Function, Method, Access ) ( \
((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)
//
// Define the method codes for how buffers are passed for I/O and FS controls
//
#define METHOD_BUFFERED 0
#define METHOD_IN_DIRECT 1
#define METHOD_OUT_DIRECT 2
#define METHOD_NEITHER 3
#define FILE_ANY_ACCESS 0
#define FILE_SPECIAL_ACCESS (FILE_ANY_ACCESS)
#define FILE_READ_ACCESS ( 0x0001 ) // file & pipe
#define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe
#define PHANTOMEPP_TYPE 40000 /* 32768-65535 are reserved for customers */
// The IOCTL function codes from 0x800 to 0xFFF are for customer use.
#define IOCTL_READ_STATUS_REGISTER \
CTL_CODE(PHANTOMEPP_TYPE, 0x900, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_WRITE_STATUS_REGISTER \
CTL_CODE(PHANTOMEPP_TYPE, 0x901, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_READ_CONTROL_REGISTER \
CTL_CODE(PHANTOMEPP_TYPE, 0x902, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_WRITE_CONTROL_REGISTER \
CTL_CODE(PHANTOMEPP_TYPE, 0x903, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_READ_BYTE \
CTL_CODE(PHANTOMEPP_TYPE, 0x904, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_WRITE_BYTE \
CTL_CODE(PHANTOMEPP_TYPE, 0x905, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_READ_BLOCK \
CTL_CODE(PHANTOMEPP_TYPE, 0x906, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_WRITE_BLOCK \
CTL_CODE(PHANTOMEPP_TYPE, 0x907, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_READ_WRITE_PHANTOM \
CTL_CODE(PHANTOMEPP_TYPE, 0x910, METHOD_BUFFERED , FILE_ANY_ACCESS)
#define IOCTL_PING_DEVICE \
CTL_CODE(PHANTOMEPP_TYPE, 0x911, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_WAIT_INTERRUPT \
CTL_CODE(PHANTOMEPP_TYPE, 0x912, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_READ_ECR_REGISTER \
CTL_CODE(PHANTOMEPP_TYPE, 0x913, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_WRITE_ECR_REGISTER \
CTL_CODE(PHANTOMEPP_TYPE, 0x914, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_ENABLE_TIMER_EVENT \
CTL_CODE(PHANTOMEPP_TYPE, 0x915, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISABLE_TIMER_EVENT \
CTL_CODE(PHANTOMEPP_TYPE, 0x916, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_READ_EVENT_COUNT \
CTL_CODE(PHANTOMEPP_TYPE, 0x917, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_OPEN_DEVICE \
CTL_CODE(PHANTOMEPP_TYPE, 0x918, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_OPEN_CLOSE \
CTL_CODE(PHANTOMEPP_TYPE, 0x919, METHOD_BUFFERED, FILE_ANY_ACCESS)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -