Funzione KsAllocateExtraData (ks.h)
La funzione KsAllocateExtraData viene usata con i runtime di integrazione di streaming per allocare un buffer per 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 del flusso. Questo valore deve essere allineato su un limite di otto byte. Una copia delle intestazioni viene inserita nel buffer restituito, con le dimensioni dei dati aggiuntive 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.
Commenti
Quando KsAllocateExtraData viene completato correttamente, viene restituito un puntatore a un blocco di memoria che contiene entrambe le intestazioni di dati del flusso da IRP, specificate in IRP e 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.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ks.h (include Ks.h) |
Libreria | Ks.lib |
IRQL | < DISPATCH_LEVEL |