// // define wrappers for VWIN32_DIOCCompletionRoutine and Set_Thread_Time_Out // MAKE_HEADER(VOID, _stdcall, VWIN32_DIOCCompletionRoutine, (DWORD hEvent)) #define VWIN32_DIOCCompletionRoutine PREPEND(VWIN32_DIOCCompletionRoutine) #define IRQGEN_VERSION 0x400 #define InitGenDriver 0x80FF2004 #define DetectIRQ 0x80FF2008 #define SendEOI 0x80FF200C #define Abort 0x80FF2010 #define WRITE_TO_CLEAR 0 #define READ_TO_CLEAR 1 typedef struct _IRQGEN_INIT_DATA { unsigned long BaseAddress; unsigned short IRQ; short BusType; unsigned short BusNumber; unsigned short ClearOffset; unsigned short Operation; unsigned long Reserved1; unsigned long Reserved2; } IRQGEN_INIT_DATA, *PIRQGEN_INIT_DATA; typedef DIOCPARAMETERS *LPDIOC; typedef OVERLAPPED *LPOVERLAPPED; typedef char *PSTR; // // Prototypes // DWORD _stdcall IRQGEN_DeviceIOControl(DWORD, DWORD, DWORD, LPDIOC); DWORD _stdcall IRQGEN_CleanUp(void); void _cdecl IRQGEN_Event_Callback(void); DWORD _stdcall MyPageLock(DWORD, DWORD); void _stdcall MyPageUnlock(DWORD, DWORD); DWORD _stdcall IRQGEN_InitGenDriver(DWORD, DWORD, LPDIOC); DWORD _stdcall IRQGEN_DetectIRQ(DWORD, DWORD, LPDIOC); DWORD _stdcall IRQGEN_SendEOI(DWORD, DWORD, LPDIOC); DWORD _stdcall IRQGEN_Abort(DWORD, DWORD, LPDIOC);