modMessage 함수

modMessage 함수는 MIDI(악기 디지털 인터페이스) 출력 드라이버와 내부 신시사이저 드라이버에 대한 진입점 함수입니다. MIDI와 관련된 오디오 디바이스 메시지에 대한 자세한 내용은 MIDI용 오디오 디바이스 메시지를 참조하세요.

구문

DWORD modMessage(
   UINT      uDeviceID,
   UINT      uMsg,
   DWORD_PTR dwUser,
   DWORD_PTR dwParam1,
   DWORD_PTR dwParam2
);

매개 변수

  • uDeviceID
    대상 디바이스의 ID를 지정합니다. 디바이스 ID는 순차적이고 초기 값이 0이고 최종 값은 드라이버가 지원하는 디바이스 수보다 1보다 작습니다.

  • uMsg
    클라이언트 애플리케이션의 호출에 대한 응답으로 WINMM이 드라이버에 보내는 메시지를 지정합니다.

  • dwUser
    MODM_OPEN 메시지의 경우 드라이버는 이 위치를 instance 데이터로 채워야 합니다. 다른 메시지의 경우 instance 데이터가 드라이버에 반환됩니다. 여러 클라이언트를 지원하는 드라이버는 이 instance 데이터를 사용하여 메시지와 연결된 클라이언트를 추적할 수 있습니다.

  • dwParam1
    메시지 종속 매개 변수를 지정합니다.

  • dwParam2
    메시지 종속 매개 변수를 지정합니다. modMessage와 함께 작동하는 드라이버에 추가 정보를 제공하는 플래그가 있는 경우 WINMM은 이 매개 변수를 사용하여 플래그를 전달합니다.

반환 값

modMessage 함수는 MMSYSTEM에서 받은 메시지를 성공적으로 처리할 수 있으면 MMSYSERR_NOERROR 반환합니다. 그렇지 않으면 다음 오류 메시지 중 하나를 반환합니다.

반환 코드 설명
MMSYSERR_ERROR

알 수 없는 오류입니다.

MMSYSERR_BADDEVICEID

지정된 디바이스 ID가 범위를 벗어났습니다.

MMSYSERR_NOTENABLED

드라이버를 로드하거나 초기화하지 못했습니다.

MMSYSERR_ALLOCATED

지정된 디바이스가 이미 할당되어 있습니다.

MMSYSERR_INVALHANDLE

지정된 디바이스의 핸들이 잘못되었습니다.

MMSYSERR_NODRIVER

디바이스 드라이버가 없습니다.

MMSYSERR_NOMEM

메모리 할당 오류입니다.

MMSYSERR_NOTSUPPORTED

메시지에서 요청한 함수는 지원되지 않습니다.

MMSYSERR_BADERRNUM

오류 값이 범위를 벗어났습니다. 자세한 내용은 주의 섹션을 참조하세요.

MMSYSERR_INVALFLAG

잘못된 플래그가 modMessage에 전달되었습니다( dwParam2 사용).

MMSYSERR_INVALPARAM

잘못된 매개 변수가 modMessage에 전달되었습니다.

MMSYSERR_HANDLEBUSY

지정된 핸들이 다른 스레드(예: 콜백 스레드)에서 동시에 사용되고 있습니다.

MMSYSERR_INVALIDALIAS

지정된 별칭을 찾을 수 없습니다.

MMSYSERR_BADDB

잘못된 레지스트리 데이터베이스.

MMSYSERR_KEYNOTFOUND

지정된 레지스트리 키를 찾을 수 없습니다.

MMSYSERR_READERROR

레지스트리 읽기 오류입니다.

MMSYSERR_WRITEERROR

레지스트리 쓰기 오류입니다.

MMSYSERR_DELETEERROR

레지스트리 삭제 오류입니다.

MMSYSERR_VALNOTFOUND

지정된 레지스트리 값을 찾을 수 없습니다.

MMSYSERR_NODRIVERCB

modMessage와 함께 작동하는 드라이버는 DriverCallback을 호출하지 않습니다.

MMSYSERR_MOREDATA

modMessage 에는 반환할 데이터가 더 있습니다.

MMSYSERR_LASTERROR

오류 값 범위의 마지막 오류임을 나타냅니다. 자세한 내용은 설명 섹션을 참조하세요.

설명

오디오 디바이스 메시지는 시스템 정의 상수입니다. 따라서 modMessage 가 오디오 디바이스 메시지를 받으면 switch 문을 사용하여 메시지 값에 따라 수행할 작업을 결정합니다.

modMessage에서 반환할 수 있는 오류 메시지의 범위는 오류가 발생했을 때 처리 중이던 메시지에 따라 달라집니다. MMSYSERR_ 오류 메시지의 숫자 값은 0으로 시작하고(MMSYSERR_NOERROR 경우) MMSYSERR_BASE + n으로 계속 진행합니다. 여기서 n 은 1에서 21까지의 정수입니다. MMSYSERR_BASE 값은 정의된 상수입니다. MSYSERR_BASE 및 MMSYSERR_ 오류 메시지에 대한 자세한 내용은 Windows SDK의 Mmsystem.h 및 WDK의 Mmddk.h를 각각 참조하세요.

요구 사항

대상 플랫폼

데스크톱

버전

Windows XP 이상 Windows 운영 체제에서 사용할 수 있습니다.

헤더

Mmddk.h(Mmddk.h, Mmsystem.h 또는 Windows.h 포함)

추가 정보

MODM_OPEN