aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2025-03-17 11:34:53 +0300
committerWohlstand <admin@wohlnet.ru>2025-03-17 11:34:53 +0300
commit4f654750d643dc0fb2452f7f16cb6c803dfa2ecd (patch)
treec0f500e31f05fc088f4472c20996fc0c4dd0ff90 /utils
parentbf394963d137d039e639b473337a29daa1782009 (diff)
downloadlibADLMIDI-4f654750d643dc0fb2452f7f16cb6c803dfa2ecd.tar.gz
libADLMIDI-4f654750d643dc0fb2452f7f16cb6c803dfa2ecd.tar.bz2
libADLMIDI-4f654750d643dc0fb2452f7f16cb6c803dfa2ecd.zip
WinMM: Extended test utility
Diffstat (limited to 'utils')
-rw-r--r--utils/winmm_drv/test/test.c55
1 files changed, 54 insertions, 1 deletions
diff --git a/utils/winmm_drv/test/test.c b/utils/winmm_drv/test/test.c
index f6fd2e9..bd147df 100644
--- a/utils/winmm_drv/test/test.c
+++ b/utils/winmm_drv/test/test.c
@@ -4,10 +4,39 @@
typedef DWORD (WINAPI * MessagePtr)(UINT, UINT, DWORD, DWORD, DWORD);
+#ifndef MMNOMIDI
+
+typedef struct midiopenstrmid_tag
+{
+ DWORD dwStreamID;
+ UINT uDeviceID;
+} MIDIOPENSTRMID;
+
+typedef struct midiopendesc_tag {
+ HMIDI hMidi;
+ DWORD_PTR dwCallback;
+ DWORD_PTR dwInstance;
+ DWORD_PTR dnDevNode;
+ DWORD cIds;
+ MIDIOPENSTRMID rgIds[1];
+} MIDIOPENDESC;
+
+typedef MIDIOPENDESC FAR *LPMIDIOPENDESC;
+
+#endif // MMNOMIDI
+
#ifndef MODM_GETDEVCAPS
#define MODM_GETDEVCAPS 2
#endif
+#ifndef MODM_OPEN
+#define MODM_OPEN 3
+#endif
+
+#ifndef MODM_CLOSE
+#define MODM_CLOSE 4
+#endif
+
LONG testDriver()
{
HDRVR hdrvr;
@@ -17,10 +46,12 @@ LONG testDriver()
DWORD modRet;
MIDIOUTCAPSA myCapsA;
MessagePtr modMessagePtr;
+ MIDIOPENDESC desc;
+ LONG totalClientNum = 0;
printf("Open...\n");
// Open the driver (no additional parameters needed this time).
- if((hdrvr = OpenDriver(L"adlmididrv.dll", 0, 0)) == 0)
+ if((hdrvr = OpenDriver(L".\\adlmididrv.dll", 0, 0)) == 0)
{
printf("!!! Can't open the driver\n");
return -1;
@@ -67,6 +98,28 @@ LONG testDriver()
}
printf("<-- %s\n", myCapsA.szPname);
+
+ printf("Trying to open driver\n");
+ ZeroMemory(&desc, sizeof(desc));
+ desc.dwInstance = (DWORD_PTR)hdrvr;
+ modRet = modMessagePtr(0, MODM_OPEN, (DWORD_PTR)&totalClientNum, (DWORD_PTR)&desc, sizeof(desc));
+ if(modRet != MMSYSERR_NOERROR)
+ {
+ CloseDriver(hdrvr, 0, 0);
+ printf("!!! modMessage returned an error!\n");
+ return -1;
+ }
+
+ printf("<-- Client Num: %d\n", totalClientNum);
+
+ printf("Trying to close\n");
+ modRet = modMessagePtr(0, MODM_CLOSE, (DWORD_PTR)NULL, NULL, 0);
+ if(modRet != MMSYSERR_NOERROR)
+ {
+ CloseDriver(hdrvr, 0, 0);
+ printf("!!! modMessage returned an error!\n");
+ return -1;
+ }
}
else
{