Função de retorno de chamada PFNKSPINSETDEVICESTATE (ks.h)

A rotina AVStrMiniPinSetDeviceState de um minidriver AVStream é chamada quando o estado de uma estrutura KSPIN é alterado devido à chegada de uma propriedade de estado de conexão 'set' IOCTL. Normalmente, isso será fornecido por minidrivers que precisam alterar o estado do hardware.

Sintaxe

PFNKSPINSETDEVICESTATE Pfnkspinsetdevicestate;

NTSTATUS Pfnkspinsetdevicestate(
  [in] PKSPIN Pin,
  [in] KSSTATE ToState,
  [in] KSSTATE FromState
)
{...}

Parâmetros

[in] Pin

Ponteiro para a estrutura KSPIN para a qual o estado está sendo alterado.

[in] ToState

O KSSTATE de destino após o recebimento do IOCTL.

[in] FromState

O KSSTATE anterior.

Retornar valor

Retornar STATUS_SUCCESS ou o código de erro retornado da tentativa de definir o estado. Não retorne STATUS_PENDING. O mutex de controle de filtro é mantido durante essa função. Consulte Mutex de controle de filtro no AVStream.

Comentários

O minidriver especifica o endereço dessa rotina no membro SetDeviceState de sua estrutura KSPIN_DISPATCH .

Os minidrivers não receberão uma parada após a conexão inicial do pino.

Os pinos que usam o mecanismo de transporte padrão (interface padrão/meio padrão ou um uso explícito de KSPIN_FLAG_USE_STANDARD_TRANSPORT em KSPIN_DESCRIPTOR_EX) recebem alterações de estado filtradas por meio do pipe proprietário por meio dessa rotina. Isso significa que nenhuma transição será mais do que uma única etapa. Em outras palavras, KSSTATE_STOP faz a transição para KSSTATE_ACQUIRE, KSSTATE_ACQUIRE faz transições para KSSTATE_PAUSE e assim por diante. Além disso, as alterações de estado recebidas nessa rotina representam o estado do pipe como um todo, não o estado individual do pino, conforme relatado no membro DeviceState da estrutura KSPIN.

Os pinos que não usam o mecanismo de transporte padrão (interface não padrão, meio não padrão ou um uso explícito de KSPIN_FLAG_DO_NOT_USE_STANDARD_TRANSPORT em KSPIN_DESCRIPTOR_EX) recebem alterações de estado não filtrados por meio dessa rotina. Dessa forma, os pinos de transporte não padrão devem estar preparados para lidar com alterações de estado que saltam mais de uma única etapa. Por exemplo, considere um salto de KSSTATE_RUN para KSSTATE_STOP sem uma KSSTATE_PAUSE intermediária. Além disso, o estado relatado a essa rotina será idêntico ao estado relatado no membro DeviceState da estrutura KSPIN relevante.

Essa rotina é opcional.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Microsoft Windows XP e em sistemas operacionais posteriores e no DirectX 8.0 e versões posteriores do DirectX.
Plataforma de Destino Área de Trabalho
Cabeçalho ks.h (inclua Ks.h)
IRQL PASSIVE_LEVEL

Confira também

KSPIN_DISPATCH