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