### IMMAudioCD

  The IMMAudioCD class is the audio compact disc (CD) class and provides behavior for CD audio players. Most people are familiar with a home or car CD player. So, just as for a normal CD player, there are functions for play, pause, stop, trackForward, trackBackward, scanning, and so on. Plus, there are some additional features, for example, rearranging the playback order for tracks and storing track and disc titles.

### IMMAudioCD - Member Functions and Data by Group

### Constructors & Destructor

You can construct and destruct objects of this class.

~IMMAudioCD

      public:
      virtual ~IMMAudioCD()

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

IMMAudioCD

  Overload 1

      public:
      IMMAudioCD( IProfile* profile = 0,
                  bool openNow = true,
                  unsigned long instance = 0,
                  bool openShareable = true )

  You can construct an IMMAudioCD from the following:

  profile
    You can provide your own profile where information can be retrieved and stored from. Some of the information stored in a profile is disc titles and the IMMAudioCDContents for different CDs. If you pass in 0, then the device uses the system profile for storing and retrieving information.
  openNow
    If true, it causes the device to automatically open the device before returning from the constructor; otherwise, you would have to call one of the open functions to open the device yourself.
  instance
    You can provide your own instance number instead of letting IMMAudioCD generate one.
  openShareable
    If true, it allows the hardware device to be shared by different programs; otherwise, the hardware cannot be shared.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

  Overload 2

      protected:
      IMMAudioCD( unsigned long deviceIdentifier,
                  const IString& newAlias = IString ( ) )

  A derived class can construct an IMMAudioCD from the following:

  deviceIdentifier
    The value the system uses to identify the device.
  newAlias
    The name you can use to associate a string to the device. Optional.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### Compact Disc Information

Use these members to query information and states for the CD audio device and the loaded compact disc. For example, you can query and set autoPlay and continuousPlay, and you can query the number of tracks, the disc title, the disc identifier, and the universal product code (upc).

currentTrack

      public:
      unsigned long currentTrack() const

  Returns the current track.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

disableAutoPlay

      public:
      IMMAudioCD& disableAutoPlay()

  Sets autoplay off. Autoplay causes the CD audio device to start playing whenever a CD is loaded.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

disableContinuousPlay

      public:
      IMMAudioCD& disableContinuousPlay()

  Sets continuous play off. If the continuous play is set, then the current track is repeated continuously on playback.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

discId

      public:
      IString discId(CallType call = wait) const

  Returns the identifier of the current disc. If there is no identifier on the CD, then it returns a null IString.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

discTitle

      public:
      IString discTitle() const

  Returns the disc title. A null IString is returned if you have not set a title.

Exception

  IInvalidRequest | There must be media present in the device.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

enableAutoPlay

      public:
      IMMAudioCD& enableAutoPlay(bool autoPlay = true)

  Turns autoplay on or off. Autoplay causes the audio CD device to start playing whenever a CD is loaded.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

enableContinuousPlay

      public:
      IMMAudioCD&
        enableContinuousPlay( bool continuousPlay = true )

  Turns continuous play on or off. If the continuous play is set, then the current track is repeated continuously on playback.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

isAutoPlayEnabled

      public:
      bool isAutoPlayEnabled() const

  Returns true, if autoplay is turned on. Autoplay causes the audio CD device to start playing whenever a CD is loaded.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

isContinuousPlayEnabled

      public:
      bool isContinuousPlayEnabled() const

  Returns true, if continuous play is turned on. If the continuous play is set, then the current track is repeated continuously on playback.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

numberOfTracks

      public:
      unsigned long numberOfTracks(CallType call = wait) const

  Returns the number of tracks.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

setDiscTitle

      public:
      IMMAudioCD& setDiscTitle(const IString& title)

  Sets the disc's title. The disc title is stored in the currently set profile. See setProfile for more information on profiles.

Exception

  IInvalidRequest | There must be media present in the device.
  IInvalidRequest | The device must be in the open state before calling this function.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

setTrackTitle

      public:
      IMMAudioCD&
        setTrackTitle( const IString& title,
                       unsigned long track )

  Sets the track's title. The track title is stored in the currently set profile. See setProfile for more information on profiles.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

trackTitle

      public:
      IString trackTitle(unsigned long track) const

  Returns the track's title. A null IString is returned if you have not set a title for the passed-in track.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

upc

      public:
      IString upc(CallType call = wait) const

  Returns the disc's universal product code (serial number). If the disc does not contain a upc, then a null IString is returned.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

discProgramKey

      public:
      static const IString discProgramKey

  Contains the text string "IMMAudioCDProgramTitle". This string is used as a key to query and retrieve information from a profile.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

discTitleKey

      public:
      static const IString discTitleKey

  This is set to the text string "IMMAudioCDDiscTitle". This string is used as a key to query and retrieve information from a profile.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### Implementation

These members are overridden to provide additional processing.

setVolume

      public:
      virtual IMMAudioCD&
        setVolume( unsigned long volume,
                   AudioChannel channel = all,
                   const IMMMillisecondTime& over = IMMMillisecondTime ( ),
                   CallType call = wait )

  Sets the volume of the audio channel for the device, where 0 is the least amount of volume and 100 is the most amount of volume.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

Portability Considerations

  This member is overridden in this derived class for specific operating system behavior.

volume

      public:
      virtual unsigned long
        volume( AudioChannel channel = left,
                CallType call = wait ) const

  Returns the volume of the audio channel for the device, where 0 is the least amount of volume and 100 is the most amount of volume.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

Portability Considerations

  This member is overridden in this derived class for specific operating system behavior.

isOpenStringValid

      protected:
      virtual bool
        isOpenStringValid( const IString& deviceName ) const

  Returns true if the passed-in open string is valid for this device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

uniqueDiscIdentifier

      protected:
      virtual IString uniqueDiscIdentifier() const

  Returns the unique disc identifier. This value is the name of this class plus the identifier of the disc. This can be useful to use in addition to the upc, because not all manufacturers put a upc on their CDs.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### Notification Event Descriptions

These INotificationId strings are used for all notifications that IMMAudioCD provides to its observers.

positionTimerId

      public:
      static INotificationId const positionTimerId

  Notification identifier provided to observers as the position changes. IMMAudioCD provides a pointer to an IMMTrackMinSecFrameTime in the INotificationEvent::eventData field of the INotificationEvent. This value represents the current position of the CD.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

trackStartedId

      public:
      static INotificationId const trackStartedId

  Notification identifier provided to observers when the a new track is started. IMMAudioCD provides a pointer to an IMMTrackMinSecFrameTime in the eventData field of the INotificationEvent. This value represents the current position of the CD.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### Play, Stop, and Scan

Use these members to stop playing or scanning, start scanning or playing, resume or pause the playback, or move the current position to a new location.

goToEntry

  Moves the current position to the passed in location. This location is a track number and the time into the track.

  Overload 1

      public:
      virtual IMMAudioCD& goToEntry(unsigned long index)

  Moves to the track stored in the current program at the passed-in index. If you passed in 3, it looks up the track number in the current program at that location. If you have not set your own program then the default program is used. This program is a straight mapping of the tracks; for example, at index 3, track number 3 is stored. You can set your own program. For example, you could have the following: at index 1, track 5; at index 2, track 4; and at index 3, track 6. If you passed in index 3, this function moves the current position to track number 6.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

  Overload 2

      public:
      virtual IMMAudioCD&
        goToEntry( IMMAudioCDContents::Cursor cursor )

  Moves to the track stored in the current program at the passed-in cursor. If you passed in a cursor that points to index 3, it looks up the track number in the current program at that location. If you have not set your own program then the default program is used. This program is a straight mapping of the tracks; for example, at index 3, track number 3 is stored. You can set your own program. For example, you could have the following: at index 1, track 5; at index 2, track 4; and at index 3, track 6. If you passed in a cursor that points to index 3, this function moves the current position to track number 6.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

pause

      public:
      virtual IMMAudioCD& pause(CallType call = wait)

  Pauses the audio CD device if the audio CD device is playing.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

play

      public:
      virtual IMMAudioCD&
        play( const IMMTime& from = IMMTime ( ),
              const IMMTime& to = IMMTime ( ),
              bool resumeIfPaused = true,
              CallType call = nowait )

  Starts playing the CD device from the passed-in start position to the passed-in end position. If from is omitted, the CD device starts playing at the current position; if to is omitted, play stops at the end of the disc. If the resumeIfPaused boolean is true and the CD player is paused, it resumes playing at the current location; otherwise, it starts playing at the passed-in from location.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.
  IAccessError | Invalid from position; possibly the from position is greater than the end position or the from position is greater than the to position.
  IAccessError | Invalid to position; possibly the to position is greater than the contents of the CD.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

resume

      public:
      virtual IMMAudioCD&
        resume( bool resume = true,
                CallType call = wait )

  Resumes playback of the compact disc from a paused state. The previous specified to parameter in the play function remains in effect.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

startScanningBackward

      public:
      IMMAudioCD& startScanningBackward()

  Causes the audio CD device to search backward at high speed. If the device is currently scanning backward, this function has no effect, but, if the device is currently scanning forward, this causes the scanning to stop and to start scanning backward. You can stop the scanning by calling the stop function, or, if the CD was playing when scanning started, the play function stops the scanning and resumes playback at the new location. The scanning wraps to the end when it reaches the beginning of the compact disc.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

startScanningForward

      public:
      IMMAudioCD& startScanningForward()

  Causes the audio CD device to search forward at high speed. If the device is currently scanning forward, this function has no effect, but, if the device is currently scanning backward, this causes the scanning to stop and to start scanning forward. You can stop the scanning by calling the stop function, or, if the CD was playing when scanning started, the play function stops the scanning and resumes playback at the new location. The scanning wraps to the beginning when it reaches the end of the compact disc.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

stop

      public:
      virtual IMMAudioCD& stop(CallType call = wait)

  Stops playback and backward or forward scanning of the compact disc.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

trackBackward

      public:
      IMMAudioCD& trackBackward(unsigned long decrement = 1)

  Moves the current position backwards the passed-in number of tracks. If the device was playing, it starts playing at the new position.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

trackForward

      public:
      IMMAudioCD& trackForward(unsigned long increment = 1)

  Moves the current position forwards the passed-in number of tracks. If the device was playing, it starts playing at the new position.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### Profile and Program

Use these members to change and query the profile and program.

contents

      public:
      IMMAudioCDContents contents() const

  Returns a copy of the CD's table of contents.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

currentContentsEntry

      public:
      unsigned long currentContentsEntry() const

  Returns the position number of the current contents.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

profile

      public:
      IProfile profile() const

  Returns the current profile. The profile contains one or more compact disc titles and their IMMAudioCDContents. This can be useful if you want to retain a table of contents for one or more compact discs. For example, you might have a demo CD that you want to play the third track first, followed by the second, and so on. You would not want to have to rearrange the tracks every time you loaded that CD. By storing the information in a profile, the IMMAudioCD class can load that disc's information from the profile so you do not have to reenter anything.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

setProfile

      public:
      IMMAudioCD& setProfile(IProfile& profile)

  Sets a new profile. The profile contains one or more compact disc titles and their IMMAudioCDContents. This can be useful if you want to retain a table of contents for one or more compact discs. For example, you might have a demo CD that you want to play the third track first, followed by the second, and so on. You would not want to have to rearrange the tracks every time you loaded that CD. By storing the information in a profile, the IMMAudioCD class can load that disc's information from the profile so you do not have to reenter anything.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

setProgram

      public:
      IMMAudioCD& setProgram(const IMMAudioCDContents& program)

  Sets a new table of contents. The table of contents is stored in the currently set profile. The IMMAudioCD class plays and scans the compact disc according to the current table of contents. This allows you create your own table of contents for the current disc. For instance, you might want to store your compact discs (title and table of contents) in a database. Then, when you insert a CD, you could query its ID and see if it is in your database. If so, then you could retrieve your table of contents and set it into the device so that it always plays back the same way.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### Table

Use these members to query the hard-coded table of contents stored on the compact disc.

getTableFromDisc

      protected:
      IMMAudioCDContents getTableFromDisc()

  Generates a table of contents based on the hard-coded values stored on the compact disc. The only data stored on the compact disc are the tracks and their lengths.

Exception

  IAccessError | The device identifier is not valid; possibly the device is closed.
  IAccessError | The device cannot acquire access to the hardware device; possibly another device of this same type was acquired for exclusive use in this or another process.
  IAccessError | An internal driver error occurred.
  IInvalidRequest | The device must be in the open state before calling this function.
  IInvalidRequest | There must be media present in the device.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | No

### IMMAudioCD - Inherited Member Functions and Data

#### Inherited Public Functions

  IMMDevice

  -     virtual ~IMMDevice()

  -     virtual IMMDevice&
          acquire( ShareMode acquire = shareable,
                   bool queuedForResources = false,
                   CallType call = wait )

  -     IString aliasName() const

  -     virtual IMMDevice& close(CallType call = wait)

  -     unsigned long
          connectedDeviceId( ConnectorType type,
                             CallType call = wait ) const

  -     virtual IMMDevice&
          deletePendingEvents( EventType event = allEvents )

  -     IString description(CallType call = wait) const

  -     unsigned long deviceId() const

  -     IString deviceName() const

  -     unsigned long deviceType(CallType call = wait) const

  -     virtual IMMDevice&
          disableAudio( AudioChannel channel = all,
                        const IMMMillisecondTime& over = IMMMillisecondTime ( ),
                        CallType call = wait )

  -     virtual IMMDevice&
          disableConnector( ConnectorType type,
                            CallType call = wait )

  -     virtual IMMDevice&
          enableAudio( bool enable = true,
                       AudioChannel channel = all,
                       const IMMMillisecondTime& over = IMMMillisecondTime ( ),
                       CallType call = wait )

  -     virtual IMMDevice&
          enableConnector( ConnectorType type,
                           bool enable = true,
                           CallType call = wait )

  -     virtual IMMDevice& enableNotification(bool enabled = true)

  -     bool isAcquired(CallType call = wait) const

  -     bool
          isAudioEnabled( AudioChannel channel = all,
                          CallType call = wait )

  -     bool isCloseOnDestroy() const

  -     bool
          isConnectionSupported( ConnectorType type,
                                 CallType call = wait ) const

  -     bool
          isConnectorEnabled( ConnectorType type,
                              CallType call = wait ) const

  -     bool isOpen() const

  -     virtual Mode mode(CallType call = wait) const

  -     virtual IMMDevice&
          open( const IString& fileOrDevice = IString ( ),
                bool shareable = true,
                CallType call = wait )

  -     virtual IMMDevice&
          openOnThread( const IString& fileOrDevice = IString ( ),
                        bool shareable = true,
                        CallType call = wait )

  -     IMMTime prerollTime(CallType call = wait) const

  -     PrerollType prerollType(CallType call = wait) const

  -     virtual IMMDevice& release(CallType call = wait)

  -     bool requiresFiles(CallType call = wait) const

  -     IMMDevice& setCloseOnDestroy(bool close = true)

  -     virtual IMMDevice&
          setSpeedFormat( IMMSpeed::Format format,
                          CallType call = wait )

  -     virtual IMMDevice&
          setTimeFormat( IMMTime::Format format,
                         CallType call = wait )

  -     virtual IMMDevice&
          setVolume( unsigned long volume,
                     AudioChannel channel = all,
                     const IMMMillisecondTime& over = IMMMillisecondTime ( ),
                     CallType call = wait )

  -     IMMSpeed::Format speedFormat(CallType call = wait) const

  -     bool supportsAudio(CallType call = wait) const

  -     bool
          supportsCommand( IMMNotifyEvent::Command command,
                           CallType call = wait ) const

  -     bool supportsDigitalTransfer(CallType call = wait) const

  -     bool supportsDisableEject(CallType call = wait) const

  -     bool supportsEject(CallType call = wait) const

  -     bool supportsPlay(CallType call = wait) const

  -     bool supportsRecord(CallType call = wait) const

  -     bool supportsRecordInsertion(CallType call = wait) const

  -     bool supportsSave(CallType call = wait) const

  -     bool supportsStreaming(CallType call = wait) const

  -     bool supportsVideo(CallType call = wait) const

  -     bool supportsVolumeAdjustment(CallType call = wait) const

  -     IMMTime::Format timeFormat(CallType call = wait) const

  IMMPlayableDevice

  -     virtual ~IMMPlayableDevice()

  -     virtual IMMPlayableDevice&
          addCuePoint( const IMMTime& time,
                       CallType call = wait )

  -     virtual IMMPlayableDevice&
          cueForPlayback( CallType call = wait )

  -     unsigned long length(CallType call = wait) const

  -     virtual IMMPlayableDevice& pause(CallType call = wait)

  -     virtual IMMPlayableDevice&
          play( const IMMTime& from = IMMTime ( ),
                const IMMTime& to = IMMTime ( ),
                bool resumeIfPaused = true,
                CallType call = nowait )

  -     unsigned long position(CallType call = wait) const

  -     virtual IMMPlayableDevice&
          removeCuePoint( const IMMTime& time,
                          CallType call = wait )

  -     virtual IMMPlayableDevice&
          resume( bool resume = true,
                  CallType call = wait )

  -     virtual IMMPlayableDevice&
          seek( const IMMTime& to,
                CallType call = wait )

  -     virtual IMMPlayableDevice& seekToEnd(CallType call = wait)

  -     virtual IMMPlayableDevice&
          seekToStart( CallType call = wait )

  -     virtual IMMPlayableDevice&
          startPositionTracking( const IMMTime& timeInterval,
                                 CallType call = wait )

  -     virtual IMMPlayableDevice&
          stepFrame( unsigned long frames = 1,
                     bool forward = true,
                     CallType call = wait )

  -     virtual IMMPlayableDevice& stop(CallType call = wait)

  -     virtual IMMPlayableDevice&
          stopPositionTracking( CallType call = wait )

  IMMRemovableMedia

  -     virtual ~IMMRemovableMedia()

  -     virtual IMMRemovableMedia& closeDoor(CallType call = wait)

  -     virtual IMMRemovableMedia&
          enableNotification( bool enabled = true )

  -     bool isMediaPresent(CallType call = wait) const

  -     virtual IMMRemovableMedia&
          lockDoor( bool lock = true,
                    CallType call = wait )

  -     virtual IMMRemovableMedia&
          openDoor( bool open = true,
                    CallType call = wait )

  -     virtual IMMRemovableMedia& unlockDoor(CallType call = wait)

  INotifier

  -     virtual ~INotifier()

  -     virtual INotifier& disableNotification() = 0

  -     virtual INotifier&
          enableNotification( bool enable = true ) = 0

  -     INotifier()

  -     virtual bool isEnabledForNotification() const = 0

  -     virtual INotifier&
          notifyObservers( const INotificationEvent& event ) = 0

  -     virtual INotifier&
          notifyObserversAsync( const INotificationEvent& event )

  -     const IThreadId& threadId() const

  IStandardNotifier

  -     virtual ~IStandardNotifier()

  -     virtual IStandardNotifier& disableNotification()

  -     virtual IStandardNotifier&
          enableNotification( bool enable = true )

  -     virtual bool isEnabledForNotification() const

  -     IStandardNotifier()

  -     IStandardNotifier(const IStandardNotifier& copy)

  -     virtual INotifierAddress notifierAddress() const

  -     virtual IStandardNotifier&
          notifyObservers( const INotificationEvent& anEvent )

  -     virtual IStandardNotifier&
          notifyObserversAsync( const INotificationEvent& anEvent )

  -     IStandardNotifier&
          operator =( const IStandardNotifier& aStandardNotifier )

#### Inherited Public Data

  INotifier

  -     static INotificationId const allChangesId

  -     static INotificationId const deleteId

  IMMDevice

  -     static const unsigned long allDevices

  -     static const unsigned long ampMixer

  -     static const unsigned long animation

  -     static const unsigned long audioCD

  -     static const unsigned long audioTape

  -     static const unsigned long cdxa

  -     static INotificationId const commandNotifyId

  -     static INotificationId const cuePointId

  -     static const unsigned long dat

  -     static INotificationId const deviceEventId

  -     static const unsigned long digitalVideo

  -     static const unsigned long headphone

  -     static const unsigned long microphone

  -     static const unsigned long monitor

  -     static const unsigned long other

  -     static const unsigned long overlay

  -     static INotificationId const passDeviceId

  -     static INotificationId const positionChangeId

  -     static const unsigned long sequencer

  -     static const unsigned long speaker

  -     static const unsigned long videoDisc

  -     static const unsigned long videoTape

  -     static const unsigned long waveAudio

  IMMRemovableMedia

  -     static INotificationId const mediaLoadedId

#### Inherited Protected Functions

  IStandardNotifier

  -     virtual IStandardNotifier&
          addObserver( IObserver& observer,
                       const IInterest& interest )

  -     virtual IStandardNotifier&
          notifyObservers( const INotificationId& nId )

  -     virtual IObserverList&
          observerList( const IInterest* anInterest = 0 ) const

  -     virtual IStandardNotifier& removeAllObservers()

  -     virtual IStandardNotifier&
          removeObserver( IObserver& observer,
                          const IInterest& interest )

  -     virtual IStandardNotifier&
          removeObserver( IObserver& observer )

  INotifier

  -     virtual INotifier&
          addObserver( IObserver& observer,
                       const IInterest& interest )

  -     virtual INotifier&
          notifyObservers( const INotificationId& id ) = 0

  -     virtual IObserverList&
          observerList( const IInterest* anInterest = 0 ) const = 0

  -     virtual INotifier& removeAllObservers() = 0

  -     virtual INotifier& removeObserver(IObserver& observer) = 0

  -     virtual INotifier&
          removeObserver( IObserver& observer,
                          const IInterest& interest )

  IMMDevice

  -     IMMMessageWindow& deviceWindow() const

  -     IMMDevice(const IString& fileOrDevice)

  -     IMMDevice( unsigned long deviceIdentifier,
                   const IString& newAlias = IString ( ) )

  -     unsigned long
          itemCapability( unsigned long item,
                          CallType call ) const

  -     unsigned long
          itemStatus( unsigned long item,
                      unsigned long value = 0,
                      CallType call = wait ) const

  -     unsigned long lastError() const

  -     virtual bool
          mixerControlValues( unsigned long dwComponentType,
                              unsigned long dwControlType,
                              unsigned long* ulDetails,
                              bool uniform = true,
                              unsigned long multipleItems = 0,
                              unsigned long hmx = NULL )

  -     virtual bool
          mixerControlValues( unsigned long dwComponentType,
                              unsigned long dwControlType,
                              unsigned short* usDetails,
                              bool uniform = true,
                              unsigned long multipleItems = 0,
                              unsigned long hmx = NULL )

  -     IMMDeviceNotifyHandler* notificationHandler() const

  -     virtual IMMDevice&
          open( unsigned long instanceNumber,
                bool shareable = true,
                CallType call = nowait )

  -     virtual IMMDevice&
          openOnThread( unsigned long instanceNumber,
                        bool shareable = true )

  -     OpenStatus openStatus() const

  -     virtual IMMDevice&
          restoreDeviceSettings( bool newRecordMode = false )

  -     virtual IMMDevice& saveDeviceSettings()

  -     IMMDevice&
          sendCommand( unsigned short message,
                       unsigned long param1,
                       void* param2 )

  -     IString
          sendCommand( const IString& command,
                       unsigned short userParm )

  -     IString sendCommand(const IString& command)

  -     IMMDevice&
          sendCommand( unsigned short message,
                       unsigned long param1,
                       void* param2,
                       unsigned short userParm )

  -     IMMDevice& setLastError(unsigned long errorId)

  -     virtual bool
          setMixerControlValues( unsigned long dwComponentType,
                                 unsigned long dwControlType,
                                 unsigned short* usDetails,
                                 bool uniform = true,
                                 unsigned long multipleItems = 0,
                                 unsigned long hmx = NULL )

  -     virtual bool
          setMixerControlValues( unsigned long dwComponentType,
                                 unsigned long dwControlType,
                                 unsigned long* ulDetails,
                                 bool uniform = true,
                                 unsigned long multipleItems = 0,
                                 unsigned long hmx = NULL )

  -     IMMDevice&
          setNotificationHandler( IMMDeviceNotifyHandler* notifyHandler )

  -     IMMDevice& setOpenStatus(OpenStatus status)

  -     IMMDevice& setPassDeviceRequested(bool sawPassDevice)

  -     IMMDevice& setSystemMixerHandle(unsigned long hmx)

  -     IMMDevice& setUserParameter(unsigned short userParm = 0)

  -     unsigned long systemMixerHandle() const

  -     unsigned short userParameter() const

  -     bool wasPassDeviceRequested() const

  IMMPlayableDevice

  -     IMMPlayableDevice( const IString& deviceOrFileName,
                           bool openNow = true,
                           unsigned long instance = 0,
                           bool openShareable = true )

  -     IMMPlayableDevice( unsigned long deviceIdentifier,
                           const IString& newAlias = IString ( ) )

  -     virtual IMMPlayableDevice&
          restoreDeviceSettings( bool newRecordMode = false )

  -     virtual IMMPlayableDevice& saveDeviceSettings()

  IMMRemovableMedia

  -     IMMRemovableMedia( const IString& deviceName,
                           bool openNow,
                           unsigned long instance,
                           bool openShareable )

  -     IMMRemovableMedia( unsigned long deviceIdentifier,
                           const IString& newAlias = IString ( ) )

  -     IMMRemovableMediaNotifyHandler* notificationHandler() const

  -     IMMRemovableMedia&
          setNotificationHandler( IMMRemovableMediaNotifyHandler* notifyHandler )

#### Inherited Protected Data

  - None