-->

编程安装NDIS过滤驱动程序(programmatically installing NDIS fi

2019-09-16 17:54发布

我尝试写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);

Answer 1:

错误代码0x8004a024代表NETCFG_E_NO_WRITE_LOCK。 安装功能需要一个写锁,以便尝试获得一个与INetCfg-> AcquireWriteLock。 不要忘了最终解除锁定,然后界面。



文章来源: programmatically installing NDIS filter driver