阅读:1981回复:6
各位高手就我,5555....55555.........
就下面着短短的代码,困扰我很旧了,中断总是不能触发。
Why, 555.....5555..... // ADCARD.h - include file for VxD ADCARD #include <vtoolscp.h> #define DEVICE_CLASS AdcardDevice #define ADCARD_DeviceID UNDEFINED_DEVICE_ID #define ADCARD_Init_Order UNDEFINED_INIT_ORDER #define ADCARD_Major 1 #define ADCARD_Minor 0 #define MY_IRQ 7 class MyHwInt : public VHardwareInt { public: MyHwInt():VHardwareInt(MY_IRQ,0,0,0){}; virtual VOID OnHardwareInt(VMHANDLE); }; class AdcardDevice : public VDevice { public: virtual BOOL OnSysDynamicDeviceInit(); virtual BOOL OnSysDynamicDeviceExit(); MyHwInt* pMyIRQ; }; class AdcardVM : public VVirtualMachine { public: AdcardVM(VMHANDLE hVM); }; class AdcardThread : public VThread { public: AdcardThread(THREADHANDLE hThread); }; // ADCARD.cpp - main module for VxD ADCARD #define DEVICE_MAIN #include "adcard.h" Declare_Virtual_Device(ADCARD) #undef DEVICE_MAIN #define Num 20 #define nBase_Addr 0x100 int nChannel; int HighFourBit, LowFourBit; int nResult[Num]; AdcardVM::AdcardVM(VMHANDLE hVM) : VVirtualMachine(hVM) {} AdcardThread::AdcardThread(THREADHANDLE hThread) : VThread(hThread) {} BOOL AdcardDevice::OnSysDynamicDeviceInit() { pMyIRQ = new MyHwInt(); if(pMyIRQ&&pMyIRQ->hook()) { pMyIRQ->physicalUnmask(); _outp(0x100+1,0); //启动A/D转换;(该ISA卡现被设为软件触发) dprintf("I have triggered A/D!"); return TRUE; } else return FALSE; } BOOL AdcardDevice::OnSysDynamicDeviceExit() { if(pMyIRQ) delete pMyIRQ; return TRUE; } VOID MyHwInt::OnHardwareInt(VMHANDLE hVM) { dprintf("The int run!"); sendPhysicalEOI(); } [dolphin 编辑于 2001-05-25 16:06] [dolphin 编辑于 2001-05-25 16:06] |
|
|
沙发#
发布于:2001-05-24 17:09
现在我大声的向全世界郑重宣布,本人在测试的时候是绝对有将那张破卡(PC_6313)插到ISA槽上,如不信,你再问我,我也是这么说。^-^
并且,例程\Vtoolsd\example\cpp\hwint 经我测试也不能触发IRQ8。清华出的"Win9x虚拟设备驱动程序编程指南" 上的类似的例程也不行。 。。。。。救我。。。。我。。。。。。。。 [dolphin 编辑于 2001-05-24 17:16] |
|
|
板凳#
发布于:2001-05-24 17:22
IRQ 8是cmos 时钟中断,好像不行, 你换一个中断试一试。个人看法!
|
|
地板#
发布于:2001-05-24 17:36
你误会我的意思了,例程\Vtoolsd\example\cpp\hwint 本来就是利用内部时钟引发中断发声。你可以看看该例。
|
|
|
地下室#
发布于:2001-05-25 16:30
用户被禁言,该主题自动屏蔽! |
|
5楼#
发布于:2001-05-28 08:24
No,俺现在最不能确定的问题就是这张破卡是否工作正常,不过A/D转换到还正常,通过查询方式可以得到数据,但指导老师保证说中断触发是正常的。
|
|
|
6楼#
发布于:2001-06-02 20:04
这样,你最好先写个DOS的程序,验证中断和数据输入输出是否正常。以前我用了一张湾湾造的卡,驱动都快写完了才发现这卡有先天缺陷,只好换别的。
当然,验证是否产生中断的最简单办法就是用SoftICE拦截8号中断。 |
|