阅读:3481回复:1
求助。passthru驱动安装错乱的问题
我调用bindview里的代码实现自动安装passthru但是发现了一个小bug
因为我前后后改了很多次inf文件,又反复在虚拟机上调试,所以系统的c:\windows\inf里生成了大量inf备份 名字为oemXX.inf,然后问题出现了 我调用HrInstallNetComponent,指定inf文件路径 结果安装之后的passthru名称不对,不是我指定安装的那个。 自动变成了c:\windows\inf里的oemXX.inf里设定的 比如说:c:\windows\inf\oem12.inf定义如下行 Passthru_Desc = "Filter Driver1111" Passthru_HELP = "中间层驱动程序" 而我安装的c:\vxfilter\vxflt.inf是如下定义的 Passthru_Desc = "Filter Driver" Passthru_HELP = "中间层驱动程序" 那么调用HrInstallNetComponent安装c:\vxfilter\vxflt.inf之后 可以通过本地连接属性 观察到服务名称为Filter Driver1111 虽然不影响使用但是…… 这是为什么呢…… 源代码如下 #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <windowsx.h> #include <wchar.h> #include <commctrl.h> // For common controls, e.g. Tree #include <commdlg.h> #include <setupapi.h> #include <devguid.h> #include "NetCfgAPI.h" #include <strsafe.h> int APIENTRY WinMain (__in HINSTANCE hInst,__in_opt HINSTANCE hPrevInstance,__in LPSTR lpCmdLine,__in int nCmdShow ) { INetCfg *pnc; LPWSTR lpszApp; HRESULT hr; WCHAR TempStr[128]; hr = HrGetINetCfg(TRUE,L"VxFilterIns",&pnc,&lpszApp); if(hr == S_OK) { hr = HrInstallNetComponent(pnc,L"vx_filter",&GUID_DEVCLASS_NETSERVICE,L"C:\\VxFilter\\vxflt.inf"); if(hr == S_OK || hr == NETCFG_S_REBOOT) { hr = pnc->Apply(); MessageBoxW(0,L"安装成功!",L"安装信息",MB_ICONINFORMATION); } else if(hr != HRESULT_FROM_WIN32(ERROR_CANCELLED)) MessageBoxW(0,L"无法安装指定网络组件",L"安装错误",MB_ICONERROR); HrReleaseINetCfg(pnc,TRUE); } else { if(hr == NETCFG_E_NO_WRITE_LOCK && lpszApp) { MessageBoxW(0,lpszApp,L"请关闭如下窗口",MB_ICONERROR); CoTaskMemFree(lpszApp); } else { MessageBoxW(0,L"无法获取INetCfg接口",L"安装错误",MB_ICONERROR); } } InitCommonControls(); return 0; } |
|
沙发#
发布于:2014-07-26 23:31
我也是遇到这种问题,楼主解决了吗?
|
|