IopGetFileVolumeNameInformation
NTSTATUS __stdcall IopGetFileVolumeNameInformation(
DEVICE_OBJECT *DeviceObject,
IO_STATUS_BLOCK *IoStatusBlock,
FILE_VOLUME_NAME_INFORMATION *Buffer,
UINT64 a4){
unsigned int v6;
NTSTATUS result;
unsigned int Length;
int v9;
int ReturnLength[4];
struct _OBJECT_NAME_INFORMATION ObjectNameInfo;
ReturnLength[0] = 0;
v6 = a4 - 4;
result = ObQueryNameString(DeviceObject, &ObjectNameInfo, 0x200ui64, (UINT64 *)ReturnLength);
if( result < 0 )
{
IoStatusBlock->Status = result;
IoStatusBlock->Information = 0i64;
}
else
{
Length = ObjectNameInfo.Name.Length;
if( v6 < ObjectNameInfo.Name.Length )
Length = v6 & 0xFFFFFFFE;
v9 = v6 < ObjectNameInfo.Name.Length ? 0x80000005 : 0;
Buffer->DeviceNameLength = ObjectNameInfo.Name.Length;
memmove((UINT8 *)Buffer->DeviceName, (UINT8 *)ObjectNameInfo.Name.Buffer, Length);
IoStatusBlock->Status = v9;
IoStatusBlock->Information = Length + 4;
return v9;
}
return result;
}Referenced by:
NtQueryInformationFile