SmUniqueIdParseProductName
NTSTATUS __stdcall SmUniqueIdParseProductName(PWCHAR UniqueId, PWCHAR ProductName, UINT64 ProductNameSize){
size_t v4;
wchar_t *v5;
WCHAR *v7;
NTSTATUS v8;
const wchar_t *v9;
__int64 v10;
WCHAR *v11;
const wchar_t *v12;
__int64 v13;
WCHAR *i;
WCHAR *v15;
v4 = (unsigned int)ProductNameSize;
v5 = ProductName;
v7 = wcsstr(UniqueId, L"&Ven_");
v8 = 0;
if( !v7 )
return -1073700864;
v9 = v7 + 5;
v10 = wcschr(v7 + 5, 0x26u) - (v7 + 5);
if( (_DWORD)v10 )
{
if( StringCbCopyNW(ProductName, v4, v9, 2i64 * (unsigned int)v10) < 0 || StringCbCatW(ProductName, v4) < 0 )
return -1073741789;
v5 = &ProductName[(unsigned int)(v10 + 1)];
LODWORD(v4) = -2 - 2 * v10 + v4;
}
v11 = wcsstr(UniqueId, L"&Prod_");
if( !v11 )
return -1073700864;
v12 = v11 + 6;
v13 = wcschr(v11 + 6, 0x26u) - (v11 + 6);
if( (_DWORD)v13 && StringCbCopyNW(v5, (unsigned int)v4, v12, 2i64 * (unsigned int)v13) < 0 )
return -1073741789;
for( i = ProductName; ; i = v15 )
{
v15 = wcschr(i, 0x5Fu);
if( !v15 )
break;
*v15 = 32;
}
return v8;
}Referenced by:
SmKmEtwAppendProductName