ISpMMSysAudio::SetDeviceId (SAPI 5.4)

Speech API 5.4
Microsoft Speech API 5.4


ISpMMSysAudio::SetDeviceId sets the multimedia device ID.

HRESULT SetDeviceId(
   UINT   uDeviceId


[in] The device ID of the device to set.

Return values

S_OKFunction completed successfully.
SPERR_DEVICE_BUSYObject is not in the SPAS_CLOSED state.
SPERR_ALREADY_INITIALIZEDObject was created using an object token.
E_INVALIDARGuDeviceId is invalid. It is not set to WAVE_MAPPER or device does not exist.


This method works only on audio objects that were not created using an object token, and only when the object is in the SPAS_CLOSED state. This method should not be used in normal application development. SAPI provides tokens for all the available sound devices in a computer and these can be used to create an initialized SpMMSysAudio object. This method is available for non-standard multimedia audio devices. See the Simple Telephony sample for an example of when this method is useful.


The following code snippet illustrates the use of ISpMMSysAudio::SetDeviceId.

// Declare local identifiers:
HRESULT                   hr = S_OK;
CComPtr<ISpMMSysAudio>    cpMMSysAudio;
UINT                      ALTERNATE_MM_DEVICE = 1;
// Create the multimedia output object.
hr = cpMMSysAudio.CoCreateInstance(CLSID_SpMMAudioOut);

if (SUCCEEDED (hr))
   // Set the output device to an alternate multimedia
   // device (for example, the modem).
   hr = cpMMSysAudio->SetDeviceId(ALTERNATE_MM_DEVICE);

if (SUCCEEDED(hr))
   // Do stuff here.