PiPagePathSetState
INT64 __fastcall PiPagePathSetState(FILE_OBJECT *FileObject, UINT8 InPath){
_IRP *DeviceUsageNotification;
IRP *v5;
NTSTATUS v6;
PDEVICE_OBJECT DeviceObject;
int v9;
UINT8 v10;
FILE_OBJECT *v11;
NTSTATUS v12;
char Object[24];
PADAPTER_OBJECT DmaAdapter;
memset((INT64)&DeviceObject, 0i64);
DmaAdapter = 0i64;
ObfReferenceObject(FileObject);
DeviceObject = IoGetRelatedDeviceObject(FileObject);
v9 = 1;
v10 = InPath;
v11 = FileObject;
DeviceUsageNotification = PpIrpAllocateDeviceUsageNotification((INT64)&DeviceObject);
v5 = DeviceUsageNotification;
if( DeviceUsageNotification )
{
IoQueueThreadIrp(DeviceUsageNotification);
PpDevNodeLockTree(1);
v6 = IofCallDriver(DeviceObject, v5);
if( v6 == 259 )
{
KeWaitForSingleObject(Object, Executive, 0, 0, 0i64);
v6 = v12;
}
if( v6 >= 0 && IoGetRelatedTargetDevice(FileObject, (DEVICE_OBJECT **)&DmaAdapter) >= 0 )
{
PoDirectedDripsNotifyPagingDeviceUsage((DEVICE_OBJECT *)DmaAdapter, InPath);
HalPutDmaAdapter(DmaAdapter);
}
PpDevNodeUnlockTree(1);
return(unsigned int)v6;
}
else
{
HalPutDmaAdapter((PADAPTER_OBJECT)FileObject);
return 3221225495i64;
}
}Referenced by:
CmpVolumeContextCleanup
MiDeletePagefile
PpPagePathAssign
PpPagePathRelease