Caution: This version of this document is no longer maintained. For the latest documentation, see


Control callback functions


typedef struct snd_ctl_callbacks {
    void *private_data; /* should be used by an application */
    void (*rebuild) (void *private_data);
    void (*xswitch) (void *private_data, int cmd,
                     int iface, snd_switch_list_item_t *item);
    void *reserved[29]; /* reserved for the future use - must be NULL!!! */
} snd_ctl_callbacks_t;


Use the snd_ctl_callbacks_t structure to define the callback functions that you need to handle control events. Pass a pointer to an instance of this structure to snd_ctl_read().

The members of the snd_ctl_callbacks_t structure include:

Note: Make sure that you zero-fill any members that you aren't interested in. You can zero-fill the entire snd_ctl_callbacks_t structure if you aren't interested in tracking any of these events.

rebuild callback

The rebuild callback is called whenever the control device is rebuilt. Its only argument is the private_data that you specified in this structure.

xswitch callback

The xswitch callback is called whenever a switch changes. Its arguments are:

A pointer to the arbitrary data that you specified in this structure.
One of:
The device interface the switch is natively associated with. The possible values are (from <sys/asound.h>):
A pointer to a snd_switch_list_item_t structure that identifies the specific switch that's been changed. This structure has only a name member.


QNX Neutrino

See also: