// // 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 IRQGENM_VERSION 0x400 #define InitGenDriver 0x80FF2004 #define DetectIRQ 0x80FF2008 #define SendEOI 0x80FF200C #define Disconnect 0x80FF2010 #define Abort 0x80FF2014 #define WRITE_TO_CLEAR 0 #define READ_TO_CLEAR 1 typedef struct _IRQGENM_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; } IRQGENM_INIT_DATA, *PIRQGENM_INIT_DATA; typedef DIOCPARAMETERS *LPDIOC; typedef OVERLAPPED *LPOVERLAPPED; typedef char *PSTR; // // Prototypes // DWORD _stdcall IRQGENM_DeviceIOControl(DWORD, DWORD, DWORD, LPDIOC); DWORD _stdcall IRQGENM_CleanUp(void); DWORD _stdcall MyPageLock(DWORD, DWORD); void _stdcall MyPageUnlock(DWORD, DWORD); DWORD _stdcall IRQGENM_InitGenDriver(DWORD, DWORD, LPDIOC); DWORD _stdcall IRQGENM_DetectIRQ(DWORD, DWORD, LPDIOC); DWORD _stdcall IRQGENM_SendEOI(DWORD, DWORD, LPDIOC); DWORD _stdcall IRQGENM_DisconnectIRQ(DWORD, DWORD, LPDIOC); DWORD _stdcall IRQGENM_Abort(DWORD, DWORD, LPDIOC); void _cdecl IRQGENM_ISR1(void); void _cdecl IRQGENM_ISR2(void); void _cdecl IRQGENM_ISR3(void); void _cdecl IRQGENM_ISR4(void); void _cdecl IRQGENM_ISR5(void); void _cdecl IRQGENM_ISR6(void); void _cdecl IRQGENM_ISR7(void); void _cdecl IRQGENM_ISR8(void); void _cdecl IRQGENM_ISR9(void); void _cdecl IRQGENM_ISR10(void); void _cdecl IRQGENM_ISR11(void); void _cdecl IRQGENM_ISR12(void); void _cdecl IRQGENM_ISR13(void); void _cdecl IRQGENM_ISR14(void); void _cdecl IRQGENM_ISR15(void);