阅读:1232回复:5
怎么得到驱动的接口句柄
1.写一个驱动测试程序.用SetuoDiNumDeviceInterface取得驱动程序的接口.但是我看的例子是用的GUID,SetuoDiNumDeviceInterface里的参数就写头文件里GUID的定义就行了.我的驱动用的是符号链接名,能不能用这个例程?好象并不匹配
2.看DDK写驱动时怎么根据功能查找自己需要的例程?我没有头绪 3.USB驱动是不是一定要能处理GET DESCRIPTOR, SET PORTS ,GET_FRAME_INFO等等这些IOCTL?如果不能处理会怎样? [编辑 - 3/26/03 by godhuntress] |
|
最新喜欢:eyeszh...
|
沙发#
发布于:2003-03-25 23:08
顶一下,求助啊
|
|
|
板凳#
发布于:2003-03-25 23:20
1、如果是symblink,在createfile就用这个linkname
|
|
地板#
发布于:2003-03-26 20:39
// GetDeviceViaInterface: Open a handle via a device interface // 获得硬件设备接口 HANDLE GetDeviceViaInterface( GUID* pGuid, DWORD instance) { // Get handle to relevant device information set HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); if(info==INVALID_HANDLE_VALUE) return NULL; // Get interface data for the requested instance SP_INTERFACE_DEVICE_DATA ifdata; ifdata.cbSize = sizeof(ifdata); if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, instance, &ifdata)) { SetupDiDestroyDeviceInfoList(info); return NULL; } // Get size of symbolic link name DWORD ReqLen; SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL); PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)malloc(ReqLen); if( ifDetail==NULL) { SetupDiDestroyDeviceInfoList(info); return NULL; } // Get symbolic link name ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL)) { SetupDiDestroyDeviceInfoList(info); //delete ifDetail; free( (PVOID)ifDetail ); return NULL; } // Open file HANDLE rv = CreateFile( ifDetail->DevicePath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0,//FILE_ATTRIBUTE_NORMAL, NULL); if( rv==INVALID_HANDLE_VALUE) rv = NULL; //delete ifDetail; free( (PVOID)ifDetail ); SetupDiDestroyDeviceInfoList(info); return rv; } //////////////////////////////////////////////////////////// chris cant的解决方法,呵呵,很好用 |
|
|
地下室#
发布于:2003-03-26 20:55
Cant的书我有,就是看了以后不知道怎么做。因为我没有用GUID。不过现在我已经用CreateFile,ReadFile,WriteFile写出了test程序。问题是,一个CreateFile就能解决问题,Cant前面那些语句是干嘛的?是因为GUID才需要吗?
还有, 3.USB驱动是不是一定要能处理GET DESCRIPTOR, SET PORTS ,GET_FRAME_INFO等等这些IOCTL?如果不能处理会怎样? |
|
|
5楼#
发布于:2003-03-27 12:12
Cant的书我有,就是看了以后不知道怎么做。因为我没有用GUID。不过现在我已经用CreateFile,ReadFile,WriteFile写出了test程序。问题是,一个CreateFile就能解决问题,Cant前面那些语句是干嘛的?是因为GUID才需要吗? 1、对,那些语句是为guid调用的。关于guid与设备标识符的区别,oney的书里详细介绍了 2、usb偶正在学习,呵呵,还什么都不懂哈 |
|
|