WindowsでMIDIインプットデバイスをリストアップをするだけのC++プログラムのソースコードです。
#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
int main(int argc, char** argv)
{
MMRESULT result;
MIDIINCAPS midi_in_caps;
const s32 BUFF_SIZE = 32;
char device_name_buff[BUFF_SIZE];
unsigned int num_devices = midiInGetNumDevs();
printf( "number of devices: %d\n", num_devices);
for( unsigned int dev_id=0; dev_id<num_devices; ++dev_id )
{
UINT cbMidiInCaps;
result = midiInGetDevCaps(
dev_id,
&midi_in_caps,
sizeof(midi_in_caps)
);
if (result != MMSYSERR_NOERROR) { continue; }
errno_t error = wcstombs_s(
NULL, device_name_buff, BUFF_SIZE,
midi_in_caps.szPname, sizeof(midi_in_caps.szPname));
if( error!=0 ){ continue; }
printf("ID=%d: %s\n", dev_id, device_name_buff);
}
return 0;
}