Funzione KsForwardAndCatchIrp (ks.h)

La funzione KsForwardAndCatchIrp inoltra un IRP al driver specificato dopo l'inizializzazione della posizione successiva dello stack e recupera il controllo dell'IRP al completamento da tale driver. La funzione viene usata con i dispositivi che possono essere impilati e non usano oggetti file per comunicare.

Se viene usato un oggetto file, il chiamante deve inizializzare il percorso dello stack corrente con tale oggetto file prima di chiamare la funzione KsForwardAndCatchIrp . La funzione verifica che sia presente una nuova posizione dello stack in cui eseguire la copia prima di tentare di eseguire questa operazione. Se non è presente una nuova posizione dello stack, la funzione restituisce STATUS_INVALID_DEVICE_REQUEST. Indipendentemente dal fatto che sia presente una nuova posizione dello stack, l'IRP non viene completato.

Sintassi

KSDDKAPI NTSTATUS KsForwardAndCatchIrp(
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PIRP           Irp,
  [in] PFILE_OBJECT   FileObject,
  [in] KSSTACK_USE    StackUse
);

Parametri

[in] DeviceObject

Specifica il dispositivo a cui inoltrare l'IRP.

[in] Irp

Specifica l'IRP inoltrato al driver specificato.

[in] FileObject

Specifica un valore dell'oggetto file da copiare nel percorso dello stack successivo. Può essere NULL per non impostare alcun oggetto file, ma il valore viene sempre copiato nel percorso dello stack successivo. Se l'oggetto file corrente deve essere mantenuto, deve essere passato in questo parametro.

[in] StackUse

Specifica un valore enumerato da KSSTACK_USE. Se il valore è KsStackCopyToNewLocation, i parametri vengono copiati nella posizione successiva dello stack. Se il valore è KsStackReuseCurrentLocation, la posizione dello stack corrente viene riutilizzata quando l'IRP viene inoltrato e la posizione dello stack viene restituita alla posizione corrente. Se il valore è KsStackUseNewLocation, la nuova posizione dello stack viene usata così come è.

Valore restituito

La funzione KsForwardAndCatchIrp restituisce il risultato di IoCallDriver oppure restituisce uno stato non valido se non è disponibile alcuna profondità dello stack.

Commenti

Il tipo KSSTACK_USE'enumerazione specifica come viene usato lo stack IRP durante l'inoltro dell'IRP al driver successivo.

Enumerazione Descrizione
KsStackCopyToNewLocation Indica che i parametri devono essere copiati nella posizione successiva dello stack.
KsStackReuseCurrentLocation Indica che la posizione dello stack corrente deve essere riutilizzata.
KsStackUseNewLocation Indica che la posizione successiva dello stack deve essere usata senza modifiche.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Intestazione ks.h (include Ks.h)
Libreria Ks.lib