WmipDeregisterDevice
NTSTATUS __stdcall WmipDeregisterDevice(_DEVICE_OBJECT *DeviceObject){
NTSTATUS v2;
_REGENTRY *RegEntryByDevice;
__int64 **i;
v2 = 0;
KeWaitForSingleObject((UINT64)&ExBootDevicesRemovedEvent + 3072, 0, 0, 0, 0i64);
RegEntryByDevice = WmipFindRegEntryByDevice(DeviceObject);
if( RegEntryByDevice )
{
for( i = (__int64 **)*(&stru_140C00F40 + 942); i != (__int64 **)((char *)&stru_140C00F40 + 7536); i = (__int64 **)*i )
{
if( i[3] == (__int64 *)RegEntryByDevice )
{
i[3] = 0i64;
WmipUnreferenceRegEntry(RegEntryByDevice);
}
}
}
KeReleaseMutex((_KMUTANT *)((char *)&ExBootDevicesRemovedEvent + 3072), 0);
if( !RegEntryByDevice )
return -1073741811;
WmipUnreferenceRegEntry(RegEntryByDevice);
WmipDeregisterRegEntry(RegEntryByDevice);
return v2;
}Referenced by:
IoWMIRegistrationControl