midiInMessage 함수(mmeapi.h)

midiInMessage 함수는 MIDI 디바이스 드라이버에 메시지를 보냅니다.

구문

MMRESULT midiInMessage(
  HMIDIIN   hmi,
  UINT      uMsg,
  DWORD_PTR dw1,
  DWORD_PTR dw2
);

매개 변수

hmi

메시지를 수신하는 MIDI 디바이스의 식별자입니다. 디바이스 ID를 HMIDIIN 핸들 형식으로 캐스팅해야 합니다. 디바이스 ID 대신 핸들을 제공하는 경우 함수가 실패하고 MMSYSERR_NOSUPPORT 오류 코드를 반환합니다.

uMsg

보낼 메시지입니다.

dw1

메시지 매개 변수입니다.

dw2

메시지 매개 변수입니다.

반환 값

오디오 디바이스 드라이버에서 반환하는 값을 반환합니다.

설명

이 함수는 MIDI API에서 지원되지 않는 드라이버 관련 메시지에만 사용됩니다.

메시지는 DRV_QUERYDEVICEINTERFACEwaveIn, waveOut, midiIn, midiOut 또는 믹서 디바이스의 디바이스 인터페이스 이름을 쿼리합니다.

의 경우 DRV_QUERYDEVICEINTERFACEdwParam1은 함수가 디바이스 인터페이스 이름을 포함하는 null로 종료된 유니코드 문자열을 작성하는 호출자가 할당한 버퍼에 대한 포인터입니다. 디바이스에 디바이스 인터페이스가 없는 경우 문자열 길이는 0입니다.

의 경우 DRV_QUERYDEVICEINTERFACEdwParam2는 버퍼 크기를 바이트 단위로 지정합니다. 함수에 대한 입력 매개 변수입니다. 호출자는 DRV_QUERYDEVICEINTERFACESIZE 메시지에서 검색한 버퍼 크기보다 크거나 같은 크기를 지정해야 합니다.

DRV_QUERYDEVICEINTERFACE 메시지는 Windows Me 및 Windows 2000 이상에서 지원됩니다. 이 메시지는 waveInMessage, waveOutMessage, midiInMessage, midiOutMessagemixerMessage 함수에만 유효합니다. 시스템은 이 메시지를 가로채고 디바이스 드라이버에 메시지를 보내지 않고 적절한 값을 반환합니다. 시스템 가로채기 xxxMessage 함수에 대한 일반적인 내용은 시스템 가로채기 디바이스 메시지를 참조하세요.

다음 두 메시지 상수는 디바이스 인터페이스 이름을 얻기 위해 함께 사용됩니다.

  • DRV_QUERYDEVICEINTERFACESIZE
  • DRV_QUERYDEVICEINTERFACE
첫 번째 메시지는 디바이스 인터페이스 이름을 포함하는 문자열을 보유하는 데 필요한 버퍼의 크기(바이트)를 가져옵니다. 두 번째 메시지는 필요한 크기의 버퍼에서 이름 문자열을 검색합니다.

자세한 내용은 디바이스 인터페이스 이름 가져오기를 참조하세요.

메시지는 DRV_QUERYDEVICEINTERFACESIZE 디바이스 인터페이스 이름을 보유하는 데 필요한 버퍼 크기를 쿼리합니다.

의 경우 DRV_QUERYDEVICEINTERFACESIZEdwParam1은 버퍼 크기에 대한 포인터입니다. 이 매개 변수는 함수가 필요한 버퍼 크기를 바이트 단위로 쓰는 ULONG 변수를 가리킵니다. 크기에는 이름 문자열의 종료 null에 대한 스토리지 공간이 포함됩니다. 디바이스 ID가 디바이스 인터페이스가 없는 디바이스를 식별하는 경우 크기는 0입니다.

의 경우 DRV_QUERYDEVICEINTERFACESIZEdwParam2는 사용되지 않습니다. 이 매개 변수를 0으로 설정합니다.

이 메시지는 waveInMessage, waveOutMessage, midiInMessage, midiOutMessagemixerMessage 함수에만 유효합니다. 시스템은 이 메시지를 가로채고 디바이스 드라이버에 메시지를 보내지 않고 적절한 값을 반환합니다. 시스템 가로채기 xxxMessage 함수에 대한 일반적인 내용은 시스템 가로채기 디바이스 메시지를 참조하세요.

이 메시지에서 검색한 버퍼 크기는 바이트 수로 표시됩니다. 디바이스 인터페이스 이름을 포함하는 null로 종료된 유니코드 문자열을 보유하는 데 필요한 버퍼의 크기를 지정합니다. 호출자는 지정된 크기의 버퍼를 할당하고 DRV_QUERYDEVICEINTERFACE 메시지를 사용하여 디바이스 인터페이스 이름 문자열을 검색합니다.

자세한 내용은 디바이스 인터페이스 이름 가져오기를 참조하세요.

메시지는 DRV_QUERYDEVNODE 플러그 앤 플레이 관리자가 디바이스에 할당한 devnode 번호를 쿼리합니다.

의 경우 DRV_QUERYDEVNODEdwParam1은 함수가 devnode 번호를 작성하는 호출자가 할당한 DWORD 변수에 대한 포인터입니다. 디바이스에 devnode가 할당되지 않은 경우 함수는 이 변수를 0으로 설정합니다.

의 경우 DRV_QUERYDEVNODEdwParam2는 사용되지 않습니다. 이 매개 변수를 0으로 설정합니다.

Windows 2000 이상에서는 메시지가 항상 MMSYSERR_NOTSUPPORTED 반환합니다. 이 메시지는 waveInMessage, waveOutMessage, midiInMessage, midiOutMessagemixerMessage 함수에만 유효합니다. 시스템은 이 메시지를 가로채고 디바이스 드라이버에 메시지를 보내지 않고 적절한 값을 반환합니다. 시스템 가로채기 xxxMessage 함수에 대한 일반적인 내용은 시스템 가로채기 디바이스 메시지를 참조하세요.

메시지는 DRV_QUERYMAPPABLE 매퍼에서 지정된 디바이스를 사용할 수 있는지 여부를 쿼리합니다.

의 경우 DRV_QUERYMAPPABLEdwParam1은 사용되지 않습니다. 이 매개 변수를 0으로 설정합니다.

의 경우 DRV_QUERYMAPPABLEdwParam2는 사용되지 않습니다. 이 매개 변수를 0으로 설정합니다.

이 메시지는 waveInMessage, waveOutMessage, midiInMessage, midiOutMessage, mixerMessageauxOutMessage 함수에만 유효합니다. 시스템은 이 메시지를 가로채고 디바이스 드라이버에 메시지를 보내지 않고 적절한 값을 반환합니다. 시스템 가로채기 xxxMessage 함수에 대한 일반적인 내용은 시스템 가로채기 디바이스 메시지를 참조하세요.

애플리케이션 프로그램이 특정 오디오 디바이스 대신 매퍼를 열면 시스템은 애플리케이션과 사용 가능한 디바이스 사이에 매퍼를 삽입합니다. 매퍼는 애플리케이션의 요구 사항을 사용 가능한 디바이스 중 하나에 매핑하여 적절한 디바이스를 선택합니다. 매퍼에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.

메시지는 DRVM_MAPPER_CONSOLEVOICECOM_GET 기본 음성 통신 디바이스의 디바이스 ID를 검색합니다.

의 경우 DRVM_MAPPER_CONSOLEVOICECOM_GETdwParam1은 디바이스 ID에 대한 포인터입니다. 이 매개 변수는 함수가 현재 기본 설정 음성 통신 디바이스의 디바이스 ID를 쓰는 DWORD 변수를 가리킵니다. 이 함수는 기본 음성 통신 디바이스로 자격이 있는 디바이스를 사용할 수 없는 경우 값(-1)을 씁니다.

의 경우 DRVM_MAPPER_CONSOLEVOICECOM_GETdwParam2는 상태 플래그에 대한 포인터입니다. 이 매개 변수는 함수가 디바이스 상태 플래그를 작성하는 DWORD 변수를 가리킵니다. 현재 하나의 플래그 비트만 정의됩니다. DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY.

이 메시지는 waveInMessagewaveOutMessage 함수에만 유효합니다. 호출자가 DRVM_MAPPER_CONSOLEVOICECOM_GET 메시지를 사용하여 이러한 두 함수를 호출하는 경우 호출자는 디바이스 ID를 WAVE_MAPPER 지정한 다음 이 값을 적절한 핸들 형식으로 캐스팅해야 합니다. waveInMessage, waveOutMessage, midiInMessage, midiOutMessage 또는 mixerMessage 함수의 경우 호출자는 디바이스 ID를 HWAVEIN, HWAVEOUT, HMIDIIN, HMIDIOUT 또는 HMIXER 형식의 핸들로 캐스팅해야 합니다. 호출자가 이 매개 변수에 대한 디바이스 ID 대신 유효한 핸들을 제공하는 경우 함수가 실패하고 오류 코드 MMSYSERR_NOSUPPORT 반환합니다.

시스템은 이 메시지를 가로채고 디바이스 드라이버에 메시지를 보내지 않고 적절한 값을 반환합니다. 시스템 가로채기 xxxMessage 함수에 대한 일반적인 내용은 시스템 가로채기 디바이스 메시지를 참조하세요.

이 메시지는 다른 모든 오디오 기능에 선호되는 디바이스를 결정하는 DRVM_MAPPER_PREFERRED_GET 메시지와 달리 음성 통신에 특히 선호되는 디바이스를 결정하는 방법을 제공합니다.

예를 들어 음성 통신을 위한 기본 웨이브아웃 디바이스는 헤드셋의 이어피스일 수 있지만 다른 모든 오디오 기능에 선호되는 waveOut 디바이스는 스테레오 스피커 세트일 수 있습니다.

dwParam2가 가리키는 DWORD 위치에 DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY 플래그 비트가 설정되면 waveInwaveOut API는 현재 기본 설정된 음성 통신 디바이스만 사용하고 기본 설정 디바이스를 사용할 수 없는 경우 사용 가능한 다른 디바이스를 검색하지 않습니다. waveInMessage 또는 waveOutMessage 호출에 의해 출력되는 플래그는 waveInMessage 또는 waveOutMessage 호출에 대해 호출되었는지 여부에 관계없이 waveInwaveOut API 모두에 대한 기본 음성 통신 디바이스에 적용됩니다. 자세한 내용은 기본 Voice-Communications 디바이스 ID를 참조하세요.

메시지는 DRVM_MAPPER_PREFERRED_GET 기본 설정 오디오 디바이스의 디바이스 ID를 검색합니다.

의 경우 DRVM_MAPPER_PREFERRED_GETdwParam1은 디바이스 ID에 대한 포인터입니다. 이 매개 변수는 함수가 현재 기본 설정 디바이스의 디바이스 ID를 기록하는 DWORD 변수를 가리킵니다. 이 함수는 기본 설정 디바이스로 자격이 있는 디바이스를 사용할 수 없는 경우 값(-1)을 씁니다.

의 경우 DRVM_MAPPER_PREFERRED_GETdwParam2는 상태 플래그에 대한 포인터입니다. 이 매개 변수는 함수가 디바이스 상태 플래그를 작성하는 DWORD 변수를 가리킵니다. 현재 하나의 플래그 비트만 정의되어 있습니다( waveInMessagewaveOutMessage 호출에만 해당) DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY.

이 메시지는 waveInMessage, waveOutMessagemidiOutMessage 함수에 만 유효합니다. 호출자가 DRVM_MAPPER_PREFERRED_GET 메시지를 사용하여 이러한 함수를 호출하는 경우 호출자는 먼저 디바이스 ID를 WAVE_MAPPER( waveInMessage 또는 waveOutMessage의 경우) 또는 MIDI_MAPPER( midiOutMessage의 경우)로 지정한 다음 이 값을 적절한 핸들 형식으로 캐스팅해야 합니다. waveInMessage, waveOutMessage 또는 midiOutMessage 함수의 경우 호출자는 디바이스 ID를 각각 HWAVEIN, HWAVEOUT 또는 HMIDIOUT 핸들 형식으로 캐스팅해야 합니다. 호출자가 이 매개 변수에 대한 디바이스 ID 대신 유효한 핸들을 제공하는 경우 함수가 실패하고 오류 코드 MMSYSERR_NOSUPPORT 반환합니다.

시스템은 이 메시지를 가로채고 디바이스 드라이버에 메시지를 보내지 않고 적절한 값을 반환합니다. 시스템 가로채기 xxxMessage 함수에 대한 일반적인 내용은 시스템 가로채기 디바이스 메시지를 참조하세요.

이 메시지는 음성 통신에 특히 선호되는 디바이스를 결정하는 DRVM_MAPPER_CONSOLEVOICECOM_GET 메시지와 달리 일반적으로 오디오 기능에 선호되는 디바이스를 결정하는 방법을 제공합니다.

dwParam2가 가리키는 DWORD 위치에 DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY 플래그 비트가 설정되면 waveInwaveOut API는 현재 기본 설정 디바이스만 사용하고 기본 설정 디바이스를 사용할 수 없는 경우 사용 가능한 다른 디바이스를 검색하지 않습니다. midiOutMessage 함수는 이 플래그를 출력하지 않습니다. midiOut API는 항상 기본 설정 디바이스만 사용합니다. waveInMessage 또는 waveOutMessage 호출로 출력되는 플래그는 waveInMessage 또는 waveOutMessage에 대한 호출이 수행되었는지 여부에 관계없이 waveInwaveOut API 모두에 대한 기본 설정 디바이스에 적용됩니다.

xxxMessage 함수는 애플리케이션이 먼저 디바이스를 열지 않고도 기본 디바이스 ID를 확인할 수 있도록 유효한 디바이스 핸들 대신 이 값을 허용합니다. 자세한 내용은 기본 설정 디바이스 ID 액세스를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 mmeapi.h(Windows.h 포함)
라이브러리 Winmm.lib
DLL Winmm.dll

추가 정보

MIDI 함수