SoundFreeQ

VOID
    SoundFreeQ(
        PLIST_ENTRY
ListHead,
        NTSTATUS
IoStatus
        );

The SoundFreeQ function traverses a queue of IRPs. For each IRP, the function completes the interrupt request and removes the IRP from the queue.

Parameters
ListHead
Pointer to the head of a queue of IRPs.
IoStatus
An NTSTATUS code to use as an IRP completion status. This value, which is placed in each IRP, is generally either STATUS_SUCCESS or STATUS_CANCELLED.
Return Value

None.

Comments

The function completes the interrupt request by calling IoCompleteRequest, with a priority boost argument of IO_SOUND_INCREMENT.

SoundFreeQ only works for IRP queues created by calling SoundAddIrpToCancellableQ. It dequeues entries by calling SoundRemoveFromCancellableQ.

Generally, drivers using soundlib.lib do not need to manipulate IRP queues because DPCs in soundlib.lib handle IRP completion. For drivers that do manipulate IRP queues, the SoundAddIrpToCancellableQ, SoundRemoveFromCancellableQ, SoundMoveCancellableQueue, SoundFreePendingIrps, and SoundFreeQ functions are provided.