IopCreateArcNamesDisk

INT64 __stdcall IopCreateArcNamesDisk(){
  unsigned int DiskCount; 
  int ConfigurationInformation; 
  WCHAR v2; 
  const WCHAR *v3; 
  bool v4; 
  unsigned int i; 
  unsigned int v6; 
  __int64 v7; 
  WCHAR v9; 
  UINT64 NumberFound; 
  PCWSTR SourceString; 
  PDEVICE_OBJECT DeviceObject; 
  PFILE_OBJECT FileObject; 
  struct _UNICODE_STRING DestinationString; 
  GUID InterfaceClassGuid; 
  wchar_t pszDest[64]; 
  DestinationString = 0i64;
  DeviceObject = 0i64;
  SourceString = 0i64;
  FileObject = 0i64;
  LODWORD(NumberFound) = 0;
  DiskCount = IoGetConfigurationInformation()->DiskCount;
  InterfaceClassGuid = GUID_DEVINTERFACE_DISK;
  ConfigurationInformation = IopFetchConfigurationInformation(
                               (WCHAR **)&SourceString,
                               &InterfaceClassGuid,
                               DiskCount,
                               &NumberFound);
  v3 = SourceString;
  v4 = ConfigurationInformation < 0;
  if( (unsigned int)NumberFound > DiskCount )
    DiskCount = NumberFound;
  if( ConfigurationInformation < 0 && !(_DWORD)NumberFound )
    DiskCount += 20;
  for( i = 0; i < DiskCount; ++i )
  {
    if( v3 && *v3 )
    {
      v6 = -1;
      RtlInitUnicodeString(&DestinationString, v3, v2);
      v7 = -1i64;
      do
        ++v7;
      while( v3[v7] );
      v3 += v7 + 1;
      if( v4 && !*v3 )
        DiskCount = i + 20;
    }
    else
    {
      v6 = i;
      RtlStringCchPrintfW(pszDest, 0x40ui64, (WCHAR *)L"\\Device\\Harddisk%d\\Partition0");
      RtlInitUnicodeString(&DestinationString, pszDest, v9);
    }
    if( IoGetDeviceObjectPointer(&DestinationString, 0x80ui64, &FileObject, &DeviceObject) >= 0 )
    {
      IopCreateArcName(DeviceObject, v6);
      ObfDereferenceObjectWithTag(FileObject, 0x746C6644ui64);
    }
  }
  if( SourceString )
    ExFreePoolWithTag((PVOID)SourceString, 0);
  return 0i64;
}

Referenced by:

IopCreateArcNames