Função KsAddIrpToCancelableQueue (ks.h)
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 no irp (KSQUEUE_SPINLOCK_IRP_STORAGE) 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 for NULL, a KsCancelRoutine padrão será usada.
Retornar valor
Nenhum
Comentários
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 DriverCancel ou se nenhuma rotina tiver sido especificada no DriverCancel , a rotina padrão de cancelamento de streaming será 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 |
---|---|
Plataforma de Destino | Universal |
Cabeçalho | ks.h (inclua Ks.h) |
Biblioteca | Ks.lib |