PnpTrackQueryRemoveDevices
UINT8 __fastcall PnpTrackQueryRemoveDevices(_RELATION_LIST *List, char a2){
UINT8 result;
_DEVICE_NODE *DeviceNode;
_RELATION_LIST_MARKER Marker;
_DEVICE_OBJECT *DeviceObject;
DeviceObject = 0i64;
Marker.Mode = ENUMERATE_ANY_ORDER;
Marker.Counter = 0;
while( 1 )
{
result = IopEnumerateRelations(List, &Marker, &DeviceObject, 0i64, 0i64);
if( !result )
break;
if( DeviceObject )
DeviceNode = (_DEVICE_NODE *)DeviceObject->DeviceObjectExtension->DeviceNode;
else
DeviceNode = 0i64;
if( a2 )
PipSetDevNodeUserFlags(DeviceNode, 0x100ui64);
else
PipClearDevNodeUserFlags(DeviceNode, 0x100ui64);
}
return result;
}Referenced by:
PnpProcessCompletedEject
PnpProcessQueryRemoveAndEject