KsEnableEventWithAllocator 関数 (ks.h)

KsEnableEventWithAllocator 関数は、IOCTL_KS_ENABLE_EVENTを介して要求されたイベントを有効にしますが、パラメーターのバッファーを提供するために省略可能なアロケーター コールバックを使用することもできます。 セットによって定義されたすべてのイベント識別子に応答します。 この関数は、PASSIVE_LEVELでのみ呼び出すことができます。

フィルターを使用する場合、何らかの非伝統的な方法でバッファーを解放する必要がある場合があります。 カスタム アロケーターを使用する場合、IRP_BUFFERED_IOフラグとIRP_DEALLOCATE_BUFFER フラグは設定されないことに注意してください。

構文

KSDDKAPI NTSTATUS KsEnableEventWithAllocator(
  [in]           PIRP              Irp,
  [in]           ULONG             EventSetsCount,
  [in]           const KSEVENT_SET *EventSet,
  [in, out]      PLIST_ENTRY       EventsList,
  [in, optional] KSEVENTS_LOCKTYPE EventsFlags,
  [in, optional] PVOID             EventsLock,
  [in, optional] PFNKSALLOCATOR    Allocator,
  [in, optional] ULONG             EventItemSize
);

パラメーター

[in] Irp

処理される有効化要求を含む IRP を指定します。 IRP に関連付けられているファイル オブジェクトは、イベントを無効にするときに、後で比較するために イベントと共に格納されます。

[in] EventSetsCount

渡されるイベント セット構造体の数を示します。

[in] EventSet

イベント セット情報の一覧へのポインターを指定します。

[in, out] EventsList

有効化イベントのKSEVENT_SET場合。AddHandler for the event set is NULL, it must point to the list of the list of KSEVENT_ENTRY items which which the event is be added. この関数は、少なくともイベントのサブセットに対して 1 つのリストを想定しています。

[in, optional] EventsFlags

イベント リスト KSEVENTS_LOCKTYPE アクセスに使用する除外ロックの種類を指定するフラグを指定します (存在する場合)。 フラグが設定されていない場合、ロックは行われません。 ハンドラーが既に指定されている場合、このパラメーターは無視されます。

[in, optional] EventsLock

KSEVENT_SET場合。有効になっているイベントを含むイベント セットの AddHandler は NULL であり、これはリストへのアクセスを同期するために使用されます。 EventsFlags にフラグが設定されていない場合、この値は NULL にすることができます。

[in, optional] Allocator

必要に応じて、イベント パラメーターを格納するメモリの割り当てに使用される割り当て関数を指します。

[in, optional] EventItemSize

必要に応じて、イベントの各リスト内の各KSEVENT_ITEM構造体のサイズを格納します。 イベント 項目は、個人情報を格納するために拡張できます。 このパラメーターが 0 の場合、構造体のサイズは通常と見なされます。 イベント項目構造以上の場合は、カスタム データを取得できるように、KSEVENT_ITEM_IRP_STORAGE マクロを使用してイベント項目へのポインターを返すことができます。 64 ビット プラットフォームでは、このパラメーターは 8 の倍数である必要があります。

戻り値

KsEnableEvent と同じです。成功した場合はSTATUS_SUCCESSを返し、失敗した場合は有効になっているイベントに固有のエラーを返します。 関数は常にIO_STATUS_BLOCKを設定します。PIRP の情報フィールド。IRP 内の IoStatus 要素を 0 にします。 IO_STATUS_BLOCKは設定されません。状態フィールドは、IRP を完了しません。

注釈

省略可能なアロケーター コールバックを使用する場合、フィルターは、何らかの非伝統的な方法でバッファーを解放する必要がある場合があります。 カスタム アロケーターを使用する場合、IRP_BUFFERED_IOフラグとIRP_DEALLOCATE_BUFFER フラグは設定されないことに注意してください。

要件

要件
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)
Library Ks.lib