PiControlGetUserFlagsFromDeviceNode
VOID __stdcall PiControlGetUserFlagsFromDeviceNode(_DEVICE_NODE *DeviceNode, UINT64 *StatusFlags){
_BOOL4 IsDevNodeDNStarted;
int v5;
int v6;
UINT8 IsRootEnumeratedDevice;
unsigned int UserFlags;
unsigned int Flags;
int v10;
int v11;
int v12;
int v13;
int v14;
int v15;
int v16;
int v17;
int v18;
int v19;
int v20;
int v21;
int v22;
int v23;
PipAreDriversLoaded((__int64)DeviceNode);
IsDevNodeDNStarted = PipIsDevNodeDNStarted((__int64)DeviceNode);
v6 = v5 | 8;
if( !IsDevNodeDNStarted )
v6 = v5;
IsRootEnumeratedDevice = CmIsRootEnumeratedDevice(DeviceNode->InstancePath.Buffer);
UserFlags = DeviceNode->UserFlags;
Flags = DeviceNode->Flags;
v10 = v6 | 1;
if( !IsRootEnumeratedDevice )
v10 = v6;
v11 = v10 | 0x4000;
if( (DeviceNode->CapabilityFlags & 0x10) == 0 )
v11 = v10;
v12 = v11 | 0x40000;
if( (UserFlags & 1) == 0 )
v12 = v11;
v13 = v12 | 0x40000000;
if( (UserFlags & 2) == 0 )
v13 = v12;
v14 = v13 | 0x2000000;
if( (UserFlags & 0x40) == 0 )
v14 = v13;
v15 = v14 | 0x100;
if( (UserFlags & 4) == 0 )
v15 = v14;
v16 = v15 | 0x8000;
if( (Flags & 0x4000) == 0 )
v16 = v15;
v17 = v16 | 0x400;
if( (Flags & 0x2000) == 0 )
v17 = v16;
v18 = v17 | 0x40;
if( (DeviceNode->Flags & 0x100000) == 0 )
v18 = v17;
v19 = v18 | 0x1000;
if( (Flags & 0x1000) == 0 )
v19 = v18;
v20 = v19 | 0x200;
if( (Flags & 0x200000) == 0 )
v20 = v19;
v21 = v20 | 0x2000;
if( DeviceNode->DisableableDepends )
v21 = v20;
v22 = v21 | 0x10000;
if( (UserFlags & 0x100) == 0 )
v22 = v21;
v23 = v22 | 0x20000;
if( (UserFlags & 0x200) == 0 )
v23 = v22;
*(_DWORD *)StatusFlags = v23;
}Referenced by:
PiControlGetSetDeviceStatus