WmipUpdateAddGuid
UINT64 __stdcall WmipUpdateAddGuid(
tagDATASOURCE *DataSource,
WMIREGGUIDW *RegGuid,
WMIREGINFOW *WmiRegInfo,
UINT64 BufferSize,
tagInstanceSet **AddModInstanceSet){
unsigned int v6;
_QWORD *v9;
unsigned int v10;
volatile signed __int64 *v11;
UINT64 result;
_QWORD *v13;
tagDATASOURCE *v14;
__int64 v15;
UINT64 ProviderId;
v6 = BufferSize;
v9 = WmipAllocEntry((__int64)&stru_140C00F40 + 4496);
v10 = 0;
v11 = v9;
if( !v9 )
return 0i64;
*((_DWORD *)v9 + 4) |= 8u;
v13 = v9 + 5;
v9[7] = RegGuid;
v9[8] = DataSource;
v14 = DataSource + 10;
v15 = *((_QWORD *)DataSource + 5);
if( *(tagDATASOURCE **)(v15 + 8) != DataSource + 10 )
__fastfail(3u);
*v13 = v15;
v13[1] = v14;
*(_QWORD *)(v15 + 8) = v13;
*(_QWORD *)v14 = v13;
LODWORD(ProviderId) = DataSource[14];
if( WmipBuildInstanceSet(RegGuid, WmiRegInfo, v6, (tagInstanceSet *)v11, ProviderId) < 0 )
{
WmipUnreferenceEntry((__int64)&stru_140C00F40 + 4496, v11);
return 0i64;
}
LOBYTE(v10) = (int)WmipLinkDataSourceToList((__int64)DataSource, 0, 0i64) >= 0;
result = v10;
*AddModInstanceSet = (tagInstanceSet *)v11;
return result;
}Referenced by:
WmipUpdateModifyGuid