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