Метод IMiniportWavePciStream::RevokeMappings (portcls.h)
Метод RevokeMappings
отменяет сопоставления, полученные ранее с помощью IPortWavePciStream::GetMapping.
Синтаксис
NTSTATUS RevokeMappings(
[in] PVOID FirstTag,
[in] PVOID LastTag,
[out] PULONG MappingsRevoked
);
Параметры
[in] FirstTag
Указывает значение тега, определяющее первое сопоставление, которое отозвано.
[in] LastTag
Указывает значение тега, определяющее последнее сопоставление, которое отозвано.
[out] MappingsRevoked
Указатель вывода для количества отозванных сопоставлений. Этот параметр указывает на переменную ULONG, в которую метод записывает количество сопоставлений, фактически отозванных вызовом. Это число исключает любые сопоставления в диапазоне FirstTag с LastTag, что драйвер минипорта уже выпущен. Из-за проблем синхронизации некоторые сопоставления в диапазоне могут быть выпущены между временем, когда драйвер порта определяет список сопоставлений, которые необходимо отменить, и вызовом RevokeMappings
. Дополнительные сведения см. в следующем разделе "Примечания".
Возвращаемое значение
RevokeMappings
возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае метод возвращает соответствующий код ошибки.
Замечания
Драйвер порта вызывает RevokeMappings
отзыва сопоставлений потока, когда:
- Запрос ввода-вывода (IRP) отменен, и ранее сопоставленная память больше не доступна.
- Состояние потока изменяется на KSSTATE_STOP (см. KSSTATE) и устройство больше не нуждается в сопоставлениях.
RevokeMapping
отменяет все сопоставления последовательности, начинающиеся с сопоставления, определяемого FirstTag, и заканчивается сопоставлением, определяемым LastTag. К ним относятся сопоставления, определенные FirstTag и LastTag и все сопоставления между ними. Драйвер минипорта отменяет каждое сопоставление, удалив его из списка доступных сопоставлений.
Метод RevokeMapping
можно использовать для удаления одного сопоставления, задав FirstTag и LastTag в то же значение.
Драйвер порта может вызывать RevokeMappings
асинхронно в отношении операций обслуживания драйвера минипорта в точечных или сборных очередях передачи контроллера DMA. Доступ к этой очереди должен быть защищен примитивом синхронизации. Например, в примере звукового драйвера ac97 в комплекте драйверов Microsoft Windows (WDK) это делается путем выполнения критических разделов кода с KeAcquireSpinLock и KeReleaseSpinLock вызовов. Так как минипорт-драйвер может асинхронно выпускать сопоставления в отношении вызовов драйвера порта к RevokeMappings
, драйвер минипорта, возможно, был выпущен ранее (см. IPortWavePciStream::ReleaseMapping) один или несколько сопоставлений, указанных в вызове RevokeMappings
.
Дополнительные сведения о сопоставлениях см. в задержки WavePci.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | portcls.h (include Portcls.h) |
IRQL | DISPATCH_LEVEL |
См. также
IPortWavePciStream::GetMapping