다음을 통해 공유


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참조) 디바이스에 매핑이 더 이상 필요하지 않습니다.
미니포트 드라이버는 IPortWavePciStream::GetMapping호출에서 매핑을 획득하는 순서를 추적합니다. RevokeMapping 메서드는 FirstTag 식별된 매핑으로 시작하고 LastTag식별된 매핑으로 끝나는 시퀀스의 모든 매핑을 취소합니다. 여기에는 FirstTagLastTag 의해 식별되는 매핑과 그 사이의 모든 매핑이 포함됩니다. 미니포트 드라이버는 사용 가능한 매핑 목록에서 제거하여 각 매핑을 해지합니다.

RevokeMapping 메서드는 FirstTag 설정하고 LastTag 동일한 값으로 단일 매핑을 제거하는 데 사용할 수 있습니다.

포트 드라이버는 DMA 컨트롤러의 분산/수집 전송 큐에서 미니포트 드라이버의 유지 관리 작업과 관련하여 RevokeMappings 비동기적으로 호출할 수 있습니다. 이 큐에 대한 액세스는 동기화 기본 형식으로 보호되어야 합니다. 예를 들어 Microsoft WDK(Windows 드라이버 키트)의 ac97 샘플 오디오 드라이버에서 이 작업은 KeAcquireSpinLock 사용하여 중요한 코드 섹션을 둘러싸고 KeReleaseSpinLock 호출을 수행합니다. 미니포트 드라이버는 포트 드라이버의 RevokeMappings호출과 관련하여 매핑을 비동기적으로 해제할 수 있으므로 미니포트 드라이버는 이전에 릴리스되었을 수 있습니다(IPortWavePciStream::ReleaseMapping참조). RevokeMappings 호출에 지정된 매핑 중 하나 이상.

매핑에 대한 자세한 내용은 WavePci 대기 시간참조하세요.

요구 사항

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

참고 항목

IMiniportWavePciStream

IPortWavePciStream::GetMapping

IPortWavePciStream::ReleaseMapping

KSSTATE

KeAcquireSpinLock

KeReleaseSpinLock