IoCreateDevice /IoCreateSymbolicLink /DestinationString
来源:互联网 发布:军事仿真软件 编辑:程序博客网 时间:2024/06/05 20:50
http://hi.baidu.com/alalmn/blog/item/b496d3033b960c793912bb55.html
IoCreateDevice 为驱动创建一个设备对象 格式如下:
NTSTATUS IoCreateDevice(
IN PDRIVER_OBJECT DriverObject,
IN ULONG DeviceExtensionSize,
IN PUNICODE_STRING DeviceName OPTIONAL,
IN DEVICE_TYPE DeviceType,
IN ULONG DeviceCharacteristics,
IN BOOLEAN Exclusive,
OUT PDEVICE_OBJECT *DeviceObject );
参数:
DriverObject
为指针调用驱动程序对象。每个驱动程序接收一个参数的指针,并将司机反对其DriverEntry例程。波分复用功能和筛选器驱动程序也可领取的AddDevice例程的驱动程序对象的指针。
DeviceExtensionSize //0
给_DEVICE_OBJECT.DeviceExtension指定内存空间大小,具体看自己定义结构的大小
DeviceName
设备名字
DeviceType
设备类型 这里我们用FILE_DEVICE_UNKNOWN
DeviceCharacteristics
设备特征信息 一般为0
Exclusive
是否指定设备为独占 是为TRUE,否为FALSE
DeviceObject
指针变量接收一个指向新创建的DEVICE_OBJECT结构。用来回传数据
返回值
调用成功会返回 STATUS_SUCCESS 如果出错会返回下列值
STATUS_INSUFFICIENT_RESOURCES//资源不足
STATUS_OBJECT_NAME_EXISTS //指定对象名存在
STATUS_OBJECT_NAME_COLLISION//对象名有冲突
///////////////////////////////////////////////////////////////
IoCreateSymbolicLink
创建一个设备链接。驱动程序虽然有了设备名称,但是这种设备名筄只能在内核 态可见,而对于应用程序是不可见的,因此,驱动需要要暴露一个符号链接,该链接指向真正的设备名称
NTSTATUS IoCreateSymbolicLink(
IN PUNICODE_STRING SymbolicLinkName,
IN PUNICODE_STRING DeviceName );
参数:
SymbolicLinkName
Unicode字符串指针,是一个用户态可见的名称。
DeviceName
Unicode字符串指针,是驱动程序创建的设备对象名称。
Return Value
如果符号链接创建成功 返回STATUS_SUCCESS
///////////////////////////////////////////////////////////////
VOID IoDeleteDevice(
IN PDEVICE_OBJECT DeviceObject
);
参数
DeviceObject
PDEVICE_OBJECT类型的指针,指向需要删除的设备对象
无返回值
///////////////////////////////////////////////////////////////
VOID RtlInitUnicodeString
(
IN OUT PUNICODE_STRING DestinationString,
IN PCWSTR SourceString
);
DestinationString
需要初始化的指针PUNICODE_STRING
SourceString
指向一个以空结尾的Unicode字符串常量,用这个字符串来初始化DestinationString。
例子
PUNICODE_STRING s;
RtlInitUnicodeString(s, L"宽字符");//s=L"宽字符";
- IoCreateDevice /IoCreateSymbolicLink /DestinationString
- 转:驱动开发函数IoCreateDevice /IoCreateSymbolicLink / IoDeleteDevice
- RtlInitUnicodeString、IoCreateDevice、IoCreateSymbolicLink、IoDeleteDevice 四个 API 驱动函数的使用
- IoCreateSymbolicLink
- IoCreateDevice
- IoCreateDevice
- IoCreateDevice
- IoCreateSymbolicLink与IoRegisterDeviceInterface
- DO_DEVICE_INITIALIZING 创建设备 iocreatedevice windows内核开发
- ReacOS源代码阅读之驱动--IoCreateDevice
- IoCreateSymbolicLink函数的作用以及符号链接、设备名称之间的关系
- 0.driverbase-驱动对象、设备对象、DriverEntry、IoCreateDevice、符号链接、DriverUnLoad、WDM
- 安装office2007之后,安装vs2008,每次打开office2007总是提示信息,解决方法
- 贯彻落实省委人大工作会议精神汇报提纲
- 精简出最小JRE
- Eclipse C/C++ 设置动态库查找路径
- [数据结构]树状数组专辑
- IoCreateDevice /IoCreateSymbolicLink /DestinationString
- 各地认真贯彻落实省委省政府领导视察民族乡时的讲话精神
- 使用Qt和OpenCV做的图片平滑器
- 怎样重构C#异常处理
- Handbook of Software Architecture 软件架构手册 [翻译]
- Android中Bitmap按比例放大
- 面向过程与面向对象的区别
- 想一想,说一说
- 数据库中的聚合函数