変更フィルター ドライバーの INF ファイルの構成

次の NDIS フィルター ドライバーのインストールの問題は、フィルター ドライバーの変更に関連付けられています。 独自の変更フィルター ドライバー INF ファイルを作成するには、サンプル NDIS 6.0 フィルター ドライバーを調整して使うこともできます。

  • INF ファイルの NetServiceクラス INF ファイル エントリを設定します。 次の例は、INF ファイルのサンプル クラス エントリを示しています。

    Class = NetService
    
  • フィルター ドライバー INF ファイルの DDInstall セクションには、特性エントリが必要です。 次の例は、フィルター INF ファイルで特性エントリを定義する方法を示しています。

    Characteristics=0x40000
    

    0x40000値は、NCF_LW_FILTER (0x40000) が設定されていることを示します。 フィルター ドライバーでは、NCF_FILTER (0x400) フラグを設定しないでください。 NCF_ Xxx フラグの値は Netcfgx.h で定義されています。 NCF_ Xxx フラグの詳細については、「ネットワーク INF ファイルの DDInstall セクション」を参照してください。

  • 次の例に示すように、NetCfgInstanceId INF ファイル エントリを INF ファイルに設定します。

    NetCfgInstanceId="{5cbf81bd-5055-47cd-9055-a76b2b4e3697}"
    

    Uuidgen.exe ツールを使用して、NetCfgInstanceId エントリの GUID を作成できます。

  • フィルター ドライバーの INF ファイルの DDInstall セクションには、Ndi キーの Addreg ディレクティブを含める必要があります。 INF ファイルでは、Ndi キーの下にサービス エントリを指定する必要があります。 INF ファイルの service-install セクションの ServiceBinary エントリは、フィルター ドライバーのバイナリへのパスを指定します。 詳細については、「Ndi キーにサービス関連の値を追加する」と「ネットワーク INF ファイルの DDInstall.Services セクション」を参照してください。

  • フィルター ドライバー INF ファイルの DDInstall セクションには、FilterType エントリと FilterRunType エントリが必要です。 変更フィルターを指定するには、次の 例に示すように、INF ファイルで FilterType エントリを定義します。

    HKR, Ndi,FilterType,0x00010001 ,0x00000002
    

    FilterType 値 0x00000002 は、フィルターが変更中のフィルターであることを示します。

  • 次の例に示すように、INF ファイルで FilterRunType エントリを定義します。

    HKR, Ndi,FilterRunType,0x00010001 ,0x00000001
    

    前の例の 0x00000001 の値は、フィルター モジュールが必須であることを示しています。 オプションのフィルター モジュールをインストールするには、FilterRunType エントリを 0x00000002 に設定します。 詳細については、「必須フィルター ドライバー」を参照してください。

  • 次の例は、変更フィルター ドライバー INF ファイルでサービスの名前を指定する方法を示しています。

    HKR, Ndi,Service,,"NdisLwf"
    

    この例では、NdisLwf は NDIS に報告されるドライバーのサービスの名前です。 フィルター ドライバーのサービスの名前は、ドライバーのバイナリの名前とは異なる場合がありますが、通常は同じであることに注意してください。

  • 次の例は、フィルター INF ファイルが、そのサービスを追加するときにフィルター ドライバーのサービスの名前を参照する方法を示しています。

    [Install.Services]
    AddService=NdisLwf,,NdisLwf_Service_Inst;, common.EventLog 
    
    [NdisLwf_Service_Inst]
    DisplayName     = %NdisLwf_Desc%
    ServiceType     = 1 ;SERVICE_KERNEL_DRIVER
    StartType       = 1 ;SERVICE_SYSTEM_START
    ErrorControl    = 1 ;SERVICE_ERROR_NORMAL
    ServiceBinary   = %13%\ndislwf.sys
    LoadOrderGroup  = NDIS
    Description     = %NdisLwf_Desc%
    AddReg          = Common.Params.reg
    
  • 次の例に示すように、フィルター INF ファイルでは、少なくとも CoServices 属性のフィルターのプライマリ サービス名を指定する必要があります。

    HKR, Ndi,CoServices,0x00010000,"NdisLwf"
    

    CoServices 属性の詳細については、「Ndi キーへのサービス関連値の追加」を参照してください。

  • フィルター ドライバーの INF ファイルの FilterClass 値は、フィルターのスタック内の順序を決定します。 フィルター ドライバーは、FilterClass キーを定義する必要があります。 ドライバーのクラスには、次の表のいずれかの値を指定できます。

    Value 説明

    スケジューラ

    パケット スケジューリング フィルター サービス。 フィルター ドライバーのこのクラスは、ドライバー スタック内の暗号化クラス フィルターの上に存在できる最上位レベルのドライバーです。 パケット スケジューラは、サービス品質 (QoS) シグナリング コンポーネントによってパケットに与えられる 802.1p 優先度分類を検出し、スケジューラはそれらのパケット レベルを優先順位に従って基になるドライバーに送信します。

    暗号化 (encryption)

    スケジューラ と圧縮クラス フィルターの間には、暗号化クラス フィルター ドライバーが存在します。

    compression

    暗号化と vpn クラス フィルターの間には、圧縮クラス フィルター ドライバーが存在します。

    vpn

    VPN クラス フィルター ドライバーは、圧縮フィルター ドライバーと負荷分散フィルター ドライバーの間に存在します。

    loadbalance

    負荷分散フィルター サービス。 このクラスのフィルター ドライバーは、パケット スケジューリング ドライバーとフェールオーバー ドライバーの間に存在します。 負荷分散フィルター サービスは、基になる一連のミニポート アダプターにワークロードを分散することによって、パケット転送のワークロードのバランスを取ります。

    failover

    フェールオーバー フィルター サービス。 このクラスのフィルター ドライバーは、負荷分散ドライバーと診断ドライバーの間に存在します。

    診断

    診断フィルター ドライバーは、スタック内のフェールオーバー ドライバーの下に存在します。

    カスタム

    カスタム クラスのフィルター ドライバーは、診断ドライバーの下に存在します。

    provider_address

    プロバイダー アドレス フィルター ドライバーは、インボックス Hyper-V ネットワーク仮想化 ms_wnv フィルターの下に存在し、プロバイダー アドレス (PA) パケットで動作します。

: 複数のフィルター ドライバーに同じ FilterClass がある場合、それらはすべてフィルター ドライバーの階層化されたスタックに追加されます。 システムは、同じ FilterClass を持つ各変更フィルター ドライバーに階層化順序を割り当てます。 場合によっては、システム管理者は、同じ FilterClass を持つフィルター ドライバーの相対順序を再配置できます。

次の例は、サンプルの FilterClass を示しています。

HKR, Ndi,FilterClass,, compression
  • Hyper-V 拡張スイッチでは、Hyper-V スイッチ拡張フィルター ドライバーのみが有効です。 Hyper-V 拡張可能スイッチ フィルター ドライバーは、次の表のいずれかの値を持つ FilterClass キーを定義する必要があります。

    Value 説明

    ms_switch_capture

    NDIS 6.30 以降では、キャプチャ ドライバーは Hyper-V 拡張可能スイッチ ドライバー スタック内のパケット トラフィックを監視します。 フィルター ドライバーのこのクラスは、スタック内のカスタム ドライバーの下に存在します。

    このクラスのドライバーの詳細については、「キャプチャ拡張機能」を参照してください。

    ms_switch_filter

    NDIS 6.30 以降では、フィルター ドライバーは、パケット トラフィックをフィルター処理し、拡張可能スイッチ ドライバー スタックを介してパケット配信のポートまたはスイッチ ポリシーを適用します。 このクラスのフィルター ドライバーは、スタック内 ms_switch_capture ドライバーの下に存在します。

    このクラスのドライバーの詳細については、「フィルタリング拡張機能」を参照してください。

    ms_switch_forward

    NDIS 6.30 以降、転送ドライバー フィルターは、フィルター ドライバーと同じ機能を実行します。 また、転送ドライバーは拡張可能スイッチ ポートとの間でもパケットを転送します。 このクラスのフィルター ドライバーは、スタック内 ms_switch_filter ドライバーの下に存在します。

    この種類のドライバーの詳細については、「転送の拡張機能」を参照してください。

  • ドライバーのバインドを制御するには、変更フィルター ドライバー INF ファイルで次のエントリを定義する必要があります。

    HKR, Ndi\Interfaces,UpperRange,,"noupper"
    HKR, Ndi\Interfaces,LowerRange,,"nolower"
    HKR, Ndi\Interfaces, FilterMediaTypes,,"ethernet"
    

    ドライバー バインドの制御の詳細については、「フィルター ドライバー のバインドリレーションシップの指定」を参照してください。

  • 変更フィルター INF ファイルでは、ドライバーの共通パラメーター定義と、特定のアダプターに関連付けられているパラメーターを指定できます。 いくつかの一般的なパラメーター定義の例を次に示します。

注意

HKR AddReg を使用してキーをすぐにサービス状態にすることは、コンプライアンス違反です。 準拠するには、これらのキーをサービスの Parameters キーの下に追加する必要があります。

[Common.Params.reg]

HKR, FilterDriverParams\DriverParam,  ParamDesc, , "Driverparam for lwf"
HKR, FilterDriverParams\DriverParam,  default, , "5"
HKR, FilterDriverParams\DriverParam,  type,  , "int"

HKR, FilterAdapterParams\AdapterParam,  ParamDesc, , "Adapterparam for lwf"
HKR, FilterAdapterParams\AdapterParam,  default, , "10"
HKR, FilterAdapterParams\AdapterParam,  type,  , "int"