Установка драйвера фильтра программно?

Я пытаюсь написать код C++, программно устанавливая легкий драйвер фильтра NDIS 6.0. Изучив WinDDK, онлайн-примеры и документацию MSDN, я остановился на приведенном ниже примере кода.

**************
hr = InstallSpecifiedComponent(
        ModuleFileName,
        L"MS_NdisLwf",
        &GUID_DEVCLASS_NETSERVICE
        );
**************

hr = HrInstallNetComponent( 
        pnc,
        lpszPnpID,
        pguidClass,
        lpszInfFile     
         );
**************
   if ( !SetupCopyOEMInfW(lpszInfFullPath,
                       DirWithDrive,  // Other files are in the same dir.as primary INF
                           SPOST_PATH,    // SPOST_NONE, //First param is path to INF
                           0,             // Default copy style
                           NULL,// Name of the INF after it's copied to %windir%\inf
                           0,            // Max buf. size for the above
                           NULL,          // Required size if non-null
                           NULL) // Optionally get the filename part of Inf name 
                                 after it is copied.
                        ) 
        {
            ---- 
        }

***************     
hr = HrInstallComponent( pnc,
                             lpszComponentId,
                             pguidClass );

***************

hr = pnc->QueryNetCfgClass ( pguidClass,
                         IID_INetCfgClassSetup,
                         (void**)&pncClassSetup );                           

if ( hr == S_OK ) {

wprintf(L"\n No Test\n");

hr = pncClassSetup->Install( szComponentId,
                             &OboToken,
                             0,
                             0,       // Upgrade from build number.
                             NULL,    // Answerfile name
                             NULL,    // Answerfile section name
                             &pncc ); // Reference after the component          
if ( S_OK == hr ) {  ... }                 // is installed.

Путь с использованием INetCfgClassSetup::Install не работает.

Он использует путь по умолчанию в параметрах просмотра диска.

например: мой путь к файлу inf - C:\Users\Mani\Desktop\sagar\objchk_win7_x86\i386\netlwf.inf

но он запрашивает путь по умолчанию (1-я запись) в меню диска

д:\программное обеспечение\фильтр_драйвер

похоже на изображение ==> http://i.stack.imgur.com/tmyMX.png< /а>

Он всегда запрашивает один и тот же файл sys.

Что-то пропало?


person arya2arya    schedule 04.03.2014    source источник
comment
Можете ли вы также поделиться INF?   -  person Jeffrey Tippet    schedule 05.03.2014
comment
Пожалуйста, проверьте ссылку, по которой мой файл inf почти аналогичен по своей природе INF_FILE   -  person arya2arya    schedule 05.03.2014


Ответы (1)


Вашему вопросу больше года, и я надеюсь, что вы нашли решение. Ради разработчиков, сталкивающихся с той же проблемой, я публикую этот ответ.

Начните с проекта ProtInstall на ndis.com

http://www.ndis.com/ndis-general/ndisinstall/programinstall.htm

вам может потребоваться внести некоторые изменения: включить заголовочные файлы, библиотеки; и немного отладки.

Кроме этого, этот проект работает, и я успешно установил и удалил образец проекта ndislwf 6.0 через него.

person Community    schedule 08.04.2014