다음을 통해 공유


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

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

구문

NTSTATUS ReleaseMapping(
  [in] PVOID Tag
);

매개 변수

[in] Tag

해제할 매핑을 식별하는 태그 값을 지정합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

반환 값

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

설명

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

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

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

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 portcls.h(Portcls.h 포함)
IRQL <=DISPATCH_LEVEL

추가 정보

IMiniportWavePciStream::RevokeMappings

IPortWavePciStream

IPortWavePciStream::GetMapping

KeAcquireSpinLock

KeReleaseSpinLock