BASS_INFO structure

Used with BASS_GetInfo to retrieve information on the current device.

typedef struct {
    DWORD size;
    DWORD flags;
    DWORD hwsize;
    DWORD hwfree;
    DWORD freesam;
    DWORD free3d;
    DWORD minrate;
    DWORD maxrate;
    BOOL eax;
    DWORD a3d;
    DWORD dsver;
} BASS_INFO;

Members
sizeThis must be initialized to the size of the structure before calling BASS_GetInfo.
flagsThe device's capabilities... a combination of these flags.
DSCAPS_CONTINUOUSRATEThe device supports all sample rates between min/maxrate.
DSCAPS_EMULDRIVERThe device does NOT have hardware DirectSound support. All other members of the structure are irrelevant if the device doesn't have hardware support.
DSCAPS_CERTIFIEDThe device driver has been certified by Microsoft.
DSCAPS_SECONDARYMONOMono samples are supported by hardware mixing.
DSCAPS_SECONDARYSTEREOStereo samples are supported by hardware mixing.
DSCAPS_SECONDARY8BIT8 bit samples are supported by hardware mixing.
DSCAPS_SECONDARY16BIT16 bit samples are supported by hardware mixing.
hwsizeThe device's total amount of hardware memory.
hwfreeThe device's amount of free hardware memory.
freesamThe number of free sample slots in the hardware.
free3dThe number of free 3D sample slots in the hardware.
minrateThe minimum sample rate supported by the hardware.
maxrateThe maximum sample rate supported by the hardware.
eaxThe device supports EAX? This is always FALSE if BASS_DEVICE_3D was not used when BASS_Init was called.
a3dA3D driver version... 10 = A3D 1.0, 12 = A3D 1.2 or above, 0 = BASS_DEVICE_A3D was not used when BASS_Init was called.
dsverDirectSound version... 5+ = DX5 features are available, 7+ = DX7 features are available.

Remarks
The DSCAPS_SECONDARY flags only indicate which sample formats are supported by hardware mixing. Mono/stereo 8/16 bit samples are all supported by software mixing.

The dsver value can be used check for the availability of functions that require a minimum version of DirectX. Note that this value is the DirectSound version, and it is not necessarily also the DirectX version. For example, DirectX 6 has DirectSound version 5 because no changes were made to the DirectSound interface in DirectX 6.

The only real difference between A3D 1.0 and A3D 1.2, from a functionality point of view, is the A3D_RESMODE_DYNAMIC_LOOPERS resource management mode. But there are also bug-fixes in A3D 1.2, so even if you do not use this resource management mode, you should still recommend that the user gets updated drivers if they have A3D 1.0 drivers.

See also
BASS_GetInfo