IopCreateArcNames

NTSTATUS __stdcall IopCreateArcNames(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  __int64 v2; 
  VOID **Pool_1; 
  NTSTATUS result; 
  _STRING DestinationString; 
  _STRING v6; 
  INT8 pszDest[128]; 

  DestinationString = 0i64;
  v6 = 0i64;
  RtlStringCchPrintfA(pszDest, 0x80ui64, (INT8 *)"\\ArcName\\%s");
  RtlInitAnsiString(&DestinationString, pszDest);
  RtlAnsiStringToUnicodeString(&IoArcHalDeviceName, &DestinationString, 1u);
  RtlStringCchPrintfA(pszDest, 0x80ui64, (INT8 *)"\\ArcName\\%s");
  RtlInitAnsiString(&DestinationString, pszDest);
  RtlAnsiStringToUnicodeString(&IoArcBootDeviceName, &DestinationString, 1u);
  v2 = -1i64;
  do
    ++v2;
  while( LoaderBlock->ArcBootDeviceName[v2] );
  Pool_1 = IopVerifierExAllocatePool_1(1ui64, v2 + 1);
  IoLoaderArcBootDeviceName = (__int64)Pool_1;
  if( Pool_1 )
    memmove(Pool_1, LoaderBlock->ArcBootDeviceName, v2 + 1);
  RtlInitAnsiString(&v6, LoaderBlock->ArcHalDeviceName);
  result = IopCreateArcNamesDisk();
  if( result >= 0 )
    return IopCreateArcNamesCd(LoaderBlock);
  return result;
}

Referenced by:

IopInitializeBootDrivers