DrvDbSplitDeviceIdDriverInfMatch

__int64 __fastcall DrvDbSplitDeviceIdDriverInfMatch(
        STRSAFE_PCNZWCH pszSrc,
        NTSTRSAFE_PWSTR pszDest,
        size_t cchDest,
        __int64 a4){
  int v5; 
  unsigned int v7; 
  char v9; 
  WCHAR *v10; 
  WCHAR *v11; 
  __int64 v12; 
  WCHAR *v13; 
  WCHAR *v14; 
  int v15; 
  unsigned int v16; 
  unsigned int v18; 
  UINT64 dwFlags; 
  unsigned int v20; 
  v20 = cchDest;
  v5 = 0;
  v7 = cchDest;
  v9 = -1;
  v10 = wcschr((WCHAR *)pszSrc, 0x5Cu);
  v11 = v10;
  if( v10 )
  {
    v12 = v10 - pszSrc;
    if( a4 )
    {
      v13 = wcschr(v10 + 1, 0x5Cu);
      v14 = v13;
      if( v13 )
      {
        *v13 = 0;
        v18 = wcstol(v13 + 1, 0i64, 16i64);
        if( v18 > 0xFF )
          LOBYTE(v18) = -1;
        v9 = v18;
      }
      if( v11[1] == 42 )
      {
        *(_BYTE *)a4 = 3;
        LOWORD(v16) = 0;
      }
      else
      {
        v15 = wcstol(v11 + 1, 0i64, 16i64);
        if( v15 )
        {
          v16 = v15 - 1;
          *(_BYTE *)a4 = 2;
          if( v16 > 0xFFFF )
            LOWORD(v16) = -1;
        }
        else
        {
          *(_BYTE *)a4 = 1;
          LOWORD(v16) = 0;
        }
      }
      *(_WORD *)(a4 + 2) = v16;
      if( v14 )
        *v14 = 92;
      v7 = v20;
    }
  }
  else
  {
    v12 = -1i64;
    do
      ++v12;
    while( pszSrc[v12] );
    if( a4 )
    {
      *(_BYTE *)a4 = 0;
      *(_WORD *)(a4 + 2) = 0;
    }
  }
  if( !pszDest
    || (LODWORD(dwFlags) = 2304,
        v5 = RtlStringCchCopyNExW(pszDest, v7, (WCHAR *)pszSrc, (unsigned int)v12, 0i64, 0i64, dwFlags),
        v5 >= 0) )
  {
    if( a4 )
      *(_BYTE *)(a4 + 1) = v9;
  }
  return(unsigned int)v5;
}

Referenced by:

DrvDbSetDeviceIdDriverInfMatches
PiDevCfgFindDeviceDriver