IoOpenDeviceInterfaceRegistryKey
NTSTATUS __stdcall IoOpenDeviceInterfaceRegistryKey(
_UNICODE_STRING *SymbolicLinkName,
UINT64 DesiredAccess,
PVOID *DeviceInterfaceKey){
int v4;
NTSTATUS v6;
_ETHREAD *CurrentThread;
__int64 v8;
PWCHAR InFreeString;
InFreeString = 0i64;
v4 = DesiredAccess;
if( SymbolicLinkName && SymbolicLinkName->Buffer && SymbolicLinkName->Length )
{
v6 = PnpUnicodeStringToWstr(&InFreeString, 0i64, SymbolicLinkName);
if( v6 >= 0 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquireResourceExclusiveLite(&PnpRegistryDeviceResource, 1u);
v6 = CmOpenDeviceInterfaceRegKey(PiPnpRtlCtx, InFreeString, 0x32u, v8, v4, 1, (__int64)DeviceInterfaceKey, 0i64);
if( v6 >= 0 && DeviceInterfaceKey )
IopApplyMutableTagToRegistryKey(*DeviceInterfaceKey);
ExReleaseResourceLite(&PnpRegistryDeviceResource);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}
}
else
{
v6 = -1073741811;
}
PnpUnicodeStringToWstrFree(InFreeString, SymbolicLinkName);
return v6;
}Referenced by:
IoWMISuggestInstanceName