Фильтров может быть много и соответственно сервер должен разбираться в последовательности применения фильтров. Есть определенные правила по поводу применения фильтров.
Раз приоритеты есть, то о них нужно знать. Вот какие они бывают:
Приоритет вы уже устанавливаете при создании фильтра. Вот в этом окне на Step 2.
В коде приоритет устанавливается как флаг в функции GetFilterVersion. Мы с Вами об этой функции поговорим еще отдельно, а приоритет устанавливается так:
BOOL CMyFilterFilter::GetFilterVersion(PHTTP_FILTER_VERSION pVer) { ...... // Set the flags we are interested in // Первый флаг pVer->dwFlags |= SF_NOTIFY_ORDER_LOW | SF_NOTIFY_SECURE_PORT | SF_NOTIFY_NONSECURE_PORT | SF_NOTIFY_URL_MAP | SF_NOTIFY_END_OF_NET_SESSION; ...... return TRUE; }
Давайте перекомпилируем наш MyFilter, только заменив приоритет на SF_NOTIFY_ORDER_HIGH и посмотрим, что будет в IIS. Внимание !!! Компилировать надо как Release и Shared DLL !!! Результат должен выглядеть как на рисунке, а на нем виден приоритет и видна зеленая стрелка вверх, говорящая о активности фильтра.