IovUtilIsVerifiedDeviceStack
UINT64 __stdcall IovUtilIsVerifiedDeviceStack(_DEVICE_OBJECT *DeviceObject){
INT64 v1;
INT64 v2;
_DEVICE_OBJECT *AttachedTo;
signed int ExtensionFlags;
unsigned int v6;
UINT8 v7;
_DEVICE_OBJECT *v8;
int v9;
int v10;
_DEVOBJ_EXTENSION *DeviceObjectExtension;
unsigned int v12;
int v13;
unsigned int v14;
AttachedTo = DeviceObject;
ExtensionFlags = DeviceObject->DeviceObjectExtension->ExtensionFlags;
if( ExtensionFlags < 0 )
return((unsigned int)ExtensionFlags >> 30) & 1;
v6 = 0;
v7 = KeAcquireQueuedSpinLock(10i64, v1, v2);
while( 1 )
{
v8 = AttachedTo;
AttachedTo = AttachedTo->DeviceObjectExtension->AttachedTo;
MmIsDriverVerifying(v8->DriverObject);
if( v9 )
v6 = 1;
if( !AttachedTo )
break;
v10 = AttachedTo->DeviceObjectExtension->ExtensionFlags;
if( v10 < 0 )
{
if( (v10 & 0x40000000) != 0 )
v6 = 1;
goto LABEL_10;
}
}
do
{
LABEL_10:
DeviceObjectExtension = v8->DeviceObjectExtension;
v12 = DeviceObjectExtension->ExtensionFlags;
v13 = v12 | 0x40000000;
v14 = v12 & 0xBFFFFFFF;
if( !v6 )
v13 = v14;
DeviceObjectExtension->ExtensionFlags = v13 | 0x80000000;
v8 = v8->AttachedDevice;
}
while( v8 );
KeReleaseQueuedSpinLock(LockQueueIoDatabaseLock, v7);
return v6;
}Referenced by:
IovpSessionDataCreate
VfMajorTestStartedPdoStack