CmSetInstallerClassMappedPropertyFromRegProp
NTSTATUS __stdcall CmSetInstallerClassMappedPropertyFromRegProp(
HPNPCTX *hPnpCtx,
WCHAR *ClassGuid,
VOID *ObjectBaseKey,
_DEVPROPKEY *PropertyKey,
UINT64 PropertyType,
UINT8 *PropertyBuffer,
UINT64 PropertySize){
unsigned int pid;
DEVPROPKEY **v8;
int *v9;
unsigned int v13;
int v14;
DEVPROPKEY *v15;
DEVPROPKEY **v16;
__int64 v17;
int v19;
INT64 v20;
int v21;
int v22;
INT64 CmRegPropType;
UINT8 *v24;
INT64 v25;
UINT64 v26;
int v27;
pid = PropertyKey->pid;
v8 = &CmClassRegPropMap;
v9 = 0i64;
v27 = 0;
v13 = 0;
v14 = 1;
do
{
v15 = *v8;
v16 = v8;
if( pid == (*v8)->pid )
{
v17 = *(_QWORD *)&PropertyKey->fmtid.Data1 - *(_QWORD *)&v15->fmtid.Data1;
if( *(_QWORD *)&PropertyKey->fmtid.Data1 == *(_QWORD *)&v15->fmtid.Data1 )
v17 = *(_QWORD *)PropertyKey->fmtid.Data4 - *(_QWORD *)v15->fmtid.Data4;
if( !v17 )
break;
}
++v13;
v8 += 3;
v16 = 0i64;
}
while( v13 < 9 );
if( !v16 )
return -1073741264;
v19 = *((_DWORD *)v16 + 2);
v20 = *((unsigned int *)v16 + 3);
if( (_DWORD)PropertyType != v19 )
{
if( (_DWORD)PropertyType == 25 )
{
if( v19 != 18 )
return -1073741811;
}
else if( (unsigned int)PropertyType >= 2 )
{
return -1073741811;
}
}
v21 = *((_DWORD *)v16 + 4);
if( (_DWORD)v20 == 25 )
return -1073741637;
if( (_DWORD)v20 == 27 )
{
if( PropertyBuffer )
{
if( !(_DWORD)PropertySize )
return -1073741811;
if( *PropertyBuffer != 0xFF )
{
if( *PropertyBuffer )
return -1073741811;
v14 = 0;
}
v27 = v14;
v9 = &v27;
v22 = 4;
}
else
{
v22 = 0;
}
LODWORD(v25) = v22;
v20 = 27i64;
v24 = (UINT8 *)v9;
}
else
{
LODWORD(v25) = PropertyBuffer != 0i64 ? PropertySize : 0;
v24 = PropertyBuffer;
}
LODWORD(CmRegPropType) = v21;
return CmSetInstallerClassRegProp(hPnpCtx, ClassGuid, ObjectBaseKey, v20, CmRegPropType, v24, v25, v26);
}Referenced by:
CmSetInstallerClassMappedProperty