Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A função KsAddIrpToCancelableQueue adiciona um IRP a uma fila de IRPs canceláveis, permitindo que o IRP seja cancelado. Se o IRP tiver sido definido anteriormente como um estado cancelado, a função KsAddIrpToCancelableQueue concluirá o cancelamento desse IRP.
Sintaxe
KSDDKAPI VOID KsAddIrpToCancelableQueue(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock,
[in] PIRP Irp,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in, optional] PDRIVER_CANCEL DriverCancel
);
Parâmetros
[in, out] QueueHead
Especifica o armazenamento alocado pelo driver para o cabeçalho da fila na qual adicionar o IRP.
[in] SpinLock
Aponta para o bloqueio de rotação do driver para acesso à fila especificada em QueueHead. Uma cópia desse ponteiro é mantida na KSQUEUE_SPINLOCK_IRP_STORAGE(Irp) do IRP para uso pela rotina de cancelamento, se necessário.
[in] Irp
Especifica o IRP a ser adicionado à fila especificada em QueueHead.
[in] ListLocation
Indica se esse IRP deve ser colocado no início ou no final da fila. Esse valor deve ser KsListEntryTail ou KsListEntryHead.
[in, optional] DriverCancel
Parâmetro opcional que especifica uma rotina de cancelamento fornecida pelo driver a ser usada. Se isso for NULL, o KsCancelRoutine de padrão será usado.
Valor de retorno
Nenhum
Observações
Se o IRP tiver sido colocado em um estado de cancelamento quando essa rotina for chamada, KsAddIrpToCancelableQueue chamará imediatamente a rotina de cancelamento especificada em driverCancelou se nenhuma rotina foi especificada em DriverCancel a rotina de cancelamento de streaming padrão for chamada.
A função KsAddIrpToCancelableQueue permite que os IRPs sejam cancelados antes mesmo de serem colocados em uma lista de cancelamento ou ao serem movidos de uma lista para outra. Essa função pode ser chamada no nível do IRQ DISPATCH_LEVEL ou inferior, a menos que a fila alocada pelo driver e todas as entradas na fila sejam residentes no sistema ou alocadas do armazenamento residente.
A função não usa o bloqueio de rotação de cancelamento para adicionar itens à lista. O acesso à lista é sincronizado usando o bloqueio de rotação fornecido e depende de operações atômicas em Irp->CancelRoutine.
Requisitos
| Requisito | Valor |
|---|---|
| da Plataforma de Destino | Universal |
| cabeçalho | ks.h (incluir Ks.h) |
| biblioteca | Ks.lib |