PpMarkDeviceStackExtensionFlag

VOID __stdcall PpMarkDeviceStackExtensionFlag(_DEVICE_OBJECT *DeviceObject, UINT64 ExtensionFlag, UINT8 Set){
  int v5; 
  UINT8 v6; 
  _DEVOBJ_EXTENSION *DeviceObjectExtension; 
  unsigned int ExtensionFlags; 
  int v9; 

  v5 = ExtensionFlag;
  v6 = KeAcquireQueuedSpinLock(10i64, ExtensionFlag, Set);
  while( DeviceObject )
  {
    DeviceObjectExtension = DeviceObject->DeviceObjectExtension;
    ExtensionFlags = DeviceObjectExtension->ExtensionFlags;
    if( Set )
      v9 = v5 | ExtensionFlags;
    else
      v9 = ~v5 & ExtensionFlags;
    DeviceObjectExtension->ExtensionFlags = v9;
    DeviceObject = DeviceObject->AttachedDevice;
  }
  KeReleaseQueuedSpinLock(LockQueueIoDatabaseLock, v6);
}

Referenced by:

IopDoDeferredSetInterfaceState
PiProcessNewDeviceNode
PnpStartDeviceNode