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 |