📄 projio.h
字号:
//****************************************************************************
// File PROJIO.H
//
// Input/Output control codes
//
// Copyright (c) APSoft, 1998-2002.
// All rights reserved.
//
//****************************************************************************
#ifndef _PROJIO_H_
#define _PROJIO_H_
#ifndef FILE_DEVICE_UNKNOWN
#define FILE_DEVICE_UNKNOWN 0x00000022
#endif
//----------------------- Pack structures to 1 byte --------------------------
#if (!defined(_H2INC) && _MSC_VER >= 900)
#pragma pack(push, 1) // Pack structures to 1 byte
#endif
// #if (!defined(_H2INC) && ...
#ifndef CTL_CODE
#define CTL_CODE( DeviceType, Function, Method, Access ) ( \
((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
)
#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_READ_ACCESS ( 0x0001 ) // file & pipe
#define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe
#endif
typedef union tagDRIVER_VERSION
{
DWORD dwVersion;
struct
{
BYTE bMajor;
BYTE bMinor;
WORD wAPI;
};
} DRIVER_VERSION, * PDRIVER_VERSION;
typedef struct tagGET_READMEMORY
{
DWORD dwOffset;
DWORD dwLength;
} GET_READMEMORY, * PGET_READMEMORY;
typedef struct tagGET_DEVICE_ID
{
USHORT uLength; // Size of string
WCHAR wszDevID[1]; // Device ID
} GET_DEVICE_ID, * PGET_DEVICE_ID;
typedef enum tagCS_TYPE
{
CSTYPE_NULL = 0x00, // No device
CSTYPE_ROM, // Read-Only memory
CSTYPE_OTPROM, // On time programable ROM
CSTYPE_EPROM, // UV EPROM
CSTYPE_EEPROM, // EEPROM
CSTYPE_FLASH, // Flash EPROM
CSTYPE_SRAM, // Static RAM
CSTYPE_DRAM, // Dynamic RAM
CSTYPE_FUNCSPEC = 0x0D, // Function specific memory
// address range, includes memory
// mapped I/O registers,
// dual-ported memory,
// communication buffers, etc.,
// which are not intended to be
// used as general-purpose memory.
CSTYPE_EXTENDED, // Extended type follow
CSTYPE_ATA = 0xFE // ATA card
} CS_TYPE;
//----------------------- Restore structure packing --------------------------
#if (!defined(_H2INC) && _MSC_VER >= 900)
#pragma pack(pop) // Restore structure packing
#endif // #if (!defined(_H2INC) && ...
//////////////////////////////////////////////////////////////////////////////
// Retrieve version of driver
// ---------------------------------------------------------------------------
// Input - None
// Output - Four bytes of driver version
//////////////////////////////////////////////////////////////////////////////
#define IOCTL_GET_VERSION CTL_CODE(FILE_DEVICE_UNKNOWN, \
0x1, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//////////////////////////////////////////////////////////////////////////////
// Retrieve device ID + instance ID size (with NULL)
// ---------------------------------------------------------------------------
// Input - None
// Output - DWORD with size
//////////////////////////////////////////////////////////////////////////////
#define IOCTL_GET_ID_SIZE CTL_CODE(FILE_DEVICE_UNKNOWN, \
0x2, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//////////////////////////////////////////////////////////////////////////////
// Retrieve device ID + instance ID
// ---------------------------------------------------------------------------
// Input - none
// Output - WCHAR *
//////////////////////////////////////////////////////////////////////////////
#define IOCTL_GET_ID CTL_CODE(FILE_DEVICE_UNKNOWN, \
0x3, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//////////////////////////////////////////////////////////////////////////////
// Retrieve device ID + instance ID (asynchronous)
// ---------------------------------------------------------------------------
// Input - none
// Output - WCHAR *
//////////////////////////////////////////////////////////////////////////////
#define IOCTL_GET_ID_ASYNC CTL_CODE(FILE_DEVICE_UNKNOWN, \
0x4, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//////////////////////////////////////////////////////////////////////////////
// Retrieve device ID + instance ID (asynchronous)
// ---------------------------------------------------------------------------
// Input - none
// Output - WCHAR *
//////////////////////////////////////////////////////////////////////////////
#define IOCTL_GET_MEMORY CTL_CODE(FILE_DEVICE_UNKNOWN, \
0x5, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//////////////////////////////////////////////////////////////////////////////
// Retrieve device ID + instance ID (asynchronous)
// ---------------------------------------------------------------------------
// Input - none
// Output - WCHAR *
//////////////////////////////////////////////////////////////////////////////
#define IOCTL_GET_CIS CTL_CODE(FILE_DEVICE_UNKNOWN, \
0x6, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//////////////////////////////////////////////////////////////////////////////
// Retrieve device ID + instance ID (asynchronous)
// ---------------------------------------------------------------------------
// Input - none
// Output - WCHAR *
//////////////////////////////////////////////////////////////////////////////
#define IOCTL_REG_CLIENT CTL_CODE(FILE_DEVICE_UNKNOWN, \
0x7, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//////////////////////////////////////////////////////////////////////////////
// Retrieve device ID + instance ID (asynchronous)
// ---------------------------------------------------------------------------
// Input - none
// Output - WCHAR *
//////////////////////////////////////////////////////////////////////////////
#define IOCTL_REL_CLIENT CTL_CODE(FILE_DEVICE_UNKNOWN, \
0x8, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
//////////////////////////////////////////////////////////////////////////////
// Retrieve device ID + instance ID
// ---------------------------------------------------------------------------
// Input - none
// Output - WCHAR *
//////////////////////////////////////////////////////////////////////////////
#define IOCTL_GET_MASK CTL_CODE(FILE_DEVICE_UNKNOWN, \
0x9, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#endif // #ifndef _PROJIO_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -