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
호출과 관련하여 매핑을 비동기적으로 해제할 수 있으므로 미니포트 드라이버는 이전에 릴리스되었을 수 있습니다(IPortWavePciStream::ReleaseMapping참조). RevokeMappings
호출에 지정된 매핑 중 하나 이상.
매핑에 대한 자세한 내용은 WavePci 대기 시간참조하세요.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | portcls.h(Portcls.h 포함) |
IRQL | DISPATCH_LEVEL |
참고 항목
IPortWavePciStream::GetMapping