Condividi tramite


Funzione KsEnableEventWithAllocator (ks.h)

La funzione KsEnableEventWithAllocator abilita gli eventi richiesti tramite IOCTL_KS_ENABLE_EVENT, ma consente anche l'uso di un callback facoltativo dell'allocatore per fornire un buffer per i parametri. Risponde a tutti gli identificatori di evento definiti dai set. Questa funzione può essere chiamata solo in PASSIVE_LEVEL.

Se usato, il filtro potrebbe dover liberare il buffer in modo nonventionale. Si noti che i flag di IRP_BUFFERED_IO e IRP_DEALLOCATE_BUFFER non vengono impostati quando si usa un allocatore personalizzato.

Sintassi

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
);

Parametri

[in] Irp

Specifica l'IRP con la richiesta di abilitazione gestita. L'oggetto file associato all'IRP viene archiviato con l'evento per un confronto successivo durante la disabilitazione dell'evento.

[in] EventSetsCount

Indica il numero di strutture del set di eventi passate.

[in] EventSet

Specifica un puntatore all'elenco di informazioni sul set di eventi.

[in, out] EventsList

Se il KSEVENT_SET dell'evento di abilitazione. AddHandler per il set di eventi è NULL, deve puntare all'elemento head dell'elenco di KSEVENT_ENTRY elementi in cui deve essere aggiunto l'evento. Questa funzione presuppone un singolo elenco per almeno un subset di eventi.

[in, optional] EventsFlags

Specifica KSEVENTS_LOCKTYPE flag che specificano il tipo di blocco di esclusione da usare per accedere all'elenco eventi, se presente. Se non viene impostato alcun flag, non viene eseguito alcun blocco. Se è già specificato un gestore, questo parametro viene ignorato.

[in, optional] EventsLock

Se il KSEVENT_SET. AddHandler per il set di eventi contenente l'evento abilitato è NULL, quindi viene usato per sincronizzare l'accesso all'elenco. Questo valore può essere NULL se non viene impostato alcun flag in EventsFlags.

[in, optional] Allocator

Facoltativamente, punta a una funzione di allocazione che verrà usata per allocare la memoria per archiviare i parametri dell'evento.

[in, optional] EventItemSize

Facoltativamente, contiene le dimensioni di ogni struttura KSEVENT_ITEM in ogni elenco di eventi. L'elemento evento può essere esteso per archiviare informazioni private. Se questo parametro è zero, si presuppone che la dimensione della struttura sia normale. Se è maggiore o uguale a una struttura dell'elemento evento, è possibile utilizzare la macro KSEVENT_ITEM_IRP_STORAGE per restituire un puntatore all'elemento evento in modo che i dati personalizzati possano essere recuperati. Nelle piattaforme a 64 bit, questo parametro deve essere un multiplo di 8.

Valore restituito

Uguale a KsEnableEvent, che restituisce STATUS_SUCCESS se ha esito positivo o un errore specifico dell'evento abilitato se non è riuscito. La funzione imposta sempre il IO_STATUS_BLOCK. Campo informazioni del PIRP. Elemento IoStatus all'interno dell'oggetto IRP su zero. Non imposta la IO_STATUS_BLOCK. Campo stato, né completa l'IRP.

Commenti

Se viene usato il callback facoltativo dell'allocatore, il filtro potrebbe dover liberare il buffer in modo nonventionale. Si noti che i flag di IRP_BUFFERED_IO e IRP_DEALLOCATE_BUFFER non vengono impostati quando si usa un allocatore personalizzato.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione ks.h (include Ks.h)
Libreria Ks.lib