Condividi tramite


Funzione di callback PFNKSPINSETDEVICESTATE (ks.h)

La routine avStrMiniPinSetDeviceState di AVStream viene chiamata quando lo stato di una struttura KSPIN di viene modificato a causa dell'arrivo di una proprietà di 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 cambia.

[in] ToState

La destinazione KSSTATE dopo la ricezione dell'IOCTL.

[in] FromState

Precedente KSSTATE.

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 Filter Control Mutex in AVStream.

Osservazioni

Il minidriver specifica l'indirizzo di questa routine nel membro SetDeviceState della struttura KSPIN_DISPATCH.

I minidriver non riceveranno un arresto al momento della connessione iniziale del pin.

I pin che usano il meccanismo di trasporto standard (interfaccia standard/supporto standard o un uso esplicito di KSPIN_FLAG_USE_STANDARD_TRANSPORT in KSPIN_DESCRIPTOR_EX) ricevono modifiche dello stato filtrato 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 di stato ricevute in questa routine rappresentano lo stato della pipe nel suo complesso, non il singolo stato del pin come indicato nel DeviceState membro della struttura KSPIN.

I pin che non usano il meccanismo di trasporto standard (interfaccia non standard, supporto non standard o uso esplicito di KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT in KSPIN_DESCRIPTOR_EX) ricevono modifiche di 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 passaggio da KSSTATE_RUN a KSSTATE_STOP senza intervenire KSSTATE_PAUSE. Inoltre, lo stato segnalato a questa routine sarà identico allo stato segnalato nel DeviceState membro della struttura KSPIN pertinente.

Questa routine è facoltativa.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile in Microsoft Windows XP e nei sistemi operativi successivi e in DirectX 8.0 e versioni successive di DirectX.
piattaforma di destinazione Desktop
intestazione ks.h (include Ks.h)
IRQL PASSIVE_LEVEL

Vedere anche

KSPIN_DISPATCH