Compartilhar via


Função KsRemoveIrpFromCancelableQueue (ks.h)

A função KsRemoveIrpFromCancelableQueue exibe o próximo IRP não protegido da fila especificada que pode ser cancelada e remove seu status de cancelamento. A função pesquisa a lista até que um IRP seja encontrado que tenha uma rotina de cancelamento ou até que o final da lista seja atingido. A função minimiza o uso do bloqueio de rotação de cancelamento usando o bloqueio de rotação fornecido para sincronizar o acesso na maioria dos casos. A função pode ser chamada no nível do IRQ DISPATCH_LEVEL ou inferior.

Sintaxe

KSDDKAPI PIRP KsRemoveIrpFromCancelableQueue(
  [in, out] PLIST_ENTRY             QueueHead,
  [in]      PKSPIN_LOCK             SpinLock,
  [in]      KSLIST_ENTRY_LOCATION   ListLocation,
  [in]      KSIRP_REMOVAL_OPERATION RemovalOperation
);

Parâmetros

[in, out] QueueHead

Aponta para o cabeçalho da fila da qual remover o IRP.

[in] SpinLock

Aponta para o bloqueio de rotação do driver para acesso à fila.

[in] ListLocation

Indica se esse IRP deve vir do início ou do fim da fila.

[in] RemovalOperation

Especifica se o IRP foi removido da lista ou se acabou de ser adquirido definindo a função de cancelamento como NULL. Se ele for adquirido apenas, o IRP deverá ser lançado posteriormente com KsReleaseIrpOnCancelableQueue ou completamente removido com KsRemoveSpecificIrpFromCancelableQueue .

Valor de retorno

A função KsRemoveIrpFromCancelableQueue retorna o próximo IRP não protegido na lista ou retorna NULL se nenhum for encontrado ou se um IRP que ainda não foi adquirido não puder ser encontrado.

Observações

Essas enumerações são usadas nos parâmetros anteriores para controlar de onde o IRP é removido e como.

typedef enum {
    KsListEntryTail,
    KsListEntryHead
} KSLIST_ENTRY_LOCATION;

typedef enum {
    KsAcquireOnly,
    KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;

Requisitos

Requisito Valor
da Plataforma de Destino Universal
cabeçalho ks.h (incluir Ks.h)
biblioteca Ks.lib

Consulte também

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue