--- /dev/null
+#include <stdio.h>
+#include <windows.h>
+#include <ntddk.h>
+#include "mpu401.h"
+
+int main()
+{
+// NTSTATUS s;
+// PHANDLE Handle;
+// PIO_STATUS_BLOCK Status;
+ DWORD BytesReturned;
+ BYTE Test[3]; // Will store MIDI data
+ BYTE Notes[] = {50, 52, 54, 55, 57, 59, 61};
+ HANDLE Device;
+ UINT Note;
+ UINT Junk;
+
+ printf("Test program for MPU401 driver\n");
+
+ Device = CreateFile("\\\\.\\MPU401_Out_0", GENERIC_READ | GENERIC_WRITE,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ NULL,
+ OPEN_EXISTING,
+ FILE_FLAG_NO_BUFFERING,
+ NULL);
+
+ if (Device == INVALID_HANDLE_VALUE)
+ {
+ printf("Device is busy or could not be found.\n");
+ return -1;
+ }
+
+ printf("Device is open, let's play some music...\n");
+
+ Test[0] = 0x90;
+ Test[2] = 0x7f;
+
+ for (Note = 0; Note < sizeof(Notes); Note ++)
+ {
+ Test[1] = Notes[Note];
+
+ DeviceIoControl(
+ Device,
+ IOCTL_MIDI_PLAY,
+ &Test,
+ sizeof(Test),
+ NULL,
+ 0,
+ &BytesReturned,
+ NULL
+ );
+
+ for (Junk = 0; Junk < 100000; Junk ++); // Pause
+ }
+
+
+/* s = IoCreateFile(Handle, GENERIC_READ | GENERIC_WRITE,
+ OBJ_KERNEL_HANDLE,
+ Status,
+ 0,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ FILE_OPEN,
+ FILE_NON_DIRECTORY_FILE,
+ NULL,
+ 0,
+ CreateFileTypeNone,
+ NULL,
+ 0);
+*/
+}