阅读:2324回复:4
2000下通过GUID来CreateFile() ?
CreateFile("\\\\.\\Device\\{E40DDC4D-003C-431E-957F-D20EB5F05D2C}", 0,0,0,CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0);
我想通过GUID打开我的NIC卡,为什么总返回错误3,即 ERROR_PATH_NOT_FOUND |
|
最新喜欢:skylgl
|
沙发#
发布于:2001-08-02 13:46
可以这样用么,Chris Cant写了这样一个函数来通过GUID打开文件句柄:
GetDeviceViaInterface(GUID *pGUID, DWORD Instance) { HDEVINFO hInfo=SetupDiGetClassDevs(pGUID,NULL,NULL,DIGCF_PRESENT|DIGCF_INTERFACEDEVICE); if(hInfo==INVALID_HANDLE_VALUE) { AfxMessageBox("NO HDEVINFO available for this GUID"); } SP_INTERFACE_DEVICE_DATA IfData; IfData.cbSize=sizeof(IfData); if(!SetupDiEnumDeviceInterfaces(hInfo,NULL,pGUID,Instance,&IfData)) { AfxMessageBox("NO SP_INTERFACE_DEVICE_DATA availabel for this GUID Instance"); SetupDiDestroyDeviceInfoList(hInfo); return NULL; } DWORD ReqLen; SetupDiGetDeviceInterfaceDetail(hInfo,&IfData,NULL,0,&ReqLen,NULL); PSP_INTERFACE_DEVICE_DETAIL_DATA pIfDetail=(PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]); if(pIfDetail==NULL) { SetupDiDestroyDeviceInfoList(hInfo); return NULL; } pIfDetail->cbSize=sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); if(!SetupDiGetDeviceInterfaceDetail(hInfo,&IfData,pIfDetail,ReqLen,NULL,NULL)) { SetupDiDestroyDeviceInfoList(hInfo); delete(pIfDetail); return NULL; } HANDLE hFile= CreateFile(pIfDetail->DevicePath, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hFile == INVALID_HANDLE_VALUE) { SetupDiDestroyDeviceInfoList(hInfo); delete(pIfDetail); return NULL; } else { SetupDiDestroyDeviceInfoList(hInfo); delete(pIfDetail); return hFile; } return NULL; } 我用过这个函数,很好用,你的方法不知道行不行。 环境:WinME+98DDK+VC6 |
|
|
板凳#
发布于:2001-08-02 17:19
谢谢!
我用VC5编译它,出了一堆问题。看来应该用VC6 |
|
|
地板#
发布于:2001-08-03 13:06
我发现VC5的确存在一些问题,比如看资源文件的字总是一半!?有谁知道因为什么?是不是我的安装盘……:(
|
|
地下室#
发布于:2001-08-04 00:01
一定是你的VC5有问题,再说现在弄张VC6也不难呀
|
|
|