IoCreateController
PCONTROLLER_OBJECT __stdcall IoCreateController(ULONG Size){
struct _CONTROLLER_OBJECT *v1;
__int16 v2;
__int64 Flags;
UINT64 Flagsa;
__int64 v6[3];
int v7;
int v8;
__int128 v9;
PADAPTER_OBJECT DmaAdapter;
HANDLE Handle;
v1 = 0i64;
v2 = Size;
v6[0] = 48i64;
v8 = 0;
v7 = IopCaseInsensitive != 0 ? 576 : 512;
DmaAdapter = 0i64;
Handle = 0i64;
v6[1] = 0i64;
v6[2] = 0i64;
v9 = 0i64;
if( (int)ObCreateObjectEx(
0,
(_DWORD *)IoControllerObjectType,
(__int64)v6,
0,
Flags,
Size + 72,
0,
0,
&DmaAdapter,
0i64) >= 0 )
{
LODWORD(Flagsa) = 0;
if( ObInsertObjectEx(DmaAdapter, 0i64, 3ui64, 1ui64, Flagsa, (PVOID *)&DmaAdapter, &Handle) >= 0 )
{
ObCloseHandle(Handle, 0);
v1 = (struct _CONTROLLER_OBJECT *)DmaAdapter;
memset((INT64)DmaAdapter, 0i64);
v1->Type = 2;
v1->Size = v2 + 72;
v1->ControllerExtension = &v1[1];
KeInitializeDeviceQueue(&v1->DeviceWaitQueue);
}
}
return v1;
}Referenced by:
No references.