ExpWnfLookupNameInstance
NTSTATUS __stdcall ExpWnfLookupNameInstance(
_WNF_SCOPE_INSTANCE *ScopeInstance,
_WNF_STATE_NAME_STRUCT StateName,
_WNF_NAME_INSTANCE **NameInstance){
_WNF_LOCK *p_NameSetLock;
_BYTE *v7;
_WNF_NAME_INSTANCE *v8;
_WNF_NAME_INSTANCE *v9;
p_NameSetLock = &ScopeInstance->NameSetLock;
v7 = KeAbPreAcquire(&ScopeInstance->NameSetLock, 0i64, 0i64);
if( _InterlockedCompareExchange64(&p_NameSetLock->PushLock._bf_0, 17i64, 0i64) )
ExfAcquirePushLockSharedEx(&p_NameSetLock->PushLock, v7, p_NameSetLock);
if( v7 )
v7[26] |= 1u;
v8 = ExpWnfFindStateName(ScopeInstance, StateName);
v9 = v8;
if( v8 )
v9 = (_WNF_NAME_INSTANCE *)(-(__int64)(ExAcquireRundownProtection(&v8->RunRef) != 0) & (unsigned __int64)v8);
if( _InterlockedCompareExchange64(&p_NameSetLock->PushLock._bf_0, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(&p_NameSetLock->PushLock);
KeAbPostRelease(p_NameSetLock);
if( !v9 )
return -1073741772;
*NameInstance = v9;
return 0;
}Referenced by:
ExpNtDeleteWnfStateData
ExpNtUpdateWnfStateData
ExpWnfCompleteThreadSubscriptions
ExpWnfSubscribeWnfStateChange
NtDeleteWnfStateName
NtQueryWnfStateData
NtQueryWnfStateNameInformation