Funzione KsAllocateExtraData (ks.h)
La funzione KsAllocateExtraData viene usata con i runtime di integrazione di streaming per allocare un buffer in modo da contenere dati di intestazione aggiuntivi. Viene restituito un puntatore al buffer allocato e il buffer deve essere liberato dal chiamante.
Sintassi
KSDDKAPI NTSTATUS KsAllocateExtraData(
[in, out] PIRP Irp,
[in] ULONG ExtraSize,
[out] PVOID *ExtraBuffer
);
Parametri
[in, out] Irp
Specifica l'IRP contenente le intestazioni del flusso. L'IRP deve essere stato passato in precedenza a KsProbeStreamIrp per memorizzare nel buffer le intestazioni.
[in] ExtraSize
Specifica le dimensioni, in byte, di memoria aggiuntiva da allocare tra ogni intestazione di flusso. Questo valore deve essere allineato su un limite di otto byte. Una copia delle intestazioni viene inserita nel buffer restituito, con le dimensioni aggiuntive dei dati inserite tra ogni intestazione. Questo deve essere liberato dal chiamante.
[out] ExtraBuffer
Punta a un puntatore allocato dal chiamante che, al completamento, punta a un buffer allocato dal sistema contenente le intestazioni del flusso e la spaziatura interna richiesta tra di esse. Questo deve essere liberato dal chiamante.
Valore restituito
La funzione KsAllocateExtraData restituisce STATUS_SUCCESS in caso di esito positivo oppure restituisce una risorsa o un errore di accesso.
Osservazioni
Quando KsAllocateExtraData viene completato correttamente, viene restituito un puntatore a un blocco di memoria che contiene entrambe le intestazioni di dati del flusso dall'IRP, specificate in Irpe la spaziatura interna tra ogni intestazione di dimensione specificata in ExtraSize. Di seguito è riportato un esempio di buffer risultante:
Quando il buffer aggiuntivo non è più necessario, la memoria deve essere liberata usando ExFreePool.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
intestazione | ks.h (include Ks.h) |
libreria | Ks.lib |
IRQL | < DISPATCH_LEVEL |