Funzione KsRecalculateStackDepth (ks.h)
La funzione KsRecalculateStackDepth ricalcola la profondità massima dello stack richiesta dall'oggetto dispositivo sottostante in base a tutti gli oggetti che hanno impostato un dispositivo di destinazione (sono stati aggiunti all'elenco di oggetti nell'oggetto dispositivo sottostante usando la funzione KsSetTargetDeviceObject ). Se l'oggetto dispositivo PnP è stato impostato sull'intestazione del dispositivo sottostante usando KsSetDevicePnpAndBaseObject, tale dispositivo viene preso in considerazione anche quando si calcola la profondità massima dello stack.
Sintassi
KSDDKAPI VOID KsRecalculateStackDepth(
[in] KSDEVICE_HEADER Header,
[in] BOOLEAN ReuseStackLocation
);
Parametri
[in] Header
Punta a un'intestazione allocata in precedenza da KsAllocateDeviceHeader.
[in] ReuseStackLocation
Se questa opzione è impostata su TRUE, la posizione dello stack corrente viene riutilizzata quando viene inoltrato qualsiasi IRP. Ciò significa che questo oggetto non richiede la propria posizione dello stack durante l'inoltro di IRP e una posizione aggiuntiva non viene aggiunta alle dimensioni massime dello stack. Se impostato su FALSE, la dimensione dello stack calcolato viene incrementata di una. Se lo stack di oggetti Pnp è impostato, il parametro di riutilizzo si applica anche a tale stack. Si noti che KsDefaultDispatchPnp riutilizza sempre la posizione dello stack corrente. La profondità minima dello stack è 1.
Valore restituito
nessuno
Osservazioni
La funzione KsRecalculateStackDepth presuppone che KsSetDevicePnpAndBaseObject sia stato chiamato su questa intestazione del dispositivo e abbia assegnato un oggetto base la cui profondità dello stack deve essere ricalcolata.
Questa funzione consente l'inoltro di IRP tramite un oggetto garantendo che qualsiasi IRP allocata in questo dispositivo disponga di posizioni di stack sufficienti per consentire l'inoltro. La profondità dello stack deve essere ricalcolata in un dispositivo di streaming quando il dispositivo passa da uno stato di arresto. Può anche essere ricalcolato quando un oggetto viene liberato per risparmiare risorse.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ks.h (include Ks.h) |
Libreria | Ks.lib |