SoundCreateDevice

NTSTATUS
    SoundCreateDevice(
        IN PCSOUND_DEVICE_INIT
DeviceInit,
        IN UCHAR
CreationFlags,
        IN PDRIVER_OBJECT
pDriverObject,
        IN PVOID
pGDI,
        IN PVOID
DeviceSpecificData,
        IN PVOID
pHw,
        IN int
i,
        OUT PDEVICE_OBJECT
*ppDevObj
        );

The SoundCreateDevice function creates a device object and an associated LOCAL_DEVICE_INFO structure.

Parameters
DeviceInit
Pointer to an initialized SOUND_DEVICE_INIT structure.
CreationFlags
The following flag values are supported:

Flag

Definition

SOUND_CREATION_NO_NAME_RANGE

Don’t append number to name prototype when creating device name.

SOUND_CREATION_NO_VOLUME

Volume setting not supported.

pDriverObject
Pointer to the driver object received as input to the DriverEntry function.
pGDI
Pointer to driver-specified information. Pointer is stored in the pGlobalInfo member of the device’s LOCAL_DEVICE_INFO structure.
DeviceSpecificData
Pointer to one of the following device-type structures.

Structure

Usage

WAVE_INFO

For waveform devices

MIDI_INFO

For MIDI devices

MIXER_INFO

For mixer devices

NULL

For other devices

pHw
Pointer to driver-specified hardware context information. The pointer is stored in the HwContext member of the device’s LOCAL_DEVICE_INFO structure.
i
Driver-specified index value. Stored in DeviceIndex member of the device’s LOCAL_DEVICE_INFO structure.
ppDevObj
Address of a location to receive a pointer to a DEVICE_OBJECT structure, if the call succeeds.
Return Value

Returns STATUS_SUCCESS if device creation succeeds. Returns STATUS_INSUFFICIENT_RESOURCES if device creation fails.

Comments

The SOUND_DEVICE_INIT structure must be nonpaged.

The SoundCreateDevice function creates a device object by calling IoCreateDevice. If the object creation succeeds, the function returns the address of a DEVICE_OBJECT structure. The function also allocates a LOCAL_DEVICE_INFO structure and assigns its address to the DeviceExtension member of the DEVICE_OBJECT structure.

The function calls IoCreateSymbolicLink to map the NT generic name for the device object to the corresponding Win32 logical name.

For more information about device objects, see the Kernel-Mode Drivers Design Guide.