Método IAsyncReader::Request (strmif.h)
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
O Request
método enfileira uma solicitação assíncrona de dados.
Sintaxe
HRESULT Request(
IMediaSample *pSample,
[in] DWORD_PTR dwUser
);
Parâmetros
pSample
Ponteiro para a interface IMediaSample de um exemplo de mídia fornecido pelo chamador.
[in] dwUser
Especifica um valor arbitrário que é retornado quando a solicitação é concluída.
Retornar valor
Retorna um valor HRESULT . Os possíveis valores incluem os seguintes.
Código de retorno | Descrição |
---|---|
|
Êxito. |
|
O buffer não está alinhado corretamente. |
|
A amostra não tinha carimbo de data/hora. |
|
O pino está sendo liberado. |
|
A posição inicial solicitada está além do final do arquivo. |
|
Memória insuficiente. |
Comentários
Antes de chamar esse método, recupere um exemplo de mídia do alocador do pino. Carimbo de data/hora do exemplo com os deslocamentos de bytes que você está solicitando, primeiro e último inclusivo, multiplicado por 10.000.000. Os deslocamentos de bytes são relativos ao início do fluxo.
As posições de início e parada devem corresponder ao alinhamento que foi decidido quando os pinos se conectaram. Caso contrário, o método poderá retornar VFW_E_BADALIGN. Se o alinhamento acordado for mais grosseiro do que o alinhamento real do fluxo, a posição de parada poderá exceder a duração real. Nesse caso, o método arredonda a posição de parada para baixo até o alinhamento real.
Embora seja tecnicamente uma violação das regras COM, o chamador deve deixar uma contagem de referência pendente no exemplo. O Request
método não chama AddRef ou Release, portanto, a contagem de referência é necessária para manter o exemplo ativo.
O método retorna antes da conclusão da solicitação. Chame o método IAsyncReader::WaitForNext para aguardar a solicitação. Não reutilize o exemplo de mídia original enquanto a solicitação estiver pendente. O método WaitForNext retorna um ponteiro para o exemplo original. Se a solicitação for bem-sucedida, o exemplo conterá os dados solicitados. O método WaitForNext também retorna qualquer valor especificado no parâmetro dwUser . O chamador pode usar esse valor para identificar o exemplo.
Exemplos
O exemplo a seguir mostra uma possível função auxiliar para um pin de entrada, para solicitações de fila:
C++ |
---|
|
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | strmif.h (inclua Dshow.h) |
Biblioteca | Strmiids.lib |