【发布时间】:2012-05-05 17:16:21
【问题描述】:
我正在尝试编写 C++ 代码以编程方式安装 NDIS 6.0 轻量级过滤器驱动程序。 在查看了 WinDDK、在线示例和 MSDN 文档后,我最终得到了 下面的代码示例。 (为清楚起见,跳过了错误处理) 问题是 INetCfgClassSetup::Install 总是返回错误 0x8004a024。 (我在头文件中找不到错误代码。)
使用相同的 .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);
【问题讨论】:
标签: windows networking driver ndis