Synchronizing Driver Activities
The kernel-mode audio drivers, including the Sound Blaster driver, do not
provide a StartIo function, so they must manage their own queues of I/O
Request Packets (IRPs). You must consider synchronization issues under the
following circumstances:
-
Opening and closing devices.
-
Handling I/O requests, which are sent when a client calls ReadFile, WriteFile,
or DeviceIoControl, and which are received in IRPs.
-
Sharing hardware. For instance, MIDI input and output hardware sometimes uses
the same I/O ports as waveform input and output hardware.
-
Synchronizing with Deferred Procedure Call routines (DPCs).
-
Synchronizing with Interrupt Service Routines (ISRs).
Most of the time, kernel-mode audio drivers execute at PASSIVE_LEVEL priority.
Synchronization can be achieved by: