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 |