2012-01-03 3 views
2

Недавно мы добавили возможности Windows Filtering Platform для нашего драйвера.с использованием платформы фильтрации Windows в драйвере ядра

Нам не удалось найти необходимую информацию из wfp, но проблема в процессе загрузки - поскольку мы добавили возможности wfp, машины, использующие драйвер, не могут загрузиться - они получают тупик (компьютер " застрял "в заставке).

Мы полагали, что это связано с тем, что наш драйвер зависит только от FltMgr и, вероятно, загружен до загрузки платформы wfp (TcpStack?).

Мой вопрос: есть ли способ обратиться к диспетчеру службы или любому другому органу, загружена ли фреймворк wfp? или даже дальше - то, что - драйверы wfp зависит от? (поэтому я мог проверить, загружены ли они до начала использования)

ответ

2

Вот что я делаю в DriverEntry.

// 
// Wait for the WFP engine to be ready. 
// 

FWPM_SERVICE_STATE bfeState; 

bfeState = FwpmBfeStateGet0(); 
if (bfeState != FWPM_SERVICE_RUNNING) 
{ 
    WaitTime.QuadPart = (-5000000); // wait 500000us (500ms) relative 
    do { 
     KeDelayExecutionThread (KernelMode, FALSE, &WaitTime); 
     bfeState = FwpmBfeStateGet0(); 
     WaitCycles--; 
    } while (bfeState != FWPM_SERVICE_RUNNING && WaitCycles > 0); 
} 

if (bfeState != FWPM_SERVICE_RUNNING) 
{ 
    // log and error handling 
} 
+0

Благодаря питер, используя бит кода, который в проводке я нашел следующую функцию обратного вызова: http://msdn.microsoft.com/en-us/library/windows/hardware/ff550062(v=VS. 85) .aspx, и это сделало трюк. благодаря! – sternr

+0

ах, да. Метод обратного вызова, который вы нашли, должен работать лучше. Благодаря! – Peter

 Смежные вопросы

  • Нет связанных вопросов^_^