WmipDeregisterDevice
INT64 __fastcall WmipDeregisterDevice(_DEVICE_OBJECT *DeviceObject){
unsigned int v2;
CHAR *RegEntryByDevice;
PVOID *i;
v2 = 0;
KeWaitForSingleObject(&WmipSMMutex, Executive, 0, 0, 0i64);
RegEntryByDevice = (CHAR *)WmipFindRegEntryByDevice(DeviceObject);
if( RegEntryByDevice )
{
for( i = (PVOID *)WmipRegWorkList; i != &WmipRegWorkList; i = (PVOID *)*i )
{
if( i[3] == RegEntryByDevice )
{
i[3] = 0i64;
WmipUnreferenceRegEntry((INT64)RegEntryByDevice);
}
}
}
KeReleaseMutex(&WmipSMMutex, 0);
if( RegEntryByDevice )
{
WmipUnreferenceRegEntry((INT64)RegEntryByDevice);
WmipDeregisterRegEntry(RegEntryByDevice);
}
else
{
return(unsigned int)-1073741811;
}
return v2;
}Referenced by:
IoWMIRegistrationControl