Método IWDFIoRequest::MarkCancelable (wudfddi.h)
[Aviso: UMDF 2 é a versão mais recente do UMDF e substitui o UMDF 1. Todos os novos drivers UMDF devem ser gravados usando UMDF 2. Nenhum recurso novo está sendo adicionado ao UMDF 1 e há suporte limitado para UMDF 1 em versões mais recentes do Windows 10. Os drivers universais do Windows devem usar o UMDF 2. Para obter mais informações, consulte Introdução aoda UMDF .]
O método MarkCancelable permite o cancelamento da solicitação de E/S.
Sintaxe
void MarkCancelable(
[in] IRequestCallbackCancel *pCancelCallback
);
Parâmetros
[in] pCancelCallback
Um ponteiro para a interface IRequestCallbackCancel cujo método a estrutura chama após o cancelamento da solicitação de E/S.
Valor de retorno
Nenhum
Observações
Depois que um driver recebe uma solicitação de E/S como entrada para um IQueueCallbackRead::OnRead, IQueueCallbackWrite::OnWriteou IQueueCallbackDeviceIoControl::OnDeviceIoControl função de retorno de chamada de evento, o driver pode chamar o método MarkCancelable para habilitar o cancelamento da solicitação. Posteriormente, o driver pode chamar o método IWDFIoRequest::UnmarkCancelable para desabilitar o cancelamento da solicitação.
Antes que um driver chame MarkCancelable, o driver deve implementar o método IRequestCallbackCancel::OnCancel.
O UMDF (User Mode Driver Framework) permite apenas um método IRequestCallbackCancel::OnCancel por fila. Portanto, quando um driver chama MarkCancelable para solicitações associadas a uma fila específica para habilitar a estrutura a cancelar essas solicitações, o driver deve passar um ponteiro para a interface IRequestCallbackCancel para o mesmo objeto de retorno de chamada de solicitação. Posteriormente, para cancelar cada solicitação, a estrutura passa um ponteiro para a interface IWDFIoRequest para a solicitação em uma chamada para o método IRequestCallbackCancel::OnCancel deste objeto de retorno de chamada de solicitação.
O driver deve chamar método IWDFIoRequest::Complete, seja do método IRequestCallbackCancel::OnCancel ou de seu caminho de conclusão de E/S regular.
Depois que um driver chama MarkCancelable para habilitar o cancelamento, a solicitação permanece cancelável enquanto o driver tem a posse do objeto de solicitação, a menos que o motorista chame UnmarkCancelable para desabilitar o cancelamento.
Se o driver chamar o método IWDFIoRequest::ForwardToIoQueue para encaminhar a solicitação para uma fila diferente, as seguintes regras se aplicam:
-
O cancelamento de solicitações de E/S não pode ser habilitado quando o driver encaminha as solicitações para uma fila diferente.
Normalmente, o driver não deve chamar MarkCancelable para habilitar o cancelamento de uma solicitação antes de chamar IWDFIoRequest::ForwardToIoQueue. Como alternativa, o driver pode tornar a solicitação cancelável. No entanto, o driver deve chamar UnmarkCancelable para desabilitar o cancelamento da solicitação antes de chamar IWDFIoRequest::ForwardToIoQueue.
- Embora a solicitação esteja em uma segunda fila, a estrutura a possui e pode cancelá-la sem notificar o driver.
- Depois que a estrutura desativar a solicitação da segunda fila e entregar a solicitação ao driver, o driver poderá chamar MarkCancelable para habilitar o cancelamento.
Exemplos
O exemplo de código a seguir configura uma solicitação para que a estrutura possa cancelá-la.
//
// The QueryInteraface should not fail.
//
(VOID)this->QueryInterface(_uuidof(IRequestCallbackCancel),
(PVOID *)&cancelCallback);
pWdfRequest->MarkCancelable(cancelCallback);
Requisitos
Requisito | Valor |
---|---|
fim do suporte | Indisponível no UMDF 2.0 e posterior. |
da Plataforma de Destino | Área de trabalho |
versão mínima do UMDF | 1.5 |
cabeçalho | wudfddi.h (inclua Wudfddi.h) |
de DLL | WUDFx.dll |
Consulte também
IQueueCallbackDeviceIoControl::OnDeviceIoControl
IRequestCallbackCancel::OnCancel