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.