VfPnpVerifyIrpStackDownward
VOID __stdcall VfPnpVerifyIrpStackDownward(
_IRP **IovPacket,
_DEVICE_OBJECT *DeviceObject,
_IO_STACK_LOCATION *IrpLastSp,
_IO_STACK_LOCATION *IrpSp,
_IOV_STACK_LOCATION *RequestHeadLocationData,
_IOV_STACK_LOCATION *StackLocationData,
VOID *CallerAddress){
_IRP *v11;
_IRP *v12;
int Status;
_DRIVER_OBJECT *DriverObject;
VOID *v15;
_DEVICE_OBJECT *v16;
int IsDeviceObjectMarked;
VI_PNP_HOW_PROCESSED v18;
UINT64 ForwardingDown;
_IOV_STACK_LOCATION v20;
if( (unsigned int)IovUtilIsWdmStack(DeviceObject) )
{
v11 = IovPacket[30];
v12 = *IovPacket;
Status = (*IovPacket)->IoStatus.Status;
v20 = RequestHeadLocationData[24];
if( LODWORD(v11->IoStatus.Information) == 3 )
VfErrorReport1(529, CallerAddress, v12);
DriverObject = DeviceObject->DriverObject;
if( (VOID(__fastcall *)(_DEVICE_OBJECT *, _IRP *))DriverObject->MajorFunction[27] == IopInvalidDeviceRequest )
{
RequestHeadLocationData[1] |= 0x1000000u;
LODWORD(v15) = VfGetPristineDriverInit(DriverObject);
VfErrorReport1(543, v15, v12);
StackLocationData[1] |= 0x80000000;
}
if( IrpLastSp )
{
if( Status < 0 )
{
if( Status == -1073741637 )
{
if( v20 != -1073741637 && (RequestHeadLocationData[1] & 0x2000000) == 0 )
{
VfErrorReport1(534, CallerAddress, v12);
RequestHeadLocationData[1] |= 0x2000000u;
}
}
else if( (RequestHeadLocationData[1] & 0x2000000) == 0 )
{
VfErrorReport1(533, CallerAddress, v12);
RequestHeadLocationData[1] |= 0x2000000u;
}
}
if( v11->IoStatus.Pointer )
{
if( (unsigned int)IovUtilIsDeviceObjectMarked((_DEVICE_OBJECT *)v11->IoStatus.Pointer, 2) )
{
IsDeviceObjectMarked = IovUtilIsDeviceObjectMarked(v16, 3);
LODWORD(ForwardingDown) = 1;
ViPnpVerifyMinorWasProcessedProperly(
v12,
IrpSp,
IsDeviceObjectMarked == 0 ? VF_DEVOBJ_FDO : VF_DEVOBJ_PDO,
v18,
CallerAddress,
ForwardingDown);
}
}
}
}
}Referenced by:
No references.