Метод IPortWavePciStream::ReleaseMapping (portcls.h)
Метод ReleaseMapping
освобождает сопоставление, полученное при предыдущем вызове IPortWavePciStream::GetMapping.
Синтаксис
NTSTATUS ReleaseMapping(
[in] PVOID Tag
);
Параметры
[in] Tag
Задает значение тега, определяющее сопоставление, которое должно быть освобождено. Дополнительные сведения см. в разделе "Примечания".
Возвращаемое значение
ReleaseMapping
возвращает STATUS_SUCCESS, если вызов был выполнен успешно. В противном случае метод возвращает соответствующий код ошибки.
Комментарии
Задайте для параметра Tag то же значение тега, которое использовалось для идентификации сопоставления в вызове IPortWavePciStream::GetMapping , который первоначально получил сопоставление.
Драйвер мини-порта должен отслеживать порядок, в котором он получает свои сопоставления из вызовов IPortWavePciStream::GetMapping, и должен освободить сопоставления в том же порядке.
Чтобы избежать потенциальных взаимоблокировок, драйвер мини-порта должен избегать удержания спин-блокировки во время вызова .ReleaseMapping
Пример кода, использующий спин-блокировку для сериализации доступа к общим структурам данных и периферийным устройствам в многопроцессорной системе, см. в примере аудиодрайва ac97 в комплекте драйверов Microsoft Windows (WDK). Пример кода вызывает KeReleaseSpinLock перед вызовом ReleaseMapping
и KeAcquireSpinLock после вызова ReleaseMapping
. Между вызовами для освобождения и получения спин-блокировки поток драйвера не должен предполагать, что он имеет монопольный доступ к данным или периферийным устройствам, защищенным спин-блокировкой. Средство проверки драйверов (см. описание этого средства на веб-сайте средства проверки драйверов) проверяет наличие активных блокировок спина во время вызовов ; ReleaseMapping
если он обнаруживает его, он создает 0xC4 (обнаружение взаимоблокировки) проверка ошибок.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | portcls.h (включая Portcls.h) |
IRQL | <=DISPATCH_LEVEL |
См. также раздел
IMiniportWavePciStream::RevokeMappings