Função de retorno de chamada PFNKSFILTERIRP (ks.h)
Uma rotina de do AVStrMiniFilterCreate de um minidriver AVStream é chamada quando um filtro recebe um IRP.
Sintaxe
PFNKSFILTERIRP Pfnksfilterirp;
NTSTATUS Pfnksfilterirp(
[in] PKSFILTER Filter,
[in] PIRP Irp
)
{...}
Parâmetros
[in] Filter
Ponteiro para o KSFILTER.
[in] Irp
Ponteiro para o IRP para Filtrar.
Valor de retorno
Se a rotina for bem-sucedida, retorne STATUS_SUCCESS ou o código de erro.
Observações
IRP | Descrição |
---|---|
IRP_MJ_CREATE | Normalmente, essa rotina é usada por minidrivers que desejam inicializar o contexto e os recursos associados ao filtro. O minidriver especifica o endereço dessa rotina no membro Criar de sua estrutura de KSFILTER_DISPATCH. No ponto em que a rotina é chamada, o objeto de arquivo tem um contexto associado e o cabeçalho do objeto KS foi alocado. Essa rotina é chamada em IRQL = PASSIVE_LEVEL com o mutex do dispositivo mantido. Se a rotina for bem-sucedida, a operação de criação terá a garantia de ter êxito. Retorne STATUS_SUCCESS ou o código de erro retornado da tentativa de criar o filtro. STATUS_PENDING também é um código de retorno legal. Se um minidriver retornar STATUS_PENDING, o AVStream não concluirá o IRP_MJ_CREATE imediatamente. Antes de retornar STATUS_PENDING, o minidriver deve chamar IoMarkIrpPending. Quando o processamento da criação for concluído, o minidriver deverá definir o código de status do IRP e chamar KsCompletePendingRequest . Essa rotina é opcional. |
IRP_MJ_CLOSE | O minidriver especifica o endereço dessa rotina no Fechar membro de sua estrutura de KSFILTER_DISPATCH. No ponto em que a rotina é chamada, todos os eventos registrados no filtro foram liberados, mas o objeto está intacto de outra forma. Essa rotina é chamada em IRQL = PASSIVE_LEVEL com o mutex do dispositivo mantido. Para obter mais informações sobre mutexes, consulte Mutexes no AVStream. Essa rotina é opcional. Retornar STATUS_SUCCESS ou STATUS_PENDING. Se um minidriver retornar STATUS_PENDING, o AVStream não concluirá o IRP_MJ_CLOSE imediatamente. No entanto, antes de retornar STATUS_PENDING, o minidriver deve chamar IoMarkIrpPending. Depois que o processamento do fechamento for concluído, o minidriver deverá definir o código de status do IRP e, em seguida, chamar KsCompletePendingRequest. |
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Área de trabalho |
cabeçalho | ks.h (incluir Ks.h) |
IRQL | PASSIVE_LEVEL (seção Ver Comentários) |
Consulte também
KSFILTER_DISPATCH KsCompletePendingRequest