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.