// // 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 IRQCOS_VERSION 0x400 #define InitCOSDriver 0x80FF2004 #define GetData 0x80FF2010 #define Abort 0x80FF2014 typedef DIOCPARAMETERS *LPDIOC; typedef OVERLAPPED *LPOVERLAPPED; typedef char *PSTR; typedef struct _IRQCOS_INIT_DATA { unsigned long BaseAddress; unsigned short IRQ; short BusType; unsigned short BusNumber; } IRQCOS_INIT_DATA, *PIRQCOS_INIT_DATA; // // Prototypes // DWORD _stdcall IRQCOS_DeviceIOControl(DWORD, DWORD, DWORD, LPDIOC); DWORD _stdcall IRQCOS_CleanUp(void); void _cdecl IRQCOS_Event_Callback(void); DWORD _stdcall MyPageLock(DWORD, DWORD); void _stdcall MyPageUnlock(DWORD, DWORD); DWORD _stdcall IRQCOS_InitCOSDriver(DWORD, DWORD, LPDIOC); DWORD _stdcall IRQCOS_GetData(DWORD, DWORD, LPDIOC); DWORD _stdcall IRQCOS_Abort(DWORD, DWORD, LPDIOC); unsigned short _stdcall inport(unsigned short port); unsigned char _stdcall inportb(unsigned short port); void _stdcall outport(unsigned short port, unsigned short val); void _stdcall outportb(unsigned short port, unsigned char val);