다음을 통해 공유


mixerMessage 함수(mmeapi.h)

mixerMessage 함수는 사용자 지정 믹서 드라이버 메시지를 믹서 드라이버에 직접 보냅니다.

구문

DWORD mixerMessage(
  HMIXER    hmx,
  UINT      uMsg,
  DWORD_PTR dwParam1,
  DWORD_PTR dwParam2
);

매개 변수

hmx

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

uMsg

믹서 드라이버에 보낼 사용자 지정 믹서 드라이버 메시지입니다. 이 메시지는 MXDM_USER 상수보다 크거나 같아야 합니다.

dwParam1

전송되는 메시지와 관련된 매개 변수입니다.

dwParam2

전송되는 메시지와 관련된 매개 변수입니다.

반환 값

사용자 지정 믹서 드라이버 메시지와 관련된 값을 반환합니다. 가능한 오류 값은 다음과 같습니다.

반환 코드 설명
MMSYSERR_INVALHANDLE
지정된 디바이스 핸들이 잘못되었습니다.
MMSYSERR_INVALPARAM
MXDM_USER 메시지에 지정된 uMsg 매개 변수가 잘못되었습니다.
MMSYSERR_NOSUPPORT
deviceID 매개 변수는 유효한 디바이스 ID여야 합니다.
MMSYSERR_NOTSUPPORTED
믹서 디바이스가 메시지를 처리하지 않았습니다.

설명

사용자 정의 메시지는 메시지를 지원하는 믹서 드라이버로만 보내야 합니다. 애플리케이션은 믹서 기능을 검색하고 MIXERCAPS 구조체의 wMid, wPid, vDriverVersionszPname 멤버를 확인하여 믹서 드라이버가 메시지를 지원하는 드라이버인지 확인해야 합니다.

메시지는 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 디바이스는 헤드셋의 이어피스일 수 있지만 다른 모든 오디오 기능에 대해 선호하는 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

참고 항목

오디오 믹서 함수

오디오 믹서