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 드라이버 키트)의 ac97 샘플 오디오 드라이버에서 이 작업은 KeAcquireSpinLock 및 KeReleaseSpinLock 호출을 사용하여 중요한 코드 섹션을 둘러싸고 수행됩니다. 미니포트 드라이버는 포트 드라이버의 에 대한 호출과 관련하여 매핑을 비동기적으로 해제할 RevokeMappings
수 있으므로 미니포트 드라이버는 이전에 호출에 RevokeMappings
지정된 매핑 중 하나 이상(IPortWavePciStream::ReleaseMapping 참조)을 릴리스했을 수 있습니다.
매핑에 대한 자세한 내용은 WavePci 대기 시간을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | portcls.h(Portcls.h 포함) |
IRQL | DISPATCH_LEVEL |
추가 정보
IPortWavePciStream::GetMapping