MiLoadImportDll
NTSTATUS __stdcall MiLoadImportDll(
_UNICODE_STRING *DllToLoad,
_UNICODE_STRING *NamePrefix,
UINT64 LoadFlags,
VOID **ImageHandle,
VOID **ImageBaseAddress){
char v6;
int SystemImage;
_KLDR_DATA_TABLE_ENTRY *v8;
_KLDR_DATA_TABLE_ENTRY *v9;
int v10;
_KLDR_DATA_TABLE_ENTRY *DataTableEntry;
VOID *v13;
DataTableEntry = 0i64;
v13 = 0i64;
v6 = LoadFlags;
SystemImage = MmLoadSystemImageEx(
DllToLoad,
NamePrefix,
0i64,
(unsigned int)LoadFlags | 8,
(INT64)&DataTableEntry,
(INT64)&v13);
if( SystemImage >= 0 )
{
v8 = DataTableEntry;
v9 = DataTableEntry;
DataTableEntry->Flags |= 0x4000000u;
MmCallDllInitialize(v9, (_LIST_ENTRY *)&PsLoadedModuleList);
SystemImage = v10;
if( v10 < 0 )
{
MmUnloadSystemImage(v8);
}
else
{
if( (v6 & 1) == 0 )
MiFreeDriverInitialization(v8);
*ImageHandle = DataTableEntry;
*ImageBaseAddress = v13;
}
}
return SystemImage;
}Referenced by:
MiResolveImageReferences