Condividi tramite


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:

Diagramma che illustra un 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