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 포함)

추가 정보

modMessage

MIDIOPENDESC

DriverCallback

MOM_OPEN