我尝试写C ++代码编程安装NDIS 6.0轻型筛选器驱动程序。 审查WINDDK,网上的例子和MSDN文档后,我结束了与下面的代码示例。 (错误处理跳过了清晰程度)的问题是,INetCfgClassSetup ::安装总是返回错误0x8004a024。 (我找不到在头文件中的错误代码。)
使用相同的.inf文件中的驱动程序手动安装工程只是罚款。
从WINDDK的Bindview样就好了,只要它采取的路径调用INetCfgClassSetup :: SelectAndInstall安装驱动程序。 使用INetCfgClassSetup ::安装不起作用的替代路径。
内核调试,因此不需要驱动程序签名在我的机器上启用。
什么不对下面的代码?
谢谢。
....
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);