CmGetDeviceInterfaceName

NTSTATUS __stdcall CmGetDeviceInterfaceName(
        WCHAR *ClassGuid,
        WCHAR *DeviceInstanceId,
        WCHAR *ReferenceString,
        UINT8 NtPathFormat,
        WCHAR *DeviceInterfaceName,
        UINT64 DeviceInterfaceNameLength,
        UINT64 *RequiredLength){
  WCHAR *v7; 
  WCHAR *v10; 
  __int64 v11; 
  __int64 v12; 
  unsigned __int64 v13; 
  unsigned __int64 v14; 
  UINT64 v15; 
  WCHAR *v16; 
  NTSTATUS result; 
  __int16 *i; 
  __int16 v19; 
  WCHAR v20; 
  _WORD *v21; 
  UINT64 dwFlags; 
  UINT64 dwFlagsa; 
  UINT64 dwFlagsb; 
  UINT64 dwFlagsc; 
  UINT64 dwFlagsd; 
  UINT64 dwFlagse; 
  _NTSTRSAFE_PWSTR ppszDestEnd[2]; 
  UINT64 cchDest; 
  _DWORD *v30; 

  v7 = (WCHAR *)NtPathFormat;
  *(_QWORD *)ppszDestEnd = 0i64;
  cchDest = 0i64;
  if( CmValidateInstallerClassName(ClassGuid) < 0 || CmValidateDeviceName(v10) < 0 )
    return -1073741811;
  v11 = -1i64;
  if( v7 )
  {
    v12 = -1i64;
    do
      ++v12;
    while( v7[v12] );
    if( (unsigned __int64)(v12 - 1) <= 0x102 )
    {
      v20 = *v7;
      v21 = v7;
      while( v20 )
      {
        if( v20 == 92 || v20 == 47 )
          return -1073741773;
        v20 = *++v21;
      }
      goto LABEL_5;
    }
    return -1073741811;
  }
  v12 = 0i64;
  do
LABEL_5:
    ++v11;
  while( ReferenceString[v11] );
  v13 = v11 + 44;
  v14 = v12 + 2;
  if( !v12 )
    v14 = v13;
  if( v14 > 0xFFFFFFFF )
    return -1073741675;
  if( v30 )
    *v30 = v14;
  if( (unsigned int)v14 > (unsigned int)RequiredLength )
    return -1073741789;
  v15 = DeviceInterfaceNameLength;
  v16 = (WCHAR *)L"\\??\\";
  if( !(_BYTE)DeviceInterfaceName )
    v16 = (WCHAR *)L"\\\\?\\";
  LODWORD(dwFlags) = 2304;
  result = RtlStringCchCopyExW(
             (WCHAR *)DeviceInterfaceNameLength,
             (unsigned int)RequiredLength,
             v16,
             (WCHAR **)ppszDestEnd,
             &cchDest,
             dwFlags);
  if( result >= 0 )
  {
    LODWORD(dwFlagsa) = 2304;
    result = RtlStringCchCopyExW(
               *(WCHAR **)ppszDestEnd,
               cchDest,
               ReferenceString,
               (WCHAR **)ppszDestEnd,
               &cchDest,
               dwFlagsa);
    if( result >= 0 )
    {
      LODWORD(dwFlagsb) = 2304;
      result = RtlStringCchCopyExW(
                 *(WCHAR **)ppszDestEnd,
                 cchDest,
                 (WCHAR **)ppszDestEnd,
                 &cchDest,
                 dwFlagsb);
      if( result >= 0 )
      {
        LODWORD(dwFlagsc) = 2304;
        result = RtlStringCchCopyExW(
                   *(WCHAR **)ppszDestEnd,
                   cchDest,
                   DeviceInstanceId,
                   (WCHAR **)ppszDestEnd,
                   &cchDest,
                   dwFlagsc);
        if( result >= 0 )
        {
          for( i = (__int16 *)(v15 + 8); ; ++i )
          {
            v19 = *i;
            if( !*i )
              break;
            if( v19 == 92 || v19 == 47 )
              *i = 35;
          }
          if( v12 )
          {
            LODWORD(dwFlagsd) = 2304;
            result = RtlStringCchCopyExW(
                       *(WCHAR **)ppszDestEnd,
                       cchDest,
                       (WCHAR *)L"\\",
                       (WCHAR **)ppszDestEnd,
                       &cchDest,
                       dwFlagsd);
            if( result >= 0 )
            {
              LODWORD(dwFlagse) = 2304;
              return RtlStringCchCopyExW(*(WCHAR **)ppszDestEnd, cchDest, v7, (WCHAR **)ppszDestEnd, &cchDest, dwFlagse);
            }
          }
        }
      }
    }
  }
  return result;
}

Referenced by:

IoGetDeviceInterfaceAlias
IopRegisterDeviceInterface