GLOBAL_SYNTH_INFO
typedef struct _GLOBAL_SYNTH_INFO {
ULONG Key;
#define SYNTH_KEY (*(ULONG *)"Syn ")
INTERFACE_TYPE BusType;
ULONG BusNumber;
KMUTEX MidiMutex;
ULONG MemType;
PDEVICE_OBJECT DeviceObject;
PDRIVER_OBJECT DriverObject;
SOUND_DISPATCH_ROUTINE *DevCapsRoutine;
UCHAR DeviceInUse;
volatile BOOLEAN InterruptFired; // Interrupt fired?
BOOLEAN IsOpl3; // It's an OPL3
SYNTH_HARDWARE Hw; // Hardware specific stuff
} GLOBAL_SYNTH_INFO, *PGLOBAL_SYNTH_INFO;
The GLOBAL_SYNTH_INFO structure contains context information for a mixer
device.
Members
-
Key
-
Internal only, for debugging. Should be “Syn “.
-
BusType
-
Bus type. INTERFACE_TYPE is defined in ntddk.h.
-
BusNumber
-
Bus number.
-
MidiMutex
-
Internal only. Mutex object used by soundlib.lib’s exclusion routine.
-
MemType
-
Memory type returned by SoundMapPortAddress.
-
DeviceObject
-
Pointer to device object returned by SoundCreateDevice.
-
DriverObject
-
Pointer to driver object received by DriverEntry.
-
DevCapsRoutine
-
Pointer to a driver-defined function that returns device capabilities. The
function type is SOUND_DISPATCH_ROUTINE.
-
DeviceInUse
-
Internal only. Indicates device status.
-
InterruptFired
-
Set by driver if interrupt fired. Not set by soundlib.lib.
-
IsOpl3
-
Set if synthesizer is OPL3-compatible.
-
Hw
-
Hardware information. Member type is SYNTH_HARDWARE.
Comments
Allocate a GLOBAL_SYNTH_INFO structure from the nonpaged memory pool by
calling ExAllocatePool, then zero it by
calling RtlZeroMemory. The structure is
initialized by code in SynthInit.