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