⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phantomioctl.h

📁 用Ardence RTX SDK开发的EPP并口驱动程序.
💻 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 + -