IopQueryDockRemovalInterface

INT64 __stdcall IopQueryDockRemovalInterface(DEVICE_OBJECT *DeviceObject, DOCK_INTERFACE **DockInterface){
  DOCK_INTERFACE *PoolWithTag; 
  DOCK_INTERFACE *v5; 
  NTSTATUS v7; 
  INT64 result[2]; 
  int v9; 
  DOCK_INTERFACE *v10; 
  __int64 v11; 
  GUID v12; 
  v12 = GUID_DOCK_INTERFACE;
  PoolWithTag = (DOCK_INTERFACE *)ExAllocatePoolWithTag(PagedPool, 0x30ui64, 0x20207050ui64);
  v5 = PoolWithTag;
  if( !PoolWithTag )
    return 3221225626i64;
  *(_OWORD *)&PoolWithTag->Size = 0i64;
  *(_OWORD *)&PoolWithTag->InterfaceReference = 0i64;
  *(_OWORD *)&PoolWithTag->ProfileDepartureSetMode = 0i64;
  PoolWithTag->Size = 48;
  memset((INT64)result, 0i64);
  LOWORD(result[0]) = 2075;
  result[1] = (INT64)&v12;
  v9 = 48;
  v10 = v5;
  v11 = 0i64;
  v7 = IopSynchronousCall(DeviceObject, (IO_STACK_LOCATION *)result, 3221225659i64, 0i64, 0i64);
  if( v7 < 0 )
    ExFreePoolWithTag(v5, 0);
  else
    *DockInterface = v5;
  return(unsigned int)v7;
}

Referenced by:

PnpProcessQueryRemoveAndEject