IopGetFileVolumeNameInformation

NTSTATUS __stdcall IopGetFileVolumeNameInformation(
        VOID *DeviceObject,
        _IO_STATUS_BLOCK *IoStatusBlock,
        _FILE_VOLUME_NAME_INFORMATION *Buffer,
        UINT64 Length){
  unsigned int v6; 
  NTSTATUS result; 
  unsigned int v8; 
  int v9; 
  __int64 ReturnLength[2]; 
  ULONG Lengtha; 
  VOID *Src; 

  LODWORD(ReturnLength[0]) = 0;
  v6 = Length - 4;
  result = ObQueryNameString(DeviceObject, (_OBJECT_NAME_INFORMATION *)&Lengtha, 0x200ui64, (UINT64 *)ReturnLength);
  if( result < 0 )
  {
    IoStatusBlock->Status = result;
    IoStatusBlock->Information = 0i64;
  }
  else
  {
    v8 = (unsigned __int16)Lengtha;
    if( v6 < (unsigned __int16)Lengtha )
      v8 = v6 & 0xFFFFFFFE;
    v9 = v6 < (unsigned __int16)Lengtha ? 0x80000005 : 0;
    Buffer->DeviceNameLength = (unsigned __int16)Lengtha;
    memmove(Buffer->DeviceName, Src, v8);
    IoStatusBlock->Status = v9;
    IoStatusBlock->Information = v8 + 4;
    return v9;
  }
  return result;
}

Referenced by:

NtQueryInformationFile