KsepDbCacheInsertDevice
INT64 __fastcall KsepDbCacheInsertDevice(WCHAR *SourceString, INT64 rdx0){
unsigned int v4;
_ETHREAD *CurrentThread;
UINT64 v6;
WCHAR v7;
volatile INT64 *v8;
char v9;
INT64 a2[5];
struct _UNICODE_STRING DestinationString;
v4 = -1073741811;
memset((INT64)a2, 0i64);
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v6 = qword_140C50368;
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockExclusiveEx(v6, 0i64);
RtlInitUnicodeString(&DestinationString, SourceString, v7);
if( !KsepCacheLookup(qword_140C50368, (INT64)a2) )
{
KsepCacheInsert(qword_140C50368, rdx0);
v4 = 0;
}
v8 = (volatile INT64 *)qword_140C50368;
v9 = _InterlockedExchangeAdd64((volatile signed __int64 *)qword_140C50368, 0xFFFFFFFFFFFFFFFFui64);
if( (v9 & 2) != 0 && (v9 & 4) == 0 )
ExfTryToWakePushLock(v8);
KeAbPostRelease((PVOID)v8);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
return v4;
}Referenced by:
KseQueryDeviceData
KseQueryDeviceDataList