CTL_CODE宏
CTL_CODE:用於創建一個唯一的32位系統I/O控制代碼,這個控制代碼包括4部分組成:
DeviceType(設備類型,高16位(16-31位)),
Function(功能2-13 位),
Method(I/O訪問內存使用方式),
Access(訪問限制,14-15位)。
這個宏創建一個獨特的系統I/O(輸入輸出)控制代碼(IOCTL)。
#define xxx_xxx_xxx CTL_CODE(DeviceType, Function, Method, Access)
( ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
如例:
#include <winioctl.h>//用於創建一個唯一的32位系統 I/O 控制代碼,這個控制代碼包括4部分組成 #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x801,METHOD_BUFFERED,FILE_ANY_ACCESS)
Parameters(參數)
CTL_CODE:用於創建一個唯一的32位系統I/O控制代碼,這個控制代碼包括4部分組成:
DeviceType(設備類型,高16位(16-31位)),
Function(功能2-13 位),
Method(I/O訪問內存使用方式),
Access(訪問限制,14-15位)。
DeviceType 給發送控制代碼的設備定義一個設備類型。
微軟使用的值的范圍是0-32767;值32768-65535是由OEM和IHV使用保留。
下面的設備類型由系統定義的(枚舉):
FILE_DEVICE_BEEP
FILE_DEVICE_CD_ROM
FILE_DEVICE_CD_ROM_FILE_SYSTEM
FILE_DEVICE_CONTROLLER
FILE_DEVICE_DATALINK
FILE_DEVICE_DFS
FILE_DEVICE_DISK
FILE_DEVICE_DISK_FILE_SYSTEM
FILE_DEVICE_FILE_SYSTEM
FILE_DEVICE_INPORT_PORT
FILE_DEVICE_KEYBOARD
FILE_DEVICE_MAILSLOT
FILE_DEVICE_MIDI_IN
FILE_DEVICE_MIDI_OUT
FILE_DEVICE_MOUSE
FILE_DEVICE_MULTI_UNC_PROVIDER
FILE_DEVICE_NAMED_PIPE
FILE_DEVICE_NETWORK
FILE_DEVICE_NETWORK_BROWSER
FILE_DEVICE_NETWORK_FILE_SYSTEM
FILE_DEVICE_NULL
FILE_DEVICE_PARALLEL_PORT
FILE_DEVICE_PHYSICAL_NETCARD
FILE_DEVICE_PRINTER
FILE_DEVICE_SCANNER
FILE_DEVICE_SERIAL_MOUSE_PORT
FILE_DEVICE_SERIAL_PORT
FILE_DEVICE_SCREEN
FILE_DEVICE_SOUND
FILE_DEVICE_DEVICE_STREAMS
FILE_DEVICE_TAPE
FILE_DEVICE_TAPE_FILE_SYSTEM
FILE_DEVICE_TRANSPORT
FILE_DEVICE_UNKNOWN 未知的設備類型
FILE_DEVICE_VIDEO
FILE_DEVICE_VIRTUAL_DISK
FILE_DEVICE_WAVE_IN
FILE_DEVICE_WAVE_OUT
FILE_DEVICE_8042_PORT
FILE_DEVICE_NETWORK_REDIRECTOR
FILE_DEVICE_BATTERY
FILE_DEVICE_BUS_EXTENDER
FILE_DEVICE_MODEM
FILE_DEVICE_VDM
FILE_DEVICE_MASS_STORAGE
FILE_DEVICE_SMB
FILE_DEVICE_KS
FILE_DEVICE_CHANGER
FILE_DEVICE_SMARTCARD
FILE_DEVICE_ACPI
FILE_DEVICE_DVD
FILE_DEVICE_FULLSCREEN_VIDEO
FILE_DEVICE_DFS_FILE_SYSTEM
FILE_DEVICE_DFS_VOLUME
以下是Windows CE系統的設備類型:
FILE_DEVICE_HAL
FILE_DEVICE_CONSOLE
FILE_DEVICE_PSL
FILE_DEVICE_SERVICE
Function 為以上設備類型定義一個設備的唯一標識功能號。
CODE的唯一標識功能號用十六進制表示,轉換為十進制后的有效范圍是:0-2047是保留給微軟;代碼2048-4095是為OEM和IHV保留。其它功能代碼定義大於4095。
Method I/O訪問內存使用方式
讓編碼緩沖區按(枚舉)方法來通過I/O和文件系統控制
METHOD_BUFFERED
METHOD_IN_DIRECT
METHOD_OUT_DIRECT
METHOD_NEITHER
此字段被忽略的Windows CE(枚舉)。你應該總是使用METHOD_BUFFERED值,除非與基於Windows的桌面平台的兼容性是需要使用不同的方法
Access 訪問限制
下表顯示了此參數的可能標志(枚舉)。該FILE_ANY_ACCESS 通常是正確的值。
FILE_ANY_ACCESS 所有訪問請求。
FILE_READ_ACCESS 請求讀取訪問。可以用於FILE_WRITE_ACCESS。
FILE_WRITE_ACCESS 請求讀寫訪問。可以用於FILE_READ_ACCESS。
Return Values(返回值)
沒有返回值。
Remarks(備注)
宏可以被用來定義IOCTL和FSCTL功能控制代碼。所有的IOCTL必須以這種方式定義,以確保由微軟,OEM廠商,和IHV使用的值不重疊。