IoOpenDeviceRegistryKey例程
IoOpenDeviceRegistryKey例程返回特定设备实例的特定于设备或特定于驱动程序的注册表项的句柄。
语法
NTSTATUS IoOpenDeviceRegistryKey(
_In_ PDEVICE_OBJECT DeviceObject,
_In_ ULONG DevInstKeyType,
_In_ ACCESS_MASK DesiredAccess,
_Out_ PHANDLE DevInstRegKey
);
参数
- DeviceObject [in]
指向要打开其注册表项的设备实例的 PDO 的指针。 - DevInstKeyType [in]
指定指示是否打开特定于设备的硬件键或特定于驱动程序的软件键的标志。标志还指示该键是否与当前的硬件配置文件相关。有关硬件和软件键的详细信息, 请参阅驱动程序的注册表项.
这些标志的定义如下:
- PLUGPLAY_REGKEY_DEVICE
【HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\ZHANGFANDEVICE\0000\Device Parameters】
在设备的硬件键下打开设备参数子项。该键位于由DeviceObject指定的设备实例的键下。无法使用 PLUGPLAY_REGKEY_DRIVER 指定此标志。 - PLUGPLAY_REGKEY_DRIVER
【HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class{EF2962F0-0D55-4BFF-B8AA-2221EE8A79B0}\0000 】
打开软件键以存储驱动程序特定的信息。无法使用 PLUGPLAY_REGKEY_DEVICE 指定此标志。 - PLUGPLAY_REGKEY_CURRENT_HWPROFILE
打开相对于当前设备或驱动程序信息的硬件配置文件的键。这使驱动程序可以访问特定于硬件配置文件的配置信息。调用方必须使用此标志指定 PLUGPLAY_REGKEY_DEVICE 或PLUGPLAY_REGKEY_DRIVER。
- PLUGPLAY_REGKEY_DEVICE
- DesiredAccess [in]
指定 ACCESS_MASK 值, 它表示调用方需要该键的访问权限。有关每个 KEY_XXX访问权限的说明, 请参见 ZwCreateKey 例程。 - DevInstRegKey [out]
指向调用方分配的缓冲区的指针, 它在成功返回时包含请求的注册表项的句柄。
返回值
IoOpenDeviceRegistryKey 如果调用成功, 则返回 STATUS_SUCCESS。可能的错误返回值包括以下内容.
返回代码 | 描述 | |
---|---|---|
STATUS_INVALID_PARAMETER | 可能指示调用方指定了一组非法的DevInstKeyType标志。 | |
STATUS_INVALID_DEVICE_REQUEST | 可能指示DeviceObject不是有效的 PDO。 |
摘要
当不再需要访问时, 驱动程序必须调用 ZwClose 以关闭从该例程返回的句柄。
此例程打开的注册表项是非易失的。
用户模式安装应用程序 (如 类安装程序) 可以使用设备安装功能 (如 SetupDiOpenDevRegKey ) 访问这些注册表项.
要创建注册表项, 请在安装应用程序中使用 inf AddReg 指令 在 INF 文件中或使用 SetupDiCreateDevRegKey 。
IoOpenDeviceRegistryKey的调用方必须在系统线程的上下文中运行 IRQL = PASSIVE_LEVEL。
要求
Target platform | Universal |
---|---|
Version | Available starting with Windows 2000. |
Header | Wdm.h (include Wdm.h, Ntddk.h, or Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (see Remarks section) |
DDI compliance rules | PowerIrpDDis, HwStorPortProhibitedDDIs |
另请参阅
ACCESS_MASK
ZwClose