PiSwInit

NTSTATUS __stdcall PiSwInit(){
  NTSTATUS result; 
  OWORD EnlistmentHandle; 

  DWORD1(EnlistmentHandle) = 0;
  RtlInitializeGenericTableAvl(
    &PiSwDeviceInstanceTable,
    (PRTL_AVL_COMPARE_ROUTINE)PiSwDeviceCompareObjects,
    (PRTL_AVL_ALLOCATE_ROUTINE)PiSwAllocateGenericTableEntry,
    (PRTL_AVL_FREE_ROUTINE)PiSwFreeGenericTableEntry,
    0i64);
  RtlInitializeGenericTableAvl(
    &PiSwBusRelationsTable,
    (PRTL_AVL_COMPARE_ROUTINE)PiSwBusRelationsCompareInstancePath,
    (PRTL_AVL_ALLOCATE_ROUTINE)PiSwAllocateGenericTableEntry,
    (PRTL_AVL_FREE_ROUTINE)PiSwFreeGenericTableEntry,
    0i64);
  qword_140C43078 = (__int64)&PiSwGlobalPdoAssociationList;
  PiSwGlobalPdoAssociationList = (__int64)&PiSwGlobalPdoAssociationList;
  result = ExInitializeResourceLite((INT64)&PiSwLockObj);
  if( result >= 0 )
  {
    LODWORD(EnlistmentHandle) = 3014700;
    *((_QWORD *)&EnlistmentHandle + 1) = L"\\Driver\\SoftwareDevice";
    return IoCreateDriver(&EnlistmentHandle, (UINT64)PiSwPdoDriverEntry);
  }
  return result;
}

Referenced by:

IopInitializePlugPlayServices