2
我正在尝试编写以编程方式安装NDIS 6.0轻量级筛选器驱动程序的C++代码。 在审查了WinDDK,在线示例和MSDN文档后,我最终以 下面的代码示例。 (为清晰起见,错误处理被忽略) 问题是INetCfgClassSetup :: Install总是返回错误0x8004a024。 (我在头文件中找不到错误代码。)以编程方式安装NDIS筛选器驱动程序
使用相同的.inf文件手动安装驱动程序可以正常工作。
从WinDDK的Bindview示例安装驱动程序就好,只要 它需要调用INetCfgClassSetup :: SelectAndInstall的路径。使用INetCfgClassSetup :: Install的替代路径 不起作用。
在我的机器上启用了内核调试,因此不需要驱动程序签名。
下面的代码有什么问题吗?
谢谢。
....
isCopied = SetupCopyOEMInfA(pathToInf, // path to inf file
pathToBin, // dir containing driver binary
SPOST_PATH,
0,
DestinationInfFileName,
256,
NULL,
NULL);
....
INetCfg *pnc = NULL;
INetCfgClassSetup *pncClassSetup = NULL;
HRESULT hr;
OBO_TOKEN OboToken;
....
hr = CoCreateInstance(CLSID_CNetCfg,
NULL, CLSCTX_INPROC_SERVER,
IID_INetCfg,
(void**)&pnc);
....
hr = pnc->QueryNetCfgClass (&GUID_DEVCLASS_NETSERVICE,
IID_INetCfgClassSetup,
(void**)&pncClassSetup);
....
ZeroMemory(&OboToken, sizeof(OboToken));
OboToken.Type = OBO_USER;
//
// this call fails:
hr = pncClassSetup->Install(COMPONENT_ID,
&OboToken,
0,
0,
0,
0,
NULL);
有道理。不幸的是,获得一个锁并没有解决问题。错误代码更改为800f0203。 – glagolig 2012-04-27 23:00:34
原来我在QueryNetCfgClass(GUID_DEVCLASS_NETTRANS而不是GUID_DEVCLASS_NETSERVICE)中使用了错误的GUID。使用正确的GUID一切正常。 – glagolig 2012-04-28 02:12:05