GetPropertyFromPropArray
INT64 __stdcall GetPropertyFromPropArray(
VOID *GetPropertyCallbackContext,
DEVPROPCOMPKEY *PropKey,
UINT64 *PropType,
UINT64 *BufferSize,
UINT8 **Buffer){
__int64 v5;
unsigned int v10;
__int64 v11;
__int64 v13;
const wchar_t *v14;
const wchar_t *LocaleName;
*(_DWORD *)PropType = 0;
v5 = 0i64;
*(_DWORD *)BufferSize = 0;
v10 = -1073741275;
*Buffer = 0i64;
if( *(_DWORD *)GetPropertyCallbackContext )
{
while( 1 )
{
v11 = *((_QWORD *)GetPropertyCallbackContext + 1);
if( *(_DWORD *)(v11 + 48 * v5 + 16) == PropKey->Key.pid )
{
v13 = *(_QWORD *)(v11 + 48 * v5) - *(_QWORD *)&PropKey->Key.fmtid.Data1;
if( !v13 )
v13 = *(_QWORD *)(v11 + 48 * v5 + 8) - *(_QWORD *)PropKey->Key.fmtid.Data4;
if( !v13 && *(_DWORD *)(v11 + 48 * v5 + 20) == PropKey->Store )
{
v14 = *(const wchar_t **)(v11 + 48 * v5 + 24);
LocaleName = PropKey->LocaleName;
if( v14 == LocaleName || v14 && LocaleName && !wcsicmp(v14, LocaleName) )
break;
}
}
v5 = (unsigned int)(v5 + 1);
if( (unsigned int)v5 >= *(_DWORD *)GetPropertyCallbackContext )
return v10;
}
v10 = 0;
*(_DWORD *)PropType = *(_DWORD *)(*((_QWORD *)GetPropertyCallbackContext + 1) + 48 * v5 + 32);
*(_DWORD *)BufferSize = *(_DWORD *)(*((_QWORD *)GetPropertyCallbackContext + 1) + 48 * v5 + 36);
*Buffer = *(UINT8 **)(*((_QWORD *)GetPropertyCallbackContext + 1) + 48 * v5 + 40);
}
return v10;
}Referenced by:
No references.