阅读:5064回复:9
有哪位大大会扫描仪WIA的,请帮帮我!
最近被WIA搞的一点脾气都没有了,用DDK中的例子修改的代码不好用。安装上了扫描仪,但是双击图标,提示设备没有连接,郁闷ing
|
|
最新喜欢:wingma... |
沙发#
发布于:2007-04-06 10:06
没有人懂吗?
今天发现一个问题: 程序代码如下 STDMETHODIMP CWIADevice::Initialize( PSTIDEVICECONTROL pIStiDevControl, DWORD dwStiVersion, HKEY hParametersKey) { TCHAR data[]="Initialize!"; WriteLog(data); CWiaLogProc WIAS_LOGPROC(m_pIWiaLog, WIALOG_NO_RESOURCE_ID, WIALOG_LEVEL3, "CWIADevice::Initialize"); WriteLog("11111111111"); if (!pIStiDevControl) { WIAS_LERROR(m_pIWiaLog,WIALOG_NO_RESOURCE_ID,("CWIADevice::Initialize, invalid device control interface")); TCHAR data[]="pIStiDevControl!"; WriteLog(data); return STIERR_INVALID_PARAM; } HRESULT hr = S_OK; // // Get the mode of the device to check why we were created. status, data, or both... // WriteLog("22222222"); DWORD dwMode = 0; hr = pIStiDevControl->GetMyDeviceOpenMode(&dwMode); if(FAILED(hr)){ WIAS_LERROR(m_pIWiaLog,WIALOG_NO_RESOURCE_ID,("CWIADevice::Initialize, couldn't get device open mode")); TCHAR data[]="GetMyDeviceOpenMode!"; WriteLog(data); return hr; } if(dwMode & STI_DEVICE_CREATE_DATA) { // // device is being opened for data // } if(dwMode & STI_DEVICE_CREATE_STATUS) { // // device is being opened for status // } if(dwMode & STI_DEVICE_CREATE_BOTH) { } WCHAR szDevicePortNameW[MAX_PATH]; memset(szDevicePortNameW,0,sizeof(szDevicePortNameW)); WriteLog("33333333"); hr = pIStiDevControl->GetMyDevicePortName(szDevicePortNameW,sizeof(szDevicePortNameW)/sizeof(WCHAR)); if(FAILED(hr)) { WIAS_LERROR(m_pIWiaLog,WIALOG_NO_RESOURCE_ID,("CWIADevice::Initialize, couldn't get device port")); TCHAR data[]="GetMyDevicePortName!"; WriteLog(data); return hr; } WriteLog("4444444444"); if(!m_OK732LLD->FindScannerEx("\\\\.\\Usbscan0")) { //MessageBox(NULL,"FindScannerEx",NULL,MB_OK); TCHAR data[]="FindScannerEx!"; WriteLog(data); return E_FAIL; } ............................................ } 查看我写的记录,发现他运行到 WriteLog("4444444444"); 之后下面的代码他都没有运行就结束了。 FindScannerEx 是我自己定义的一个调用DLL的里面接口的函数。它里面也有写记录的程序,但是它根本就没有任何的记录留下。这是怎么回事? |
|
板凳#
发布于:2007-04-06 15:40
还是自己顶吧,
我把DDK中的例子改了一下,生成的dll文件,然后将它作为扫描仪的驱动安装到系统中,但是好像根本没有起作用,所用Minidriver中提供的接口实现的函数一个都没有执行。 刚接触WIA 方面的东西没有多久。一切都还在学习中,哪位老牛董这方面的东西,请帮帮我吧!!!!!!!! 十二万分的感谢。 |
|
地板#
发布于:2007-04-06 20:24
还是没有人来帮我。。。。。。
为什么DDK中的例子安装上后,它就自动的从CWiaDevice的构造函数开始执行,然后时IStiUSD的初始化函数等等,而将它修改后安装到扫描议上后却没有任何的反映,就年CWiaDevice的构造函数都不执行。 难道它与inf文件有关系吗? 哪inf文件应该怎样些呢? |
|
地下室#
发布于:2007-04-08 10:37
我对WIA也感兴趣,不过项目还没要求,目前做的都是TWAIN的。
高手们提供些信息啊! |
|
|
5楼#
发布于:2007-04-08 12:32
哎。。。。。。。。。。
看的人不少,却没有人能帮我一把。 在网上看到这样一段话: Scanner在Win98和Win2000中属于STI Device,Windows系统中标准的STI Device会走STI或WIA架构来接入系统,在上层需要标准的Twain的DS来和图形图像应用程序来对接,当然也可以研发自己的Application架在STI或WIA的上面,非标准的USB STI Device需要额外的Bulk USB Driver来支持。STI和WIA的架构支持设备的PUSH BUTTON功能,使设备的操作更简便与快捷。 是不是说要做好一个WIA驱动,要先写好Twain的DS然后再在Twain的DS基础上开发WIA? 但是,我看到Twain_32文件夹下有一个wiatwain.ds文件。是不是说系统已经给我们写好的这个DS文件,我们只需要些USD这一部分就好了。 还有DDK中介绍说WIA Minidriver都是和Wia Service打交道的,而WIA Service是系统提供的一个服务。我们开发的WIA Minidriver 只是需要将WIA Minidriver提供的接口实现了,系统就会自动的去调用那些我们写好的接口函数。 如果真的是这样,那么我写的WIA Minidriver安装到打印机上,他连初始化都不运行,这是为什么呢? 还望各位大侠们给我帮助。 等待各位大侠的好消息。。。。。。 |
|
6楼#
发布于:2007-04-10 10:41
呵呵。。。
已经可以在机器上运行了,现在就差一些细节的东西了。 可以通过写文件调试了,我想剩下的应该不会太难了吧。 |
|
7楼#
发布于:2007-05-10 13:59
已经解决了扫描的问题,现在出现的问题是无法通过扫描仪发出扫描的指令,然后在PC上弹出设置好的程序,如
果哪位大侠知道一些这方面的知识,请指教小弟一二。 小弟将感激不禁。 谢谢! 谢谢! |
|
8楼#
发布于:2007-06-14 11:27
不好意思,我刚开始看WIA 驱动,你说的问题我解决不了, 想问你一个问题,CWiaLogProc WIAS_LOGPROC应该是输出的调试信息吧,说是写到wiaservc.log文件中,我怎么看不到 。 你用的 WriteLog("11111111111");函数是自己写的吗?谢谢
|
|
9楼#
发布于:2007-06-24 10:57
看看twaince标准接口的一些东西,在应用和驱动之间的动态库中自己必须添加调用自己驱动的代码,如果不这样数据根本无法到达设备.
|
|