다음을 통해 공유


IPortWavePciStream::ReleaseMapping 메서드(portcls.h)

ReleaseMapping 메서드는 IPortWavePciStream::GetMapping대한 이전 호출에서 얻은 매핑을 해제합니다.

통사론

NTSTATUS ReleaseMapping(
  [in] PVOID Tag
);

매개 변수

[in] Tag

해제할 매핑을 식별하는 태그 값을 지정합니다. 자세한 내용은 다음 설명 섹션을 참조하세요.

반환 값

ReleaseMapping 호출에 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드가 적절한 오류 코드를 반환합니다.

발언

Tag 매개 변수를 원래 매핑을 가져온 IPortWavePciStream::GetMapping 호출에서 매핑을 식별하는 데 사용한 것과 동일한 태그 값으로 설정합니다.

미니포트 드라이버는 IPortWavePciStream::GetMapping호출에서 매핑을 획득하는 순서를 추적해야 하며 동일한 순서로 매핑을 해제해야 합니다.

잠재적인 교착 상태를 방지하기 위해 미니포트 드라이버는 ReleaseMapping호출하는 동안 스핀 잠금을 유지하지 않아야 합니다. 스핀 잠금을 사용하여 다중 프로세서 시스템의 공유 데이터 구조 및 주변 디바이스에 대한 액세스를 직렬화하는 코드 예제는 Microsoft WDK(Windows 드라이버 키트)의 ac97 샘플 오디오 드라이버를 참조하세요. 샘플 코드는 호출하기 전에 ReleaseMapping 호출하고 호출한 후 ReleaseMapping 호출합니다. 스핀 잠금을 해제하고 획득하기 위한 호출 사이에 드라이버 스레드는 스핀 잠금으로 보호되는 데이터 또는 주변 기기에 대한 단독 액세스 권한이 있다고 가정해서는 안 됩니다. 드라이버 검증 도구(드라이버 검증 도구 웹 사이트에서 이 도구에 대한 설명 참조)는 ReleaseMapping호출하는 동안 활성 스핀 잠금을 확인합니다. 이를 감지하면 0xC4(교착 상태 검색) 버그 검사가 생성됩니다.

요구 사항

요구
대상 플랫폼 보편적
헤더 portcls.h(Portcls.h 포함)
IRQL <=DISPATCH_LEVEL

참고 항목

IMiniportWavePciStream::RevokeMappings

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock