использование платформы фильтрации Windows в драйвере ядра - PullRequest
2 голосов
/ 03 января 2012

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

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

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

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

1 Ответ

2 голосов
/ 13 января 2012

Вот что я делаю в 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
}
...