IopCreateArcNamesDisk

NTSTATUS __stdcall IopCreateArcNamesDisk(){
  unsigned int DiskCount; 
  NTSTATUS ConfigurationInformation; 
  WCHAR *v2; 
  bool v3; 
  unsigned int i; 
  unsigned int v5; 
  __int64 v6; 
  UINT64 NumberFound; 
  WCHAR *SymbolicLinkList; 
  PDEVICE_OBJECT DeviceObject; 
  PFILE_OBJECT FileObject; 
  _UNICODE_STRING DestinationString; 
  _GUID InterfaceClassGuid; 
  WCHAR pszDest[64]; 

  DestinationString = 0i64;
  DeviceObject = 0i64;
  SymbolicLinkList = 0i64;
  FileObject = 0i64;
  LODWORD(NumberFound) = 0;
  DiskCount = IoGetConfigurationInformation()->DiskCount;
  InterfaceClassGuid = GUID_DEVINTERFACE_DISK;
  ConfigurationInformation = IopFetchConfigurationInformation(
                               &SymbolicLinkList,
                               &InterfaceClassGuid,
                               DiskCount,
                               &NumberFound);
  v2 = SymbolicLinkList;
  v3 = ConfigurationInformation < 0;
  if( (unsigned int)NumberFound > DiskCount )
    DiskCount = NumberFound;
  if( ConfigurationInformation < 0 && !(_DWORD)NumberFound )
    DiskCount += 20;
  for( i = 0; i < DiskCount; ++i )
  {
    if( v2 && *v2 )
    {
      v5 = -1;
      RtlInitUnicodeString(&DestinationString, v2);
      v6 = -1i64;
      do
        ++v6;
      while( v2[v6] );
      v2 += v6 + 1;
      if( v3 && !*v2 )
        DiskCount = i + 20;
    }
    else
    {
      v5 = i;
      RtlStringCchPrintfW(pszDest, 0x40ui64, (WCHAR *)L"\\Device\\Harddisk%d\\Partition0");
      RtlInitUnicodeString(&DestinationString, pszDest);
    }
    if( IoGetDeviceObjectPointer(&DestinationString, 0x80ui64, &FileObject, &DeviceObject) >= 0 )
    {
      IopCreateArcName(DeviceObject, v5);
      ObfDereferenceObjectWithTag(FileObject, 0x746C6644ui64);
    }
  }
  if( SymbolicLinkList )
    ExFreePoolWithTag(SymbolicLinkList, 0);
  return 0;
}

Referenced by:

IopCreateArcNames