#ifndef __INCLUDES_MPU401_H__
#define __INCLUDES_MPU401_H__
+//#include <mmsystem.h>
+//#include <mmddk.h>
+//#include <winioctl.h>
+#include "../../../lib/mmdrv/mmdef.h"
+
#define DEFAULT_PORT 0x330
#define DEFAULT_IRQ 9
#define MPU401_TIMEOUT 10000
+/* OBSOLETE - see mmdef.h instead:
#define IOCTL_SOUND_BASE FILE_DEVICE_SOUND
// wave base 0
#define IOCTL_MIDI_BASE 0x0080
#define IOCTL_MIDI_RECORD CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0007, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_MIDI_CACHE_PATCHES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0008, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_MIDI_CACHE_DRUM_PATCHES CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
-
+*/
// The MPU-401 has 2 ports, usually 0x330 and 0x331, which are known as
// "data" and "status/command", respectively. These macros deal with
{
PUNICODE_STRING RegistryPath;
PDRIVER_OBJECT DriverObject;
- UINT Port;
- UINT IRQ;
+ ULONG Port;
+ ULONG IRQ;
// KDPC Dpc;
// KTIMER Timer;
// KEVENT Event;
//typedef struct _CONFIG
//{
-// UINT Port;
-// UINT IRQ;
+// ULONG Port;
+// ULONG IRQ;
//} CONFIG, *PCONFIG;
/*
Prototypes for functions in portio.c :
*/
-BOOLEAN WaitToSend(UINT BasePort);
-BOOLEAN WaitToReceive(UINT BasePort);
-BOOLEAN InitUARTMode(UINT BasePort);
+BOOLEAN WaitToSend(ULONG BasePort);
+BOOLEAN WaitToReceive(ULONG BasePort);
+BOOLEAN InitUARTMode(ULONG BasePort);
/*
Prototypes for functions in settings.c :
*/
-NTSTATUS EnumDeviceKeys(
+NTSTATUS STDCALL EnumDeviceKeys(
IN PUNICODE_STRING RegistryPath,
IN PWSTR SubKey,
IN PREGISTRY_CALLBACK_ROUTINE Callback,
IN PVOID Context);
-NTSTATUS LoadSettings(
+NTSTATUS STDCALL LoadSettings(
IN PWSTR ValueName,
IN ULONG ValueType,
IN PVOID ValueData,
IN PVOID Context,
IN PVOID EntryContext);
+NTSTATUS STDCALL
+DriverEntry(PDRIVER_OBJECT DriverObject,
+ PUNICODE_STRING RegistryPath);
+
#endif