프로그래밍 방식으로 NDIS 6.0 경량 필터 드라이버를 설치하는 C++ 코드를 작성하려고합니다. WinDDK, 온라인 예제 및 MSDN 설명서를 검토 한 결과 코드 샘플이 나왔습니다. (오류 처리가 명확하게 생략되었습니다.) 문제는 INetCfgClassSetup :: Install은 항상 오류 0x8004a024를 반환한다는 것입니다. (헤더 파일에서 오류 코드를 찾을 수 없습니다.)프로그래밍 방식으로 NDIS 필터 드라이버 설치
동일한 .inf 파일을 사용하여 드라이버를 수동 설치하면 올바르게 작동합니다.
WinDDK의 Bindview 샘플은 INetCfgClassSetup :: SelectAndInstall을 호출하는 경로를 취하는 한 드라이버를 잘 설치합니다. INSTCfgClassSetup :: 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
QueryNetCfgClass (GUID_DEVCLASS_NETSERVICE 대신 GUID_DEVCLASS_NETTRANS)에서 잘못된 GUID를 사용하고있는 것으로 나타났습니다. 올바른 GUID로 모든 것이 잘 작동합니다. – glagolig