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 |