CTL_CODE说明

我们在说DeviceIoControl函数时其第二个参数dwIoControlCode就是由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/O control code (IOCTL).

#define CTL_CODE(DeviceType, Function, Method, Access) (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)
)

Parameters(参数)

DeviceType
Defines the type of device for the given IOCTL.

This parameter can be no bigger than a WORD value.

The values used by Microsoft are in the range 0-32767; the values 32768-65535 are reserved for use by OEMs and IHVs.

The following device types are defined by the system:

  • 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

The following device types are specific to Windows CE:

  • FILE_DEVICE_HAL
  • FILE_DEVICE_CONSOLE
  • FILE_DEVICE_PSL
  • FILE_DEVICE_SERVICE
Function
Defines an action within the device category.

Function codes 0-2047 are reserved for Microsoft; codes 2048-4095 are reserved for OEMs and IHVs.

A function code can be no larger then 4095.

Method
Defines the method codes for how buffers are passed for I/O and file system controls.

The following values are possible for this parameter:

  • METHOD_BUFFERED
  • METHOD_IN_DIRECT
  • METHOD_OUT_DIRECT
  • METHOD_NEITHER

This field is ignored by Windows CE. You should always use the METHOD_BUFFERED value unless compatibility with Windows-based desktop platforms is required using a different Method value.

Access
Defines the access check value for any access.

The following table shows the possible flags for this parameter. The FILE_ACCESS_ANY is generally the correct value.

FlagDescription
FILE_ANY_ACCESSRequest all access.
FILE_READ_ACCESSRequest read access. Can be used with FILE_WRITE_ACCESS.
FILE_WRITE_ACCESSRequest write access. Can be used with FILE_READ_ACCESS.

Return Values(返回值)

None.

Remarks(备注)

The macro can be used for defining IOCTL and FSCTL function control codes. All IOCTLs must be defined this way to ensure that values used by Microsoft, OEMs, and IHVs do not overlap.

The following illustration shows the format of the resulting IOCTL.

 

举例说明一下:

我定义两个IOCTL,一个用于对设备的读,一个用于对设备的写

#define ATST2004_IOCTL_READ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_READ_DATA)
#define ATST2004_IOCTL_WRITE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED, FILE_WRITE_DATA)

在VC中使用不需要进行处理,假如我要在VB中使用这两个IOCTL,就需要进行查值计算了,计算后定义如下:

Private Const ATST2004_IOCTL_READ = &H226000
Private Const ATST2004_IOCTL_WRITE = &H22A004

关于Method(I/O访问内存使用方式),我们下篇在说。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修改Linux主机名和IP

问题描述 又到了例行的系统安全测试时间&#xff0c;公司部署的一套系统需要做安全测试了&#xff0c;首先要做主机渗透&#xff0c;显然不可能在正式环境直接测&#xff0c;于是就把几台服务器做了个镜像&#xff0c;作为测试环境。 现在问题是&#xff0c;测试环境的ip要修…

可以获得索引值码_搜索引擎优化最适合什么样子的工作?

有些人一直在学习搜索引擎优化&#xff0c;并一直想学习搜索引擎优化。这里是一个关于搜索引擎优化职位的简要介绍。1、 搜索引擎优化的位置是什么&#xff1f;随着电子商务产业的发展&#xff0c;搜索引擎优化的地位越来越重要。它主要负责优化网页的自然排名&#xff0c;这与…

【转】医学图像之DICOM格式解析

最近导师给安排了新任务&#xff0c;由于刚进入实验室&#xff0c;对于医学图像这一块还一知半解&#xff0c;所以就想分享一下有关医学常见影像的学习资料(尤其是dicom后缀的图像文件)&#xff0c;欢迎大家一起交流。 目录 1.医学影像学的介绍 2.DICOM信息的简介 3.DICOM内…

DeviceIoControl的使用说明

应用程序和驱动程序的通信过程是&#xff1a;应用程序使用CreateFile函数打开设备&#xff0c;然后用DeviceIoControl与驱动程序进行通信&#xff0c;包括读和写两种操作。还可以用ReadFile读数据用WriteFile写数据。操作完毕时用CloseHandle关闭设备。我们比较常用的就是用Dev…

多元有序logistic回归分析_一文详述:观察性研究中的logistic回归分析思路

本文内容来自《中华流行病学杂志》2019年第40卷第8期&#xff0c;作者为冯国双教授&#xff0c;原题目为《观察性研究中的logistic回归分析思路》。将这篇文章分享给医咖会的伙伴们&#xff0c;希望大家能从领域大咖的见解中有所收获&#xff0c;指导医学研究之路。&#xff08…

CTL_CODE定义中Method的说明

我在上一篇中说明CTL_CODE的时候&#xff0c;其中CTL_CODE定义中有一个Method域&#xff0c;该域的功能意义是定义用于与在驱动程序中获取应用程序数据缓冲区的地址方式。如果你看了我前边的文章&#xff0c;你可以看到在DeviceIoControl的使用说明中对DeviceIoControl参数进行…

【转】禁用Chrome和Firefox中自动播放的动画GIF

动画GIF已经腐臭&#xff0c;并且在浏览时自动播放时可能会非常烦人。以下是如何阻止他们在Chrome和Firefox中自动播放。 禁用动画GIF Firefox 在地址栏中输入&#xff1a; about:config&#xff0c;然后按Enter。如果“这可能会使您的保修信息失效&#xff0c;请点击&#…

Python:Sklearn概述

文章来源&#xff1a;https://blog.csdn.net/algorithmPro/article/details/103045824 Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上&#xff0c;里面的 API 的设计非常好&#xff0c;所有对象的接口简单…

裤子尺码对照表eur40_欧洲40的尺码具体部位多少

展开全部根据服装bai尺码标准&#xff1a;欧码的du40码等于中zhi国尺码175/96A。172/96A&#xff0c;代表身高dao173-177cm&#xff0c;胸围94-98cm&#xff0c;腰内围76-80cm&#xff0c;A表示A型标准体型。容在国家标准GB/T1335中&#xff0c;女装上衣S号(小号)的号型是155/8…

wince下Gpio 驱动程序

【转】wince下Gpio 驱动程序 在WINCE下能够直接访问的都是虚拟地址&#xff0c;不能直接访问GPIO端口&#xff0c;因此我们首先需要将GPIO口的物理地址映射到虚拟地址上来。 分别使用VirtualAlloc和VirtualCopy这两个函数来完成映射&#xff01; 这两个函数的原型&#xff1a; …

【转】CT层厚、层间距、层间隔的概念是什么,MRI的层厚、层间距、曾间隔是什么

CT层厚指扫描层的厚度。CT层间距指两个扫描层面中心之间的距离。CT层间隔指两层之间的距离。 做CT打比方就是把胡萝卜切成片&#xff0c;观察每片的结构。 那胡萝卜需要切多厚呢&#xff1f;这个葫芦卜片的厚度就是这个扫描层厚。当然切得越薄看得越细&#xff0c;但人体承受的…

内存参数 计算_Spark统一内存管理的实现

本文从源码角度分析spark统一内存管理的实现原理。统一内存管理对象的创建统一内存管理对象在SparkEnv中进行创建和管理&#xff0c;这样内存管理就在Driver和Executor端中都可以使用。在SparkEnv的create函数中&#xff0c;创建内存管理对象的实现代码如下&#xff1a;val use…

Python:以鸢尾花数据为例,介绍决策树算法

文章参考来源&#xff1a; https://www.cnblogs.com/yanqiang/p/11600569.html https://www.cnblogs.com/baby-lily/p/10646226.html https://blog.csdn.net/liuziyuan333183/article/details/107399633 决策树算法 决策树算法主要有ID3, C4.5, CART这三种。 ID3算法从树的…

VirtualAlloc和VirtualCopy的蕴含知识点

VirtualAlloc和VirtualCopy的蕴含知识点 1.VirtualAlloc用来在进程的虚拟地址空间中保留&#xff08;reserve)或者提交(commit)页。在保留时以64KB为粒度&#xff0c;即保留空间以64K为单位。而提交虚拟地址时&#xff0c;则以页(典型大小为4KB)为单位。 2.VirtualCopy用来绑…

【转】CT球管小知识--热容量

Heat Unit 简称HU&#xff0c;为DR、CT等医疗设备中球管的热容量单位。如&#xff0c;Varian球管RAD14的热容量为300kHU。设备工作时&#xff0c;X线管两极之间要承受极高的电压&#xff0c;并通过一定量电流&#xff0c;高速电子束撞击阳极靶面&#xff0c;将产生大量热能。X线…

Python: SVM模型简介

文章来源&#xff1a;https://www.cnblogs.com/solong1989/p/9620170.html SVM简介及sklearn参数 1.SVM简介 支持向量机SVM&#xff08;Support Victory Machines&#xff09;方法建立在统计学VC维和结构风险最小化原则上&#xff0c;既可以用于分类&#xff08;二/多分类&…

一键锁屏_ios快捷指令一键登录校园网(桂航为例,哆点认证)

&#xff08;鄙人水平很有限&#xff0c;所学的专业也和此无关&#xff0c;文中有的东西可能会说错&#xff0c;但我尽量用简单的方式说。请多指教&#xff09;现在很多高校现在晚上断电断网&#xff0c;最烦恼的事莫过于第二天早上起床眯着眼摸出手机输入账号密码登录校园网的…

Membership 数据字典

最近想做一个给予角色管理的权限管理系统&#xff0c;在网上找了些资料&#xff0c;发现sql2005的Membership不错&#xff0c;整理了一下sql2005中Membership的数据字典,在这里贴出来 &#xff0c;只可惜我现在做的项目还是用的.net2003&#xff0c;2003还没有封装好的 Provide…

VirtualCopy()操作I/O口 物理地址为什么要移8位

(1)IO接口是XSCale处理器的外部设备,对于一般的单片机,可以直接操作硬件,即通过直接读写IO端口来访问硬件.而对于WICNE操作系统,它屏蔽了用户应用程序对硬件访问的权限,只有内核应用程序才可以访问硬件资源.如果要直接访问某一址的物理内存(对于ARM核的MCU,IO端口地址通常被映射…

【转】一篇文章完整了解CT成像技术(完整版)

1&#xff0e;CT的发明与发展 1.1 CT的发明 CT是计算机断层摄影术&#xff08;Computed Tomography&#xff0c;CT&#xff09;的简称&#xff0c;是继1895年伦琴发现X线以来&#xff0c;医学影像学发展史上的一次革命。 CT的发明可以追溯到1917年。当时&#xff0c;奥地利数…