MiLoadImportDll
INT64 __stdcall MiLoadImportDll(
UNICODE_STRING *DllToLoad,
UNICODE_STRING *NamePrefix,
UINT64 LoadFlags,
PVOID *ImageHandle,
PVOID *ImageBaseAddress){
char v6;
int SystemImage;
VOID *v8;
_KLDR_DATA_TABLE_ENTRY *v9;
ULONG_PTR BugCheckParameter2;
void *v12;
BugCheckParameter2 = 0i64;
v12 = 0i64;
v6 = LoadFlags;
SystemImage = MmLoadSystemImageEx(
DllToLoad,
NamePrefix,
0i64,
(unsigned int)LoadFlags | 8,
(INT64)&BugCheckParameter2,
(INT64)&v12);
if( SystemImage >= 0 )
{
v8 = (VOID *)BugCheckParameter2;
v9 = (_KLDR_DATA_TABLE_ENTRY *)BugCheckParameter2;
*(_DWORD *)(BugCheckParameter2 + 104) |= 0x4000000u;
SystemImage = MmCallDllInitialize(v9, (_LIST_ENTRY *)&PsLoadedModuleList);
if( SystemImage < 0 )
{
MmUnloadSystemImage(v8);
}
else
{
if( (v6 & 1) == 0 )
MiFreeDriverInitialization((__int64)v8);
*ImageHandle = (PVOID)BugCheckParameter2;
*ImageBaseAddress = v12;
}
}
return(unsigned int)SystemImage;
}Referenced by:
MiResolveImageReferences