監視フィルター ドライバーの INF ファイルの構成

次の NDIS フィルター ドライバーのインストールの問題は、フィルター ドライバーの監視に関連しています。

  • 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="{5cbf81bf-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 ,0x00000001
    

    FilterType 値は、フィルターが監視フィルターであることを示す0x00000001。

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

    HKR, Ndi,FilterRunType,0x00010001 ,0x00000002
    

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

    注: LWF ドライバーを変更するオプションがない制御された環境で使用する場合を除き、監視ライトウェイト フィルター (LWF) ドライバーを必須にしないことを強くお勧めします。 これは、必須の監視 LWF ドライバーにより、省略可能な変更 LWF ドライバーが FilterAttach に失敗する可能性があるためです。 監視 LWF ドライバーは、すべての変更フィルターにバインドされ、すべてのレベルでネットワーク トラフィックの監視を容易にするために設計によってバインドされます。 以下のシナリオについて考えてみます。

    • 必須の監視 LWF ドライバーのインスタンスは、オプションの変更 LWF ドライバーの上にインストールされます。
    • 下位の変更オプションの LWF ドライバは、下位コンポーネントに接続できません。 これにより、必須の監視 LWF ドライバーの FilterAttach ハンドラーが呼び出されません。
    • 必須の LWF ドライバーのインスタンスが読み込まれなくなったため、NDIS はプロトコル (TCP/IP など) をインターフェイスまたは NIC にバインドしないため、インターフェイスが使用できなくなります。
  • 次の例は、フィルター ドライバー INF ファイルでサービスの名前を指定する方法を示しています。

    HKR, Ndi,Service,,"NdisMon"
    

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

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

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

    HKR, Ndi,CoServices,0x00010000,"NdisMon"
    

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

  • フィルター ドライバーの INF ファイル内の FilterClass 値は、変更フィルターのスタック内の順序を決定します。 ただし、フィルター ドライバーの監視では、FilterClass キーは定義されません。 代わりに、最初にインストールされる監視フィルター モジュールは、ミニポート アダプターに最も近いモジュールです。

  • ドライバーのバインドを制御するには、監視フィルター ドライバー 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 filter"
    HKR, FilterDriverParams\DriverParam, default, ,"5"
    HKR, FilterDriverParams\DriverParam, type,  ,"int"
    
    HKR, FilterAdapterParams\AdapterParam, ParamDesc, ,"Adapterparam for filter"
    HKR, FilterAdapterParams\AdapterParam, default, ,"10"
    HKR, FilterAdapterParams\AdapterParam, type,  ,"int"
    
    HKR, FilterInstanceParams\InstanceParam, ParamDesc, ,"Instance param for filter"
    HKR, FilterInstanceParams\InstanceParam, default, ,"15"
    HKR, FilterInstanceParams\InstanceParam, type,  ,"int"