Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция KsRemoveIrpFromCancelableQueue всплывает из указанной очереди, которая может быть отменена и удаляет состояние отмены. Функция выполняет поиск списка до тех пор, пока IRP не будет найден, что имеет подпрограмму отмены или до конца списка. Функция сводит к минимуму использование блокировки спина отмены с помощью предоставленной блокировки спина для синхронизации доступа в большинстве случаев. Функция может вызываться на уровне IRQ DISPATCH_LEVEL или ниже.
Синтаксис
KSDDKAPI PIRP KsRemoveIrpFromCancelableQueue(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock,
[in] KSLIST_ENTRY_LOCATION ListLocation,
[in] KSIRP_REMOVAL_OPERATION RemovalOperation
);
Параметры
[in, out] QueueHead
Указывает на голову очереди, из которой необходимо удалить IRP.
[in] SpinLock
Указывает на блокировку спины драйвера для доступа к очереди.
[in] ListLocation
Указывает, должен ли этот IRP поступать из начала или конца очереди.
[in] RemovalOperation
Указывает, удаляется ли IRP из списка или только что получена функция отмены, чтобы null. Если он получен только, IRP должен быть выпущен позже с KsReleaseIrpOnCancelableQueue или полностью удален с KsRemoveSpecificIrpFromCancelableQueue.
Возвращаемое значение
Функция KsRemoveIrpFromCancelableQueue возвращает следующий неканцеленный IRP в списке, или возвращает NULL, если не найдено или не найдено IRP, которое еще не было найдено.
Замечания
Эти перечисления используются в предыдущих параметрах для управления удалением IRP и способом.
typedef enum {
KsListEntryTail,
KsListEntryHead
} KSLIST_ENTRY_LOCATION;
typedef enum {
KsAcquireOnly,
KsAcquireAndRemove
} KSIRP_REMOVAL_OPERATION;
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Всеобщий |
| заголовка | ks.h (include Ks.h) |
| библиотеки | Ks.lib |