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 sua status de cancelamento. A função pesquisa a lista até que um IRP seja encontrado com 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 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 é removido da lista ou apenas adquirido definindo a função cancel como NULL. Se ele for adquirido apenas, o IRP deverá ser lançado posteriormente com KsReleaseIrpOnCancelableQueue ou completamente removido com KsRemoveSpecificIrpFromCancelableQueue.

Retornar valor

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.

Comentários

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
Plataforma de Destino Universal
Cabeçalho ks.h (inclua Ks.h)
Biblioteca Ks.lib

Confira também

KsReleaseIrpOnCancelableQueue

KsRemoveSpecificIrpFromCancelableQueue