CmGetInstallerClassMappedPropertyLocales
NTSTATUS __stdcall CmGetInstallerClassMappedPropertyLocales(
_DEVPROPKEY *PropertyKey,
WCHAR *Buffer,
UINT64 BufferLength,
UINT64 *RequiredLength){
DEVPROPKEY **v4;
NTSTATUS v5;
unsigned int v6;
DEVPROPKEY *v7;
UINT64 v8;
unsigned int v9;
const UINT8 *v10;
__int64 v11;
UINT64 v12;
int v13;
DEVPROPKEY **v14;
unsigned int v15;
DEVPROPKEY *v16;
UINT64 v17;
UINT64 v18;
_WORD *v20;
int v21;
_DWORD *v22;
v4 = &CmClassRegPropMap;
v5 = -1073741802;
v6 = 0;
*v22 = 0;
while( 1 )
{
v7 = *v4;
if( *v4 && *((_DWORD *)RequiredLength + 4) == v7->pid )
{
v8 = *RequiredLength - *(_QWORD *)&v7->fmtid.Data1;
if( *RequiredLength == *(_QWORD *)&v7->fmtid.Data1 )
v8 = RequiredLength[1] - *(_QWORD *)v7->fmtid.Data4;
if( !v8 )
break;
}
++v6;
v4 += 3;
if( v6 >= 9 )
{
v9 = 0;
v10 = &Create;
while( 1 )
{
v11 = *(_QWORD *)v10;
if( *(_QWORD *)v10 && *((_DWORD *)RequiredLength + 4) == *(_DWORD *)(v11 + 16) )
{
v12 = *RequiredLength - *(_QWORD *)v11;
if( *RequiredLength == *(_QWORD *)v11 )
v12 = RequiredLength[1] - *(_QWORD *)(v11 + 8);
if( !v12 )
goto LABEL_25;
}
++v9;
v10 += 32;
if( v9 >= 0xD )
{
v13 = *((_DWORD *)RequiredLength + 4);
v14 = &off_140983F60;
v15 = 0;
while( 1 )
{
v16 = *v14;
if( v13 == (*v14)->pid )
{
v17 = *RequiredLength - *(_QWORD *)&v16->fmtid.Data1;
if( *RequiredLength == *(_QWORD *)&v16->fmtid.Data1 )
v17 = RequiredLength[1] - *(_QWORD *)v16->fmtid.Data4;
if( !v17 )
goto LABEL_25;
}
++v15;
v14 += 2;
if( v15 >= 4 )
{
if( v13 != 2 )
return v5;
v18 = *RequiredLength - *(_QWORD *)&DEVPKEY_DeviceClass_ClassCoInstallers.fmtid.Data1;
if( *RequiredLength == *(_QWORD *)&DEVPKEY_DeviceClass_ClassCoInstallers.fmtid.Data1 )
v18 = RequiredLength[1] - *(_QWORD *)DEVPKEY_DeviceClass_ClassCoInstallers.fmtid.Data4;
if( v18 )
return v5;
goto LABEL_25;
}
}
}
}
}
}
LABEL_25:
*v22 = 1;
if( !v21 )
return -1073741789;
v5 = 0;
*v20 = 0;
return v5;
}Referenced by:
PnpDispatchInstallerClass