MODM_OPEN 함수
WINMM은 클라이언트 애플리케이션에서 MODM_OPEN
사용할 수 있는 지정된 디바이스를 할당하기 위해 MIDI 출력 드라이버의 modMessage 함수에 메시지를 보냅니다.
구문
DWORD modMessage(
UINT uDeviceID,
UINT uMsg,
DWORD_PTR dwUser,
DWORD_PTR dwParam1,
DWORD_PTR dwParam2
);
매개 변수
uDeviceID
대상 디바이스의 ID를 지정합니다. 디바이스 ID는 순차적이고 초기 값이 0이고 최종 값은 드라이버가 지원하는 디바이스 수보다 1보다 낮습니다.uMsg
WINMM은 이 메시지를 처리하기 위해 modMessage를 호출할 때 이 매개 변수를 MODM_OPEN 설정합니다.dwUser
MIDI 출력 드라이버는 이 위치를 instance 데이터로 채워야 하지만 에 대한 응답으로MODM_OPEN
만 채워야 합니다.dwParam1
이 매개 변수는 MIDIOPENDESC 구조체에 대한 원거리 포인터를 지정합니다. 이 구조에는 클라이언트의 instance 데이터 및 클라이언트에 대한 콜백 함수와 같은 드라이버에 대한 추가 정보가 포함됩니다.dwParam2
이 매개 변수는 디바이스를 여는 방법을 결정하는 옵션 플래그를 지정합니다. 플래그는 다음 표의 모든 값일 수 있습니다.플래그 의미 CALLBACK_EVENT
이 플래그를 지정하면 MIDIOPENDESC 구조체의 dwCallback이 이벤트 핸들로 간주됩니다.
CALLBACK_FUNCTION
이 플래그를 지정하면 MIDIOPENDESC 구조체의 dwCallback이 콜백 함수의 주소로 간주됩니다.
CALLBACK_THREAD
이 플래그를 지정하면 MIDIOPENDESC 구조체의 dwCallback은 스레드에 대한 핸들로 간주됩니다.
CALLBACK_WINDOW
이 플래그를 지정하면 MIDIOPENDESC 구조체의 dwCallback은 창 핸들로 간주됩니다.
MIDI_IO_COOKED
이 플래그를 지정하면 디바이스가 스트림 모드로 열리고 드라이버가 스트림 메시지를 받습니다. 드라이버는 발생하는 모든 사태를 처리할 수 있어야 합니다. 예를 들어 드라이버는 짧은 메시지와 시스템 전용 메시지를 스트림에 비동기적으로 재생할 수 있어야 합니다.
반환 값
modMessage 함수는 작업이 성공하면 MMSYSERR_NOERROR 반환합니다. 그렇지 않으면 다음 표의 오류 메시지 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
MMSYSERR_NOTENABLED | 드라이버를 로드하거나 초기화하지 못했습니다. |
MMSYSERR_ALLOCATED | MIDI 디바이스는 이미 드라이버가 지원하는 최대 클라이언트 수에 의해 할당되었거나 메모리 이외의 시스템 리소스 제한으로 인해 디바이스를 열 수 없습니다. |
MMSYSERR_NOMEM | 메모리를 할당하거나 잠그지 않아 디바이스를 열 수 없습니다. |
설명
드라이버는 특정 디바이스를 사용하도록 허용할 수 있는 클라이언트 수를 확인할 수 있어야 합니다. 드라이버에서 지원하는 최대 클라이언트 수에 대해 디바이스를 연 후 드라이버는 디바이스를 열기 위한 추가 요청에 대한 MMSYSERR_ALLOCATED 반환합니다. 열린 작업이 성공하면 드라이버는 DriverCallback 함수를 사용하여 클라이언트에 MOM_OPEN 메시지를 보냅니다.
요구 사항
대상 플랫폼 |
데스크톱 |
버전 |
Windows XP 이상 Windows 운영 체제에서 사용할 수 있습니다. |
헤더 |
Mmddk.h(Mmddk.h, Mmsystem.h 또는 Windows.h 포함) |