KsepEngineInitialize
NTSTATUS __stdcall KsepEngineInitialize(_KSE_ENGINE *Engine){
__int64 v2;
void *v3;
__int64 v4;
NTSTATUS result;
__int64 v6;
if( !Engine )
{
v6 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
KsepHistoryErrors[2 * v6 + 1] = -1073740768;
KsepHistoryErrors[2 * v6] = 131872;
if( (KsepDebugFlag & 4) != 0 )
RtlAssert("Engine != NULL", "minkernel\\ntos\\kshim\\ksecore.c", 800i64, 0i64);
}
*((_QWORD *)Engine + 3) = Engine + 4;
*((_QWORD *)Engine + 2) = Engine + 4;
*((_QWORD *)Engine + 5) = Engine + 8;
*((_QWORD *)Engine + 4) = Engine + 8;
*((_QWORD *)Engine + 6) = 0i64;
LODWORD(v2) = KsepCacheInitialize(Engine, (UINT64 *)KsepCacheDeviceEqual);
*((_QWORD *)Engine + 9) = v2;
if( !v2 )
return -1073741801;
LODWORD(v4) = KsepCacheInitialize(v3, (UINT64 *)KsepCacheHwIdEqual);
*((_QWORD *)Engine + 10) = v4;
if( !v4 )
return -1073741801;
*((_QWORD *)Engine + 7) = KseGetIoCallbacks;
*((_QWORD *)Engine + 8) = KseSetCompletionHook;
result = KsepEngineReadFlags(&::Engine);
if( result >= 0 && (::Engine & 3) == 3 )
return -1073741637;
return result;
}Referenced by:
KseInitialize