详解CTL_CODE宏

 

详解CTL_CODE宏

CTL_CODE:用于创建一个唯一的32位系统I/O控制代码,这个控制代码包括4部分组成:

DeviceType(设备类型,高16位(16-31位)),

Access(访问限制,14-15位),

Function(功能2-13 位),

Method(I/O访问内存使用方式)。

This macro creates a unique system I/Ocontrol code (IOCTL).

#define CTL_CODE(DeviceType, Function,Method, Access) ( ((DeviceType) << 16) | ((Access) << 14) |((Function) << 2) | (Method))Parameters(参数)
DeviceType 
定义为给定的设备IOCTL的类型。
微软使用的值的范围是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

以上设备类型定义一个设备的功能。
设备类型码0-2047是保留给微软;代码2048-4095是为OEM和IHV保留。
其它功能代码定义大于4095。

Method I/O访问内存使用方式

METHOD_BUFFERED 
METHOD_IN_DIRECT 
METHOD_OUT_DIRECT 
METHOD_NEITHER 
此字段被忽略的Windows CE。你应该总是使用METHOD_BUFFERED值,除非与基于Windows的桌面平台的兼容性是需要使用不同的方法

Access 访问限制
下表显示了此参数的可能标志。该FILE_ACCESS_ANY通常是正确的值。

FILE_ANY_ACCESS Request all access. 
FILE_READ_ACCESS Request read access. Can be used with FILE_WRITE_ACCESS. 
FILE_WRITE_ACCESS Request write access. Can be used with FILE_READ_ACCESS.

Return Values(返回值)
None.

Remarks(备注)
宏可以被用来定义IOCTL和FSCTL功能控制代码。所有的IOCTL必须以这种方式定义,以确保由微软,OEM厂商,和IHV使用的值不重叠。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值