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 변수를 가리킵니다. 이 숫자는 미니포트 드라이버가 이미 릴리스한 LastTag에 대한 FirstTag 범위의 매핑을 제외합니다. 동기화 문제로 인해 포트 드라이버가 해지할 매핑 목록을 결정하는 시간과 호출 RevokeMappings사이에 범위의 일부 매핑이 해제될 수 있습니다. 자세한 내용은 아래 설명 부분을 참조하십시오.
반환 값
RevokeMappings 는 호출에 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드가 적절한 오류 코드를 반환합니다.
설명
포트 드라이버는 다음과 같은 경우 스트림의 매핑을 취소하기 위해 호출 RevokeMappings 합니다.
- IRP(I/O 요청)가 취소되고 이전에 매핑된 메모리를 더 이상 사용할 수 없을 수 있습니다.
- 스트림 상태가 KSSTATE_STOP 변경되고( KSSTATE 참조) 디바이스에 매핑이 더 이상 필요하지 않습니다.
RevokeMapping FirstTag 로 식별된 매핑으로 시작하고 LastTag로 식별된 매핑으로 끝나는 시퀀스의 모든 매핑을 취소합니다. 여기에는 FirstTag 및 LastTag 로 식별되는 매핑과 그 사이의 모든 매핑이 포함됩니다. 미니포트 드라이버는 사용 가능한 매핑 목록에서 제거하여 각 매핑을 취소합니다.
이 메서드는 RevokeMapping FirstTag 및 LastTag 를 동일한 값으로 설정하여 단일 매핑을 제거하는 데 사용할 수 있습니다.
포트 드라이버는 DMA 컨트롤러의 분산/수집 전송 큐에서 미니포트 드라이버의 유지 관리 작업과 관련하여 비동기적으로 호출 RevokeMappings 할 수 있습니다. 이 큐에 대한 액세스는 동기화 기본 형식으로 보호되어야 합니다. 예를 들어 Microsoft WDK(Windows Driver Kit)의 ac97 샘플 오디오 드라이버에서 이 작업은 KeAcquireSpinLock 및 KeReleaseSpinLock 호출을 사용하여 중요한 코드 섹션을 둘러싸고 수행됩니다. 미니포트 드라이버는 포트 드라이버의 호출과 관련하여 매핑을 비동기적으로 해제할 RevokeMappings수 있으므로 미니포트 드라이버는 이전에 호출에 지정된 매핑 중 하나 이상( IPortWavePciStream::ReleaseMapping 참조)을 릴리스했을 RevokeMappings 수 있습니다.
매핑에 대한 자세한 내용은 WavePci 대기 시간을 참조하세요.
요구 사항
| 대상 플랫폼 | 유니버설 |
| 헤더 | portcls.h(Portcls.h 포함) |
| IRQL | DISPATCH_LEVEL |
참고 항목
IPortWavePciStream::GetMapping
피드백
다음에 대한 사용자 의견 제출 및 보기