WmipSendEnableRequest
UINT64 __stdcall WmipSendEnableRequest(tagGUIDENTRY *GuidEntry, UINT8 IsEvent){
tagGUIDENTRY v4;
int v5;
unsigned int v6;
tagGUIDENTRY v7;
if( IsEvent )
{
v4 = GuidEntry[22];
v5 = 2;
GuidEntry[22] = v4 + 1;
}
else
{
v4 = GuidEntry[23];
v5 = 4;
GuidEntry[23] = v4 + 1;
}
if( v4 || (v5 & GuidEntry[4]) != 0 )
{
if( !IsEvent && (v5 & GuidEntry[4]) != 0 )
WmipWaitForCollectionEnabled(GuidEntry);
return 0;
}
else
{
WmipReferenceEntry((INT64)GuidEntry);
GuidEntry[4] |= v5;
do
{
v6 = WmipSendEnableDisableRequest(IsEvent != 0 ? 4 : 6, GuidEntry, IsEvent);
if( IsEvent )
v7 = GuidEntry[22];
else
v7 = GuidEntry[23];
if( v7 )
break;
v6 = WmipSendEnableDisableRequest(IsEvent != 0 ? 5 : 7, GuidEntry, IsEvent);
}
while( IsEvent ? GuidEntry[22] : GuidEntry[23] );
GuidEntry[4] &= ~v5;
if( !IsEvent )
WmipReleaseCollectionEnabled(GuidEntry);
WmipUnreferenceEntry((__int64)&stru_140C00F40 + 4528, (volatile signed __int64 *)GuidEntry);
}
return v6;
}Referenced by:
WmipEnableCollectOrEvent