瀚海星云 -- Kernel精华区文章阅读
本人曾经做过一个关于对各种ISA板卡读取数据的驱动程序, 期间也曾遇到很多困难,有幸得到本版几位大侠的帮助,感 激不已,先将我的源码共享给大家,希望能对大家有所帮助, 也希望能对繁荣本版进一点微薄之力! (注:本程序参考了“WDM设备驱动程序开发指”的例程, 因此,甚至在有些地方没有改动,DeviceIo.cpp中的代码 为主要部分)
GUID.h /******************************************************************** created: 2001/07/01 created: 1:7:2001 22:03 filename: GUID.h author: Tulip *********************************************************************/
// {6C5DD839-5328-409b-AD0C-F15EF88A1E2A} DEFINE_GUID(VQC_GUID, 0x6c5dd839, 0x5328, 0x409b, 0xad, 0xc, 0xf1, 0x5e,
0xf8, 0x8a, 0x1e, 0x2a);
// {4E8F502F-859B-4080-B4A3-02033B198E26} DEFINE_GUID(VQC5352_GUID, 0x4e8f502f, 0x859b, 0x4080, 0xb4, 0xa3, 0x2, 0x3, 0x3b, 0x19, 0x8e, 0x26);
Ioctl.h /******************************************************************** created: 2001/07/01 created: 1:7:2001 22:03 filename: Ioctl.h author: Tulip *********************************************************************/
// Return status codes
enum VQC_IO_ERRORS { VQC_OK = 0, VQC_UNRECOGNISED_CMD, // Unrecognised command VQC_NO_CMD_PARAMS, // Command does not have required VQC_NO_CMD_PARAMS, // Command does not have required number of parameters VQC_NO_OUTPUT_ROOM, // No room in output buffer VQC_NO_INTERRUPT, // IRQ_CONNECT: No interrupt resource given VQC_ALREADY_CONNECTED_TO_INT, // IRQ_CONNECT: Already connected to interrupt VQC_NOT_IN_RANGE, // IRQ_CONNECT: Interrupt register not in range VQC_BAD_INTERRUPT_VALUE, // IRQ_CONNECT: Impossible to get interrupt value with specified mask VQC_CANNOT_CONNECT_TO_INTERRUPT, // IRQ_CONNECT: cannot connect to the given interrupt VQC_DELAY_TOO_LONG, // Delay must be 60us or smaller VQC_CANCELLED, // Command processing stopped as IRP cancelled VQC_BYTE_CMDS_ONLY, // Only BYTE/UCHAR size commands are currently supported };
/
// Command codes reg: 1 byte Offset into address space </ |