#ifndef INTERFACE_H #define INTERFACE_H typedef NTSTATUS (*PHPS_REGISTER_INTERRUPT)( IN PVOID Context, IN PKSERVICE_ROUTINE ServiceRoutine, IN PVOID ServiceContext ); typedef VOID (*PHPS_UNREGISTER_INTERRUPT)( IN PVOID Context ); typedef BOOLEAN (*PHPS_SYNCHRONIZE_EXECUTION)( IN PVOID Context, IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, IN PVOID SynchronizeContext ); typedef struct _HPS_REGISTER_INTERRUPT_INTERFACE { USHORT Size; USHORT Version; PVOID Context; PINTERFACE_REFERENCE InterfaceReference; PINTERFACE_DEREFERENCE InterfaceDereference; PHPS_REGISTER_INTERRUPT ConnectISR; PHPS_UNREGISTER_INTERRUPT DisconnectISR; PHPS_SYNCHRONIZE_EXECUTION SyncExecutionRoutine; } HPS_REGISTER_INTERRUPT_INTERFACE, *PHPS_REGISTER_INTERRUPT_INTERFACE; typedef VOID (*PHPS_READWRITE_BUFFER)( IN PUCHAR Register, IN PUCHAR Buffer, IN ULONG Count ); typedef struct _HPS_MEMORY_INTERFACE { USHORT Size; USHORT Version; PVOID Context; PINTERFACE_REFERENCE InterfaceReference; PINTERFACE_DEREFERENCE InterfaceDereference; PHPS_READWRITE_BUFFER ReadRegister; PHPS_READWRITE_BUFFER WriteRegister; } HPS_MEMORY_INTERFACE, *PHPS_MEMORY_INTERFACE; #endif