IoOpenDeviceRegistryKey函数的使用
2010-08-10 15:15
435 查看
函数原型如下:
NTSTATUS IoOpenDeviceRegistryKey( IN PDEVICE_OBJECT DeviceObject, IN ULONG DevInstKeyType, IN ACCESS_MASK DesiredAccess, OUT PHANDLE DevInstRegKey );
其中DevInstKeyType为PLUGPLAY_REGKEY_DRIVER时,是操作HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{EF2962F0-0D55-4BFF-B8AA-2221EE8A79B0}\0000
而DevInstKeyType为PLUGPLAY_REGKEY_DEVICE时,是操作HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\ZHANGFANDEVICE\0000\Device Parameters
以下是测试代码:
HANDLE devInstRegKey;
NTSTATUS status = IoOpenDeviceRegistryKey (pdo,
PLUGPLAY_REGKEY_DRIVER ,
STANDARD_RIGHTS_ALL,
&devInstRegKey);
UNICODE_STRING ValueName;
RtlInitUnicodeString(&ValueName, L"MyValue1234");
ULONG Value = 0x12345678;
status = ZwSetValueKey(devInstRegKey, &ValueName, 0, REG_DWORD, &Value, sizeof(ULONG));
if (NT_SUCCESS(status)) {
ZwClose(devInstRegKey);
} else {
KdPrint(("write reg failed")); // handle error.
}
NTSTATUS IoOpenDeviceRegistryKey( IN PDEVICE_OBJECT DeviceObject, IN ULONG DevInstKeyType, IN ACCESS_MASK DesiredAccess, OUT PHANDLE DevInstRegKey );
其中DevInstKeyType为PLUGPLAY_REGKEY_DRIVER时,是操作HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{EF2962F0-0D55-4BFF-B8AA-2221EE8A79B0}\0000
而DevInstKeyType为PLUGPLAY_REGKEY_DEVICE时,是操作HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\ZHANGFANDEVICE\0000\Device Parameters
以下是测试代码:
HANDLE devInstRegKey;
NTSTATUS status = IoOpenDeviceRegistryKey (pdo,
PLUGPLAY_REGKEY_DRIVER ,
STANDARD_RIGHTS_ALL,
&devInstRegKey);
UNICODE_STRING ValueName;
RtlInitUnicodeString(&ValueName, L"MyValue1234");
ULONG Value = 0x12345678;
status = ZwSetValueKey(devInstRegKey, &ValueName, 0, REG_DWORD, &Value, sizeof(ULONG));
if (NT_SUCCESS(status)) {
ZwClose(devInstRegKey);
} else {
KdPrint(("write reg failed")); // handle error.
}
相关文章推荐
- IoOpenDeviceRegistryKey例程
- IoOpenDeviceInterfaceRegistryKey例程
- RtlInitUnicodeString、IoCreateDevice、IoCreateSymbolicLink、IoDeleteDevice 四个 API 驱动函数的使用
- SetupDiGetDeviceRegistryProperty-使用SetupDi系列函数进行设备信息的管理(三)
- 【python】如何批量读取文件夹的所有文件数据,os模块与open函数结合使用实例
- Context类中openFileOutput ()函数的使用
- php数组查找函数in_array()、array_search()、array_key_exists()使用实例
- IO端口和IO内存的区别及分别使用的函数接口
- 【linux开发】IO端口和IO内存的区别及分别使用的函数接口
- 安卓应用程序在真机上调试时无打印信息,提示Unable to open log device ‘/dev/log/main’: No such file or directory在我们使用真机进行An
- open read write fcntl lseek等函数的使用整理:
- boost::io_service 的使用 & 如何检查网络通讯正常?心跳包机制 or Detection of Half-Open (Dropped) Connections
- 内核层读写应用层文件,使用filp_open函数——完美
- 使用Device IO Control 讀寫 USB Mass Storage
- IO端口和IO内存的区别及分别使用的函数接口
- LED显示(4):使用内核IO操作及延时函数
- 如何使用 URLOpenStream 函数 - 回复 "天泽" 的问题
- Runtime.getRuntime().exec(cmd)使用不当引起的java.io.IOException: Too many open files
- 【linux】open函数创建新文件及umask函数使用
- MFC函数—SetRegistryKey