Condividi tramite


Funzione di callback PFNKSALLOCATOR (ks.h)

I minidriver possono facoltativamente fornire una funzione di callback di tipo PFNKSALLOCATOR come parametro nelle chiamate a KsEnableEventWithAllocator, KsPropertyHandlerWithAllocatorWithAllocator e KsMethodHandlerWithAllocator.

Sintassi

PFNKSALLOCATOR Pfnksallocator;

NTSTATUS Pfnksallocator(
  [in] PIRP Irp,
  [in] ULONG BufferSize,
  [in] BOOLEAN InputOperation
)
{...}

Parametri

[in] Irp

Specifica l'IRP per cui viene effettuata la richiesta di allocazione del buffer.

[in] BufferSize

Specifica le dimensioni del buffer necessarie. Questa dimensione copre tutti i parametri della richiesta.

[in] InputOperation

Impostare su TRUE se si tratta di un'operazione di input, ovvero in caso di esito positivo, il campo Irp-IoStatus.Information> conterrà il numero di byte da copiare nel buffer di input originale.

Valore restituito

Restituisce STATUS_SUCCESS se la richiesta viene gestita. In caso contrario, restituisce un codice di errore appropriato.

Commenti

In genere, la memoria del pool viene usata per le allocazioni del buffer. Ciò consente ai filtri che passano query di evento, proprietà e metodo direttamente all'hardware per evitare copie di dati aggiuntive consentendo loro di fornire il buffer in cui tali dati vengono inseriti dalle funzioni di gestione standard. Quindi, un filtro può avere blocchi di memoria già mappati a un adattatore da cui possono verificarsi le allocazioni del buffer.

Poiché questa memoria presumibilmente non è tipica memoria allocata dal pool, il filtro deve eseguire la pulizia del buffer al completamento dell'Irp. Ciò significa che per le operazioni di input da usermode che non sono sincrone, l'allocatore deve allocare un MDL per il buffer di destinazione, il probe e bloccarlo e recuperare un indirizzo di sistema. Questa operazione deve essere eseguita per abilitare la copia dei dati restituiti nel buffer originale.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione ks.h (include Ks.h)