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