IPortDMus::Notify 메서드(dmusicks.h)
Notify
하드웨어 인터럽트 발생 시 미니포트 드라이버의 ISR(인터럽트 서비스 루틴)에서 메서드를 호출해야 합니다. 이 호출은 미니포트 드라이버가 인터럽트 처리를 처리하는 동안 포트 드라이버가 DPC(지연 프로시저 호출)를 사용하여 미니포트 드라이버를 다시 호출하도록 요청합니다.
구문
void Notify(
[in, optional] PSERVICEGROUP ServiceGroup
);
매개 변수
[in, optional] ServiceGroup
IServiceGroup 개체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL로 지정할 수 있습니다. 자세한 내용은 아래 설명 부분을 참조하십시오.
반환 값
없음
설명
메서드는 Notify
미니포트 드라이버의 서비스 그룹에 알림을 보냅니다.
-
pServiceGroup 매개 변수가 NULL
Notify
이 아닌 경우 메서드는 이 매개 변수가 가리키는 IServiceGroup 개체에서 RequestService 메서드를 호출합니다. - pServiceGroup이 NULL인 경우:
- 메서드는
Notify
미니포트 드라이버의 IServiceGroup 개체에서 RequestService 메서드를 호출합니다. IMiniportDMus::Init 호출 중에 미니포트 드라이버가 출력하는 IServiceGroup 개체입니다. 또한 미니포트 드라이버는 IPortDMus::RegisterServiceGroup을 호출하여 초기(즉, Init에서 반환보다 이전)에 이 개체를 등록했을 수도 있습니다. - 또한 메서드는
Notify
각 미니포트 드라이버 스트림에 속하는 IServiceGroup 개체에서 RequestService 메서드를 호출합니다. IMiniportDMus::NewStream 메서드가 출력하는 IServiceGroup 개체입니다.
- 메서드는
Notify
하여 오디오 디바이스가 하드웨어 인터럽트 생성을 포트 드라이버에 알립니다. 예를 들어 일부 레지스터를 읽어야 한다는 인터럽트 신호가 표시되면 미니포트 드라이버의 ISR은 관리자 권한 IRQL의 MXF(MIDI 변환 필터) 그래프에 액세스할 수 없습니다. 대신 미니포트 드라이버는 레지스터에서 입력 데이터(예: MIDI 데이터의 바이트)를 저장하고, 를 호출 Notify
하고, 포트 드라이버가 DPC로 다시 돌아올 때까지 기다릴 수 있습니다.
미니포트 드라이버의 ISR이 를 호출 Notify
하면 포트 드라이버는 관리자 권한 하드웨어 인터럽트 IRQL에서 알림을 받고 DPC를 큐에 배치합니다. IRQL이 DISPATCH_LEVEL 떨어지면 포트 드라이버의 DPC가 실행되고 미니포트 드라이버를 서비스합니다.
DPC 내에서 포트 드라이버는 미니포트 드라이버의 입력 스트림에서 IMXF::P utMessage 를 NULL 매개 변수로 호출하여 IRQL이 다시 DISPATCH_LEVEL 삭제되었기 때문에 미니포트 드라이버가 이전에 저장된 MIDI 메시지를 MXF 그래프에 넣을 수 있음을 나타냅니다.
이 방법은 정확한 타이밍에 매우 중요합니다. 대부분의 미니포트는 인터럽트 원본을 지워서 알림 인터럽트 응답에서 이 메서드를 호출합니다. 미니포트 드라이버는 이 메서드를 호출할 시기를 결정하기 위해 다른 메서드를 자유롭게 사용할 수 있지만 정확한 타이밍은 중요하며 유지 관리해야 합니다.
어댑터 드라이버가 ISR을 설치하면 ISR의 진입점과 함께 ServiceContext 매개 변수를 제출합니다(자세한 내용은 ISR 컨텍스트 정보 제공 참조). 인터럽트가 발생하면 운영 체제는 ISR을 호출하고 ServiceContext 를 호출 매개 변수로 ISR에 전달합니다. ServiceContext 매개 변수의 의미는 드라이버 개발자에게만 알려져 있지만 일반적으로 미니포트 개체에 대한 포인터입니다. ISR은 이 포인터를 사용하여 미니포트 개체에 대한 정보에 액세스합니다.
pServiceGroup 매개 변수는 COM 개체에 대한 참조 계산 규칙을 따릅니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | dmusicks.h(Dmusicks.h 포함) |
IRQL | 모든 수준 |