struct _HAL_IOMMU_DISPATCH
{
UCHAR (*HalIommuSupportEnabled)();
LONG (*HalIommuGetConfiguration)(
ULONG arg1,
ULONG* arg2,
ULONG* arg3,
VOID** arg4);
LONG (*HalIommuGetLibraryContext)(
ULONG arg1,
ULONG arg2,
VOID** arg3);
LONG (*HalIommuMapDevice)(
VOID* arg1,
struct _EXT_IOMMU_DEVICE_ID* arg2,
union _IOMMU_SVM_CAPABILITIES* arg3,
VOID** arg4);
LONG (*HalIommuEnableDevicePasid)(
VOID* arg1,
VOID* arg2);
LONG (*HalIommuSetAddressSpace)(
VOID* arg1,
ULONG arg2);
LONG (*HalIommuDisableDevicePasid)(
VOID* arg1,
VOID* arg2);
LONG (*HalIommuUnmapDevice)(
VOID* arg1,
VOID* arg2);
LONG (*HalIommuFreeLibraryContext)(
VOID* arg1);
VOID (*HalIommuFlushTb)(
VOID* arg1,
ULONG arg2,
struct _KTB_FLUSH_VA* arg3);
VOID (*HalIommuFlushAllPasid)(
VOID* arg1,
ULONG arg2,
struct _KTB_FLUSH_VA* arg3);
UCHAR (*HalIommuProcessPageRequestQueue)(
ULONG arg1);
VOID (*HalIommuFaultRoutine)(
ULONG arg1);
VOID* (*HalIommuReferenceAsid)(
ULONG arg1);
VOID (*HalIommuDereferenceAsid)(
ULONG arg1);
LONG (*HalIommuServicePageFault)(
ULONG arg1,
VOID* arg2,
ULONG arg3);
LONG (*HalIommuDevicePowerChange)(
VOID* arg1,
VOID* arg2,
UCHAR arg3);
LONG (*HalIommuBeginDeviceReset)(
VOID* arg1,
ULONG* arg2);
LONG (*HalIommuFinalizeDeviceReset)(
VOID* arg1);
};