Метод 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 (включая Portcls.h) |
IRQL | DISPATCH_LEVEL |
См. также раздел
IPortWavePciStream::GetMapping