1 #include <stdio.h>
2 #include <windows.h>
3 #include <ntddk.h>
4 #include "mpu401.h"
5 
6 int main()
7 {
8 //    NTSTATUS s;
9 //    PHANDLE Handle;
10 //    PIO_STATUS_BLOCK Status;
11     DWORD BytesReturned;
12     BYTE Test[3]; // Will store MIDI data
13     BYTE Notes[] = {50, 52, 54, 55, 57, 59, 61};
14     HANDLE Device;
15     UINT Note;
16     UINT Junk;
17 
18     printf("Test program for MPU401 driver\n");
19 
20     Device = CreateFile("\\\\.\\MPU401_Out_0", GENERIC_READ | GENERIC_WRITE,
21                         FILE_SHARE_READ | FILE_SHARE_WRITE,
22                         NULL,
23                         OPEN_EXISTING,
24                         FILE_FLAG_NO_BUFFERING,
25                         NULL);
26 
27     if (Device == INVALID_HANDLE_VALUE)
28     {
29         printf("Device is busy or could not be found.\n");
30         return -1;
31     }
32 
33     printf("Device is open, let's play some music...\n");
34 
35         Test[0] = 0x90;
36         Test[2] = 0x7f;
37 
38     for (Note = 0; Note < sizeof(Notes); Note ++)
39     {
40         Test[1] = Notes[Note];
41 
42     DeviceIoControl(
43         Device,
44         IOCTL_MIDI_PLAY,
45         &Test,
46         sizeof(Test),
47         NULL,
48         0,
49         &BytesReturned,
50         NULL
51         );
52 
53         for (Junk = 0; Junk < 100000; Junk ++);   // Pause
54     }
55 
56 
57 /*    s = IoCreateFile(Handle, GENERIC_READ | GENERIC_WRITE,
58                      OBJ_KERNEL_HANDLE,
59                      Status,
60                      0,
61                      FILE_SHARE_READ | FILE_SHARE_WRITE,
62                      FILE_OPEN,
63                      FILE_NON_DIRECTORY_FILE,
64                      NULL,
65                      0,
66                      CreateFileTypeNone,
67                      NULL,
68                      0);
69 */
70 }
71