Funzione di callback PFNKSPINSETDEVICESTATE (ks.h)
La routine AVStrMiniPinSetDeviceState di AVStream viene chiamata quando lo stato di una struttura KSPIN viene modificato a causa dell'arrivo di una proprietà dello stato di connessione 'set' IOCTL. In genere, questo verrà fornito da minidriver che devono modificare lo stato dell'hardware.
Sintassi
PFNKSPINSETDEVICESTATE Pfnkspinsetdevicestate;
NTSTATUS Pfnkspinsetdevicestate(
[in] PKSPIN Pin,
[in] KSSTATE ToState,
[in] KSSTATE FromState
)
{...}
Parametri
[in] Pin
Puntatore alla struttura KSPIN per il quale lo stato viene modificato.
[in] ToState
KSSTATE di destinazione dopo la ricezione dell'IOCTL.
[in] FromState
KSSTATE precedente.
Valore restituito
Restituisce STATUS_SUCCESS o il codice di errore restituito dal tentativo di impostare lo stato. Non restituire STATUS_PENDING. Il mutex del controllo filtro viene mantenuto durante questa funzione. Vedere Filtro controllo Mutex in AVStream.
Commenti
Il minidriver specifica l'indirizzo di questa routine nel membro SetDeviceState della relativa struttura di KSPIN_DISPATCH .
I minidriver non riceveranno un arresto dopo la connessione iniziale del pin.
I pin che usano il meccanismo di trasporto standard (supporto standard o medio standard o uso esplicito di KSPIN_FLAG_USE_STANDARD_TRANSPORT in KSPIN_DESCRIPTOR_EX) ricevono modifiche dello stato filtrate tramite la pipe proprietaria tramite questa routine. Ciò significa che nessuna transizione sarà più di un singolo passaggio. In altre parole, KSSTATE_STOP passa a KSSTATE_ACQUIRE, KSSTATE_ACQUIRE passa a KSSTATE_PAUSE e così via. Inoltre, le modifiche dello stato ricevute in questa routine rappresentano lo stato della pipe nel suo complesso, non il singolo stato del pin come indicato nel membro DeviceState della struttura KSPIN.
I pin che non usano il meccanismo di trasporto standard (interfaccia non standard, media non standard o un uso esplicito di KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT in KSPIN_DESCRIPTOR_EX) ricevono modifiche dello stato non filtrate tramite questa routine. Di conseguenza, i pin di trasporto non standard devono essere preparati a gestire le modifiche dello stato che saltano più di un singolo passaggio. Si consideri, ad esempio, un salto da KSSTATE_RUN a KSSTATE_STOP senza intervenire KSSTATE_PAUSE. Inoltre, lo stato segnalato a questa routine sarà identico allo stato segnalato nel membro DeviceState della struttura KSPIN pertinente.
Questa routine è facoltativa.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile in Microsoft Windows XP e versioni successive e DirectX 8.0 e versioni successive di DirectX. |
Piattaforma di destinazione | Desktop |
Intestazione | ks.h (include Ks.h) |
IRQL | PASSIVE_LEVEL |