阅读:1664回复:4
一个绝对新手的问题,为什么要写驱动,什么时候需要写驱动?
我以前一直是在用vc写应用层软件。
最近公司决定开发一个设备,这个设备是通过usb口和pc通讯的。 我要做的就是写pc上的数据采集工具。 但是我不知道怎么获得和usb口的接口, 我去网上查,看很多人说要写驱动,我看了很多文章,大体知道了这里的驱动就是应用程序和usb口的接口吧,就象我们在win98上用u盘需要装的那个驱动一样吧。 但是我不知道驱动应该写什么? 而且我也不知道到底是否需要写驱动? 到底什么时候才需要写驱动呢? 而且好象usb通讯设备是分类的,有hid类的,普通的u盘是什么类型的呢? 我用: CString m_strLog; GUID guidHID; HidD_GetHidGuid(&guidHID); AfxMessageBox("HID类的GUID标识为\r\n"); CString strShow; strShow.Format("%08x-%04x-%04x-%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x\r\n", guidHID.Data1,guidHID.Data2,guidHID.Data3,guidHID.Data4[0], guidHID.Data4[1],guidHID.Data4[2],guidHID.Data4[3],guidHID.Data4[4], guidHID.Data4[5],guidHID.Data4[6],guidHID.Data4[7]); m_strLog += strShow; msgbox(m_strLog); // 准备查找符合HID规范的USB设备 HDEVINFO hDevInfo = SetupDiGetClassDevs(&guidHID,NULL,0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE); UINT nIndex = 0; m_strLog += _T("正在查找可用的USB设备...\r\n"); msgbox(m_strLog); // 查找USB设备接口 SP_DEVICE_INTERFACE_DATA strtInterfaceData; BOOL bSuccess = SetupDiEnumDeviceInterfaces(hDevInfo,NULL,&guidHID,0, &strtInterfaceData); if (!bSuccess) { msgbox(_T("抱歉,未找到可用的USB设备")); SetupDiDestroyDeviceInfoList(hDevInfo); return; } 明明我机器上是插有u盘的,但是每次执行都是("抱歉,未找到可用的USB设备",这是怎么回师啊? 哎,问了一大堆白痴的问题,都想自杀去了,有哪位仁兄同情我下,告诉我上面的答案呢? |
|
沙发#
发布于:2005-07-01 23:09
u盘的bDeviceClass 是USB_DEVICE_CLASS_STORAGE
|
|
板凳#
发布于:2005-07-01 20:25
建议找一本wdm 驱动开发的书,系统的看一下,有了一些基本概念后,再来提具体问题
|
|
地板#
发布于:2005-07-01 16:34
楼上的仁兄能说明白点吗?
我现在基本上就是个白痴,什么都不懂,你这样说我什么也听不懂啊。另外问下u盘是什么类型的设备呢? |
|
地下室#
发布于:2005-07-01 16:30
1。你需要写一个usb client driver.
2。u盘不是hid设备。 |
|