The following code illustrates how to determine if a device has audio capability.
USHORT usDeviceID; ULONG rc; BOOL fHas_audio; /* Set to TRUE by this example if device has audio */ MCI_GETDEVCAPS_PARMS mgdcp; /* Determine if device has audio capability */ mgdcp.ulItem = MCI_GETDEVCAPS_HAS_AUDIO; rc = mciSendCommand(usDeviceID, /* Device ID */ MCI_GETDEVCAPS, /* Get device capability message */ MCI_WAIT | MCI_GETDEVCAPS_ITEM, /* Flags for this message */ (PVOID) &mgdcp, /* Data structure */ 0); /* No user parm */ if (LOUSHORT(rc) == MCIERR_SUCCESS) { fHas_audio = (BOOL) mgdcp.ulReturn; /* Return if device has audio */ }
The following example illustrates how an application can determine if it can set the volume attribute for a particular connector.
ULONG rc; MCI_AMP_GETDEVCAPS_PARMS mciAmpCaps; USHORT usDeviceID; /* Test to see if the mixer supports volume changes on the mic. */ mciAmpCaps.ulValue = MCI_MICROPHONE_CONNECTOR; mciAmpCaps.ulAttribute = MCI_AMP_CAN_SET_VOLUME; mciAmpCaps.ulExtended = MCI_MIXER_LINE; rc = mciSendCommand(usDeviceID, MCI_GETDEVCAPS, MCI_WAIT | MCI_GETDEVCAPS_EXTENDED, (ULONG)&mciAmpCaps, 0);