CmGetInstallerClassMappedPropertyFromCoInstallers
NTSTATUS __stdcall CmGetInstallerClassMappedPropertyFromCoInstallers(
HPNPCTX *hPnpCtx,
const WCHAR *ClassGuid,
const _DEVPROPKEY *PropertyKey,
UINT64 *PropertyType,
UINT8 *PropertyBuffer,
INT64 BufferSize,
UINT64 *PropertySize){
UINT64 *v7;
NTSTATUS v8;
unsigned __int64 v9;
int v12;
int CachedContextBaseKey;
NTSTATUS v14;
_OBJECT_TYPE *v16;
_UNICODE_STRING DestinationString;
int v18;
int v19;
INT64 v20;
v19 = HIDWORD(PropertyKey);
v7 = PropertySize;
v8 = 0;
v9 = (unsigned __int64)PropertyBuffer;
v18 = 0;
v20 = 0i64;
*(_DWORD *)PropertyType = 0;
*(_DWORD *)v7 = 0;
if( v9 )
{
v12 = BufferSize;
v9 &= -(__int64)((_DWORD)BufferSize != 0);
}
else
{
v12 = 0;
}
CachedContextBaseKey = PnpCtxGetCachedContextBaseKey(hPnpCtx, PNPCTX_BASE_KEY_TYPE_MAX, (VOID **)&v20);
if( CachedContextBaseKey < 0 )
return CachedContextBaseKey;
LODWORD(PropertySize) = v12;
v14 = RegRtlQueryValue((VOID *)v20, ClassGuid, &v18, (VOID *)v9, (__int64)&PropertySize);
if( v14 == -1073741772 || v14 == -1073741444 )
return -1073741275;
if( v14 && v14 != -1073741789 )
return v14;
if( v18 == 7 )
{
*(_DWORD *)v7 = (_DWORD)PropertySize;
*(_DWORD *)PropertyType = 8210;
if( v14 || !v12 )
return -1073741789;
}
else
{
DestinationString = 0i64;
if( RtlInitUnicodeStringEx(&DestinationString, (WCHAR *)ClassGuid) >= 0 )
ZwDeleteValueKey((VOID *)v20, &DestinationString, v16);
}
return v8;
}Referenced by:
CmGetInstallerClassMappedProperty
CmGetInstallerClassMappedPropertyKeys