PnpGetGenericStorePropertyLocales
NTSTATUS __fastcall PnpGetGenericStorePropertyLocales(
INT64 a1,
CHAR *a2,
INT64 a3,
WCHAR *a4,
UINT64 cchDest,
UINT64 *a6){
WCHAR *v6;
int v7;
int v8;
__int64 v9;
unsigned int v10;
ULONG v11;
NTSTATUS v12;
__int64 v13;
unsigned int v14;
UINT64 dwFlags;
int pszFormat;
UINT64 pszFormata;
CHAR *v19;
VOID *Handle;
INT64 v21;
__int16 pszDest[48];
__int16 pszSrc[88];
v6 = a4;
v19 = a2;
v21 = a1;
*(_DWORD *)a6 = 0;
Handle = 0i64;
if( (_DWORD)cchDest )
*a4 = 0;
LODWORD(dwFlags) = 2048;
v7 = RtlStringCchPrintfExW(
(WCHAR *)pszDest,
0x30ui64,
0i64,
0i64,
dwFlags,
(WCHAR *)L"{%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\\%04lX");
if( v7 >= 0 )
{
v8 = PnpOpenPropertiesKey(v21, v19, (wchar_t *)pszDest, 1u, 0, pszFormat, (INT64)&Handle);
v7 = v8;
if( v8 == -1073741772 )
{
return 0;
}
else if( v8 >= 0 )
{
v10 = cchDest;
v11 = 0;
while( 1 )
{
do
{
LODWORD(v19) = 85;
v12 = PnpCtxRegEnumValue(v9, (_HANDLE)Handle, v11++, pszSrc, (INT64)&v19, 0i64, 0i64);
}
while( v12 == -1073741789 );
if( v12 )
break;
if( pszSrc[0] )
{
v13 = (unsigned int)((_DWORD)v19 + 1);
if( (unsigned int)v13 < v10 )
{
LODWORD(pszFormata) = 2304;
RtlStringCchCopyExW(v6, v10, (WCHAR *)pszSrc, 0i64, 0i64, pszFormata);
v10 -= v13;
v6 += v13;
}
*(_DWORD *)a6 += v13;
}
}
ZwClose((_HANDLE)Handle);
v14 = *(_DWORD *)a6 + 1;
*(_DWORD *)a6 = v14;
if( v6 && (unsigned int)cchDest >= v14 )
*v6 = 0;
else
return -1073741789;
}
}
return v7;
}Referenced by:
PiDqPnPGetObjectPropertyLocales
PnpGetObjectPropertyLocalesWorker