IoVolumeDeviceToGuid

NTSTATUS __stdcall IoVolumeDeviceToGuid(VOID *VolumeDeviceObject, _GUID *Guid){
  NTSTATUS result; 
  wchar_t *Buffer; 
  NTSTATUS v5; 
  _UNICODE_STRING GuidPath; 
  _UNICODE_STRING GuidString; 

  *(_QWORD *)&GuidPath.Length = 0i64;
  GuidPath.Buffer = 0i64;
  *(_DWORD *)(&GuidString.MaximumLength + 1) = 0;
  result = IoVolumeDeviceToGuidPath(VolumeDeviceObject, &GuidPath);
  if( result >= 0 )
  {
    Buffer = GuidPath.Buffer;
    GuidString.Length = GuidPath.Length - 20;
    GuidString.MaximumLength = GuidPath.MaximumLength - 20;
    GuidString.Buffer = GuidPath.Buffer + 10;
    v5 = RtlGUIDFromString(&GuidString, Guid);
    ExFreePoolWithTag(Buffer, 0);
    return v5;
  }
  return result;
}

Referenced by:

CmpVolumeContextStart
CmpVolumeManagerGetContextForFile
FsRtlVolumeDeviceToCorrelationId
IopMountVolume