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