25 lines
718 B
C
25 lines
718 B
C
// Public nt-lite DDK interrupt declarations.
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <ntlite/status.h>
|
|
|
|
typedef struct NTL_DDK_MSI_MESSAGE {
|
|
uint64_t Address;
|
|
uint32_t Data;
|
|
uint32_t Reserved;
|
|
} NTL_DDK_MSI_MESSAGE;
|
|
|
|
// Driver-visible interrupt services.
|
|
typedef struct NTL_DDK_INTERRUPT {
|
|
KSTATUS (*AllocateMsiVector)(uint8_t* outIrq);
|
|
KSTATUS (*ComposeMsiMessage)(uint8_t irq, NTL_DDK_MSI_MESSAGE* messageOut);
|
|
} NTL_DDK_INTERRUPT;
|
|
|
|
// Allocates one kernel IRQ slot for MSI delivery.
|
|
__declspec(dllexport) KSTATUS KeIrqAllocateMsiVector(uint8_t* outIrq);
|
|
|
|
// Registers a legacy interrupt handler for an IRQ slot.
|
|
__declspec(dllexport) void KeIrqRegister(uint8_t irq, void (*handler)(void));
|