### IMMDevice

  The IMMDevice class is the base device class and provides behavior common to all devices. IMMDevice contains the device ID, alias, and similar information. There are numerous functions for querying the capabilities of the device. Also, there are functions for opening and closing the device, changing the speed and time formats, and for changing the audio.

### IMMDevice - Member Functions and Data by Group

### Constructors & Destructor

Derived classes can use these members to create objects of this class.

~IMMDevice

      public:
      virtual ~IMMDevice()

Supported Platforms

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

IMMDevice

  Overload 1

      protected:
      IMMDevice(const IString& fileOrDevice)

  A derived class can construct an IMMDevice from the following:

  fileOrDevice
    This is the name of the device. This name is operating-system-specific. For example the name of the amplifier-mixer device in the OS/2 operating system is AMPMIX.

Supported Platforms

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

  Overload 2

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

  A derived class can construct an IMMDevice 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

### Audio

Use these members to manipulate the audio for the device. You can turn the audio off and on, and you can change and query the volume.

#### Windows Considerations

  Member functions exist to facilitate access to the Win32 mixer devices. These devices are somewhat similar to ampmixer devices in OS2 in that they support sound shaping. However, Win32 mixer devices are not treated as MCI devices, so require special functions specific to this environment.

disableAudio

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

  Turns off the audio for the device. This audio change can be delayed based on the passed in vectored delay time (think of this the same as fade out on your car stereo). Based on this delay time, the audio is slowly turned off. The default is no delay.

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.

Supported Platforms

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

enableAudio

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

  Turns on or turns off the audio for the device. This audio change can be delayed based on the passed in vectored delay (think of this the same as fade in on your car stereo). Based on this delay time, the audio is slowly turned on. The default is no delay.

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.

Supported Platforms

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

isAudioEnabled

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

  Returns true if the audio for the passed in channel is turned on.

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.

Supported Platforms

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

setVolume

      public:
      virtual IMMDevice&
        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.

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.

Supported Platforms

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

OS/2 Considerations

  This volume change can be delayed based on the passed-in vectored delay time (think of this the same as fade in or fade out on your car stereo). Based on this delay time, the volume is slowly changed to the new volume. The default is no delay.

  In order to affect the volume of CD audio when using a cdStream, you must create an IMMAmpMixer to control the volume.

Windows Considerations

  For Win32, the vectored delay time is not supported.

volume

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

  Returns the volume setting for the passed-in audio channel. This value is in the range of 0 to 100.

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.

Supported Platforms

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

mixerControlValues

  Returns one or more values associated with a mixer control.

  Overload 1

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

  This function returns details for a mixer control that has two states, on and off (such as a mute button).

Supported Platforms

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

  Overload 2

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

  This function returns details for a mixer control that has many states, such as a volume control. The values returned are a percentage of a maximum value, in the range from 0 to 100.

Supported Platforms

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

setMixerControlValues

  Sets one or more values associated with a mixer control.

  Overload 1

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

  This function sets details for a mixer control that has many states, such as a volume control. The values should be a percentage of a maximum value, in the range from 0 to 100. Any value greater than 100 is treated as 100.

Supported Platforms

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

  Overload 2

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

  This function sets details for a mixer control that has two states, on and off (such as a mute button).

Supported Platforms

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

setSystemMixerHandle

      protected:
      IMMDevice& setSystemMixerHandle(unsigned long hmx)

  Sets the system mixer handle for this device.

Supported Platforms

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

systemMixerHandle

      protected:
      unsigned long systemMixerHandle() const

  Returns the currently set system mixer handle for this device. If one does not exist, this function will open a system mixer handle and set it for this device before returning.

Supported Platforms

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

### Capabilities

Use these members to determine the capabilities of the device. All devices should respond to these inquiries.

requiresFiles

      public:
      bool requiresFiles(CallType call = wait) const

  Returns true if the device requires the use of files. An example of a device that requires files is the wave audio device, and an example of a device that does not require files is the amplifier-mixer device.

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.

Supported Platforms

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

supportsAudio

      public:
      bool supportsAudio(CallType call = wait) const

  Returns true if the device has support for audio playback.

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.

Supported Platforms

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

supportsCommand

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

  Returns true if the device supports the passed-in command.

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.

Supported Platforms

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

supportsDigitalTransfer

      public:
      bool supportsDigitalTransfer(CallType call = wait) const

  Returns true if the device can internally process digital data, for example a digital-to-analog converter on a CD player.

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.

Supported Platforms

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

supportsDisableEject

      public:
      bool supportsDisableEject(CallType call = wait) const

  Returns true if the device can disable the manual ejection of the media.

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.

Supported Platforms

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

supportsEject

      public:
      bool supportsEject(CallType call = wait) const

  Returns true if the device can eject the media.

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.

Supported Platforms

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

supportsPlay

      public:
      bool supportsPlay(CallType call = wait) const

  Returns true if the device can play.

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.

Supported Platforms

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

supportsRecord

      public:
      bool supportsRecord(CallType call = wait) const

  Returns true if the device supports recording. This does not necessarily mean it also supports the ability to save the data you just recorded. See supportsSave for more information.

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.

Supported Platforms

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

supportsRecordInsertion

      public:
      bool supportsRecordInsertion(CallType call = wait) const

  Returns true if the device supports insertion of data while recording. For example, you would use this function if you just recorded a sound file and then wanted to record your voice saying "Hello" in the middle of it without overlaying any of the recorded sound.

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.

Supported Platforms

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

supportsSave

      public:
      bool supportsSave(CallType call = wait) const

  Returns true if the device can save data to some type of media (for example, a file). An example of a device that supports saving is the wave audio device, and an example of a device that does not support saving is the audio CD device.

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.

Supported Platforms

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

supportsStreaming

      public:
      bool supportsStreaming(CallType call = wait) const

  Returns true if the device can continuously transfer digital data to or from another device. The source or destination of the data is determined by the device's connections.

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.

Supported Platforms

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

supportsVideo

      public:
      bool supportsVideo(CallType call = wait) const

  Returns true if the device has support for video playback.

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.

Supported Platforms

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

supportsVolumeAdjustment

      public:
      bool supportsVolumeAdjustment(CallType call = wait) const

  Returns true if the device supports software control of the volume. An example of a device that supports volume adjustment is the wave audio device, and an example of a device that does not support audio adjustment is the video disc device.

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.

Supported Platforms

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

### Connector Type

Use these members to query and manipulate the connectors for the device.

Connectors give devices the ability to connect to other devices. For those of you who have VCRs or stereos, you probably are familiar with those RCA connection cables that you use to connect different stereo and video components. You normally connect one end of the cable to a line in (such as video in on your TV) and connect the other end to the line out (such as video out on your VCR). Think of these software connections and connectors as those cables and connections.

For example, suppose you want to record your favorite song from a cassette as a sound file on your computer, but you do not have a microphone. You do, however, have a RCA cable connected to your stereo. You could connect one end of the cable to your cassette player and the other to the line in of your sound card. By default, the wave audio device would record from the microphone jack on the sound card because it is initially connected to the microphone connector. To record from the sound card's line in, you would have to make your wave audio device record from the line in connector on the sound card. To do this, you would enable the line in connector for your audio device by calling enableConnector(IMMDevice::lineIn); on your audio device. Because the audio device only supports one input connection to be enabled at a given time, it automatically disables the microphone connector. So, to create the sound file, all you would have to do is to press play on the cassette player and call the record function on the wave audio device.

connectedDeviceId

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

  Returns the ID of the device that is connected to the identified connector of this device.

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.

Supported Platforms

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

disableConnector

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

  Turns off the connector specified by type for this device.

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 | The connector type is not supported by this device.

Supported Platforms

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

enableConnector

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

  Turns on or turns off the connector specified by type for this device.

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 | The connector type is not supported by this device.

Supported Platforms

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

isConnectionSupported

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

  Returns true if the connector is valid for this device.

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.

Supported Platforms

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

isConnectorEnabled

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

  Returns true if the connector is enabled for this device.

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.

Supported Platforms

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

### Device Information

Use these members to query information about the device and its state.

aliasName

      public:
      IString aliasName() const

  Returns the alias associated with the device during the open procedure. This function is can return an empty string because a device can be constructed solely from a device ID.

Supported Platforms

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

deviceId

      public:
      unsigned long deviceId() const

  Returns the ID of the current device. This value is used by the system to identify the device. In the construction of this object, a device identifier is passed in.

Exception

  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.

Supported Platforms

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

deviceName

      public:
      IString deviceName() const

  Returns the name of the device depending on the class of the object. For example, some devices can be opened with a file name (song.mid), but other devices, such as IMMAudioCD, are opened with a specific device name (such as CDAUDIO01).

Supported Platforms

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

### Device Type and Description

Use these members to query the type and description of the device.

description

      public:
      IString description(CallType call = wait) const

  Returns the description of the hardware associated with this device.

Supported Platforms

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

deviceType

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

  Returns the type of the device.

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.

Supported Platforms

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

allDevices

      public:
      static const unsigned long allDevices

  A device type for representing all devices.

Supported Platforms

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

ampMixer

      public:
      static const unsigned long ampMixer

  A device type for representing a combination amplifier-mixer that is used to control the characteristics of an audio signal from one or more audio sources.

Supported Platforms

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

animation

      public:
      static const unsigned long animation

  A device type for representing a device that uses a sequence of images to produce the effect of movement.

Supported Platforms

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

audioCD

      public:
      static const unsigned long audioCD

  A device type for representing an audio CD device.

Supported Platforms

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

audioTape

      public:
      static const unsigned long audioTape

  A device type for representing an audio tape recorder device.

Supported Platforms

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

cdxa

      public:
      static const unsigned long cdxa

  A device type for representing a compact disc-extended architecture (CD-XA) device.

Supported Platforms

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

dat

      public:
      static const unsigned long dat

  A device type for representing a digital audio tape device.

Supported Platforms

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

digitalVideo

      public:
      static const unsigned long digitalVideo

  A device type for representing a digital video device.

Supported Platforms

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

headphone

      public:
      static const unsigned long headphone

  A device type for representing a headphone.

Supported Platforms

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

microphone

      public:
      static const unsigned long microphone

  A device type for representing a microphone.

Supported Platforms

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

monitor

      public:
      static const unsigned long monitor

  A device type for representing a device that can listen to (monitor) an audio and video source.

Supported Platforms

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

other

      public:
      static const unsigned long other

  A device type for representing devices other than the system-provided device types.

Supported Platforms

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

overlay

      public:
      static const unsigned long overlay

  A device type for representing a device that can overlay an image on top of the screen that does not disrupt what is displayed there.

Supported Platforms

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

sequencer

      public:
      static const unsigned long sequencer

  A device type for representing a MIDI synthesizer device.

Supported Platforms

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

speaker

      public:
      static const unsigned long speaker

  A device type for representing output to the speakers.

Supported Platforms

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

videoDisc

      public:
      static const unsigned long videoDisc

  A device type for representing a video disc player device.

Supported Platforms

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

videoTape

      public:
      static const unsigned long videoTape

  A device type for representing a video tape device.

Supported Platforms

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

waveAudio

      public:
      static const unsigned long waveAudio

  A device type for representing a device that uses digital audio data in the wave format.

Supported Platforms

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

### Error Information

Use these members to set and query an error value.

lastError

      protected:
      unsigned long lastError() const

  Returns the return code from the last call. This return code could be 0 because the value is reset with each call. If an error code needs to be captured, this function should be called directly after the error-causing function because each function overwrites this value.

Supported Platforms

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

OS/2 Considerations

  Because the system multimedia architecture does not keep track of the return value of the last function call, this function does that. It allows all of the functions to throw exceptions where they are meaningful.

setLastError

      protected:
      IMMDevice& setLastError(unsigned long errorId)

  Sets the return code of the last low-level function call.

Supported Platforms

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

OS/2 Considerations

  Because the system multimedia architecture does not keep track of the return value of the last function call, this function does that. It allows all of the functions to throw exceptions where they are meaningful.

### Event Dispatching

Event-dispatching members interact with the notification handlers for this device.

enableNotification

      public:
      virtual IMMDevice& enableNotification(bool enabled = true)

  Flags this object as being ready to accept notifications. A Notifier, like IMMDevice, does not send notifications to observer objects until it is enabled.

Supported Platforms

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

notificationHandler

      protected:
      IMMDeviceNotifyHandler* notificationHandler() const

  Returns a pointer to the notification handler

Supported Platforms

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

setNotificationHandler

      protected:
      IMMDevice&
        setNotificationHandler( IMMDeviceNotifyHandler* notifyHandler )

  Sets the notification handler to the passed value.

Supported Platforms

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

### Event Type and DeletePendingEvents

Use these members to specify the type of pending events that are to be deleted.

deletePendingEvents

      public:
      virtual IMMDevice&
        deletePendingEvents( EventType event = allEvents )

  Removes all of the passed-in event types from the queue.

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.

Supported Platforms

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

### Implementation

Use these members to access the low-level functions and to set and query a user parameter that can be passed on function calls.

deviceWindow

      protected:
      IMMMessageWindow& deviceWindow() const

  Returns the window object that the device uses to communicate to the operating system.

Supported Platforms

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

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

itemCapability

      protected:
      unsigned long
        itemCapability( unsigned long item,
                        CallType call ) const

  Gets the device capabilities for the item. This is similar to using the devQueryCaps system call on the OS/2 operating system.

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.

Supported Platforms

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

itemStatus

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

  Checks the status of the item.

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.

Supported Platforms

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

restoreDeviceSettings

      protected:
      virtual IMMDevice&
        restoreDeviceSettings( bool newRecordMode = false )

  Restores settings for the current device. Derived classes should override this function, handle class-specific settings, and call the corresponding inherited function.

Supported Platforms

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

saveDeviceSettings

      protected:
      virtual IMMDevice& saveDeviceSettings()

  Saves settings for the current device. Derived classes should override this function, handle class-specific settings, and call the corresponding inherited function.

Supported Platforms

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

sendCommand

  Sends a command string to the device. This returns the resulting string from the call.

  Overload 1

      protected:
      IString
        sendCommand( const IString& command,
                     unsigned short userParm )

  The passed in userParameter is in the notification message and does not replace the value set with setUserParameter.

Supported Platforms

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

  Overload 2

      protected:
      IString sendCommand(const IString& command)

  The currently set userParameter is in the notification message.

Supported Platforms

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

  Overload 3

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

  The passed in userParameter is in the notification message and does not replace the value set with the setUserParameter.

Supported Platforms

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

  Overload 4

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

  The currently set userParameter is in the notification message.

Supported Platforms

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

setPassDeviceRequested

      protected:
      IMMDevice& setPassDeviceRequested(bool sawPassDevice)

  Sets the pass device flag. Use this to notify the device object that the device object has received use of the actual hardware device. Until the device receives the first pass device event, the device is not initialized.

Supported Platforms

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

setUserParameter

      protected:
      IMMDevice& setUserParameter(unsigned short userParm = 0)

  Sets the user parameter. This parameter is automatically passed in the notification messages for all but two of the device functions. The exceptions are the two sendCommand functions that take their own user parameter.

Supported Platforms

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

userParameter

      protected:
      unsigned short userParameter() const

  Returns the user parameter that is in all of the notification messages except for the two sendCommand functions that take their own user parameter.

Supported Platforms

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

wasPassDeviceRequested

      protected:
      bool wasPassDeviceRequested() const

  Returns true if it has already processed a passDevice event. Use this to notify the device object that the device object has received use of the actual hardware device. Until the device receives the first pass device event, the device is not initialized.

Supported Platforms

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

### Mode

Use these members to query the current mode of the device.

mode

      public:
      virtual Mode mode(CallType call = wait) const

  Returns the current mode of the device.

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.

Supported Platforms

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

### Notification Event Descriptions

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

commandNotifyId

      public:
      static INotificationId const commandNotifyId

  Provides a notification identifier to observers when one of the IMMDevice functions has been called with the notify flag. IMMDevice provides a pointer to an IMMNotifyEvent for the command in the INotificationEvent::eventData field of the INotificationEvent.

Supported Platforms

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

cuePointId

      public:
      static INotificationId const cuePointId

  Provides a notification identifier to observers when the device receives a cue point message. IMMDevice provides a pointer to an IMMCuePointEvent for the message in the INotificationEvent::eventData field of the INotificationEvent.

Supported Platforms

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

deviceEventId

      public:
      static INotificationId const deviceEventId

  Provides a notification identifier to observers when the device receives a device message. IMMDevice provides a pointer to an IMMDeviceEvent for the message in the INotificationEvent::eventData field of the INotificationEvent.

Supported Platforms

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

passDeviceId

      public:
      static INotificationId const passDeviceId

  Provides a notification identifier to observers when the device receives a pass device message. IMMDevice provides a pointer to an IMMPassDeviceEvent for the message in the INotificationEvent::eventData field of the INotificationEvent.

Supported Platforms

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

positionChangeId

      public:
      static INotificationId const positionChangeId

  Provides a notification identifier to observers when the device receives a position change message. IMMDevice provides a pointer to an IMMPositionChangeEvent for the message in the INotificationEvent::eventData field of the INotificationEvent.

Supported Platforms

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

### Opening and Closing

Use these members to query if the device is opened, to open or close the device, and to direct the device to close itself when the device object is destructed.

close

      public:
      virtual IMMDevice& close(CallType call = wait)

  Closes a device.

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.

Supported Platforms

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

isCloseOnDestroy

      public:
      bool isCloseOnDestroy() const

  Returns true if the device closes itself when the device object is deleted.

Supported Platforms

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

isOpen

      public:
      bool isOpen() const

  Returns true if the device is opened. In general, open a device before calling multimedia functions.

Exception

  IAccessError | The device identifier is not valid.
  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.

Supported Platforms

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

open

  Opens the device or file based on the passed-in string. The default string uses the deviceName. Note, if call is wait, then the windowing system will be tied up until the file or device is opened. If you do not want to tie up the windowing system and you do not want the open function to return until the file or device is opened, then use the openOnThread function. Otherwise, you could set call to nowait, causing open to return immediately. When the open finishes, an INotificationEvent is sent to any observers that are attached to this device, notifying them that the open is finished.

  You must have opened the device before you try to acquire access to it. When a device is open, it notifies the operating system that you want to have the use of the hardware at sometime in the future, and notifies the operating system that it can share the device. When you acquire access, you are requesting that the system provide you access to the hardware now. Then, based on the type of ShareMode that you requested, it gives you access to the hardware.

  Overload 1

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

Exception

  IAccessError | The device identifier is not valid;
  IAccessError | An internal driver error occurred.
  IAccessError | The device is locked.
  IAccessError | A hardware error occurred.

Supported Platforms

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

  Overload 2

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

Exception

  IAccessError | The device identifier is not valid;
  IAccessError | An internal driver error occurred.
  IAccessError | The device is locked.
  IAccessError | A hardware error occurred.

Supported Platforms

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

openOnThread

  Opens the file or device by creating a thread to do the actual opening. The default string uses the deviceName. By doing the opening this way, it does not tie up the windowing system. This function does not return until the file or device is opened.

  Overload 1

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

Exception

  IAccessError | The device identifier is not valid;
  IAccessError | An internal driver error occurred.
  IAccessError | The device is locked.
  IAccessError | A hardware error occurred.

Supported Platforms

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

Windows Considerations

  The Win32 MCI does not support threads, so this function behaves like open() in this environment.

  Overload 2

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

Exception

  IAccessError | The device identifier is not valid;
  IAccessError | An internal driver error occurred.
  IAccessError | The device is locked.
  IAccessError | A hardware error occurred.

Supported Platforms

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

Windows Considerations

  The Win32 MCI does not support threads, so this function behaves like open() in this environment.

setCloseOnDestroy

      public:
      IMMDevice& setCloseOnDestroy(bool close = true)

  Closes the device when this object is destroyed. The default is to close the device.

Supported Platforms

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

### OpenStatus

Use these members to set and query the open state of the device.

openStatus

      protected:
      OpenStatus openStatus() const

  Returns the result of the open attempt. This is used by the device to determine if the opening of the device has occurred yet and if it was successful. This is important because basically all of the multimedia function calls require the device to be opened first before you can make any calls.

Supported Platforms

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

setOpenStatus

      protected:
      IMMDevice& setOpenStatus(OpenStatus status)

  Sets the open flag. This is used by the device to determine if the opening of the device has occurred yet and if it was successful. This is important because basically all of the multimedia function calls require the device to be opened first before you can make any calls.

Supported Platforms

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

### Preroll Type

Use these members to prepare a device to begin a playback or recording function with minimal delay. These members set and query the amount of preroll time.

prerollTime

      public:
      IMMTime prerollTime(CallType call = wait) const

  Returns the amount of preroll time in IMMTime. If the returned time object is invalid, then the preroll time is not bounded.

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.

Supported Platforms

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

prerollType

      public:
      PrerollType prerollType(CallType call = wait) const

  Returns the preroll characteristics of the device.

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.

Supported Platforms

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

### Share Mode and Acquiring

Use these members to specify the three ways that the operating system can share access to the device and to query, acquire, and release access to the device.

acquire

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

  Requests assignment of (access to) the device. If queued is true, the request is queued and executed as soon as the device resources are available. If the request can be satisfied immediately, then it is not queued.

  You must have opened the device before you try to acquire access to it. When a device is open, it notifies the operating system that you want to have the use of the hardware at some time in the future and notifies the operating system that it can share the device. When you acquire access, you are requesting that the system provide you access to the hardware now. Then, based on the type of ShareMode that you requested, it gives you access to the hardware.

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.

Supported Platforms

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

isAcquired

      public:
      bool isAcquired(CallType call = wait) const

  Returns true if the device is ready. If a device is not ready, then access to it needs to be acquired using acquire.

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.

Supported Platforms

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

release

      public:
      virtual IMMDevice& release(CallType call = wait)

  Releases exclusive use of the device resources.

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.

Supported Platforms

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

### Speed and Time

Use these members to set and query the current formats for speed and time for the device.

setSpeedFormat

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

  Sets the speed format for the device. See IMMSpeed for more information on the different speed formats.

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.

Supported Platforms

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

Windows Considerations
  For Win32, the only supported format is framesPerSecond.

setTimeFormat

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

  Sets the time format for the device. See IMMTime::Format enumeration for more information on the different time formats.

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.

Supported Platforms

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

speedFormat

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

  Returns the currently set speed format for the device. See IMMSpeed for more information on the different speed formats.

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.

Supported Platforms

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

timeFormat

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

  Returns the currently set time format for the device. See the Format enumeration for more information on the different time formats.

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.

Supported Platforms

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

### IMMDevice - Enumerations

AudioChannel

      enum AudioChannel { all,
                          left,
                          right }

  Use this enumeration to specify audio channel identifiers.

Supported Platforms

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

CallType

      enum CallType { nowait=0X00000001,
                      wait=0x00000002 }

  This enumeration determines how the multimedia functions call the low level operating system functions. In both call types, a notification event is sent to all attached IObservers when the command finishes processing. Most functions that result in a call to the operating system take this type as their last parameter. The following are valid values:

  nowait
    The method is asynchronous and returns immediately (before the requested processing is complete). If you want to know when the command finishes processing, attach an observer to the device because it gets notified when the command finishes.
  wait
    The method is synchronous and all processing occurs before the function returns. Wait is not recommended for threads having a message queue that is processing messages for user interface windows. A long wait could tie up the message queue.

Supported Platforms

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

ConnectorType

      enum ConnectorType { midiStream=0x00000001,
                           cdStream=0x00000002,
                           waveStream=0x00000003,
                           ampStream=0x00000004,
                           xaStream=0x00000005,
                           headphones=0x00000006,
                           speakers=0x00000007,
                           microphones=0x00000008,
                           lineIn=0x00000009,
                           lineOut=0x0000000a,
                           videoIn=0x0000000b,
                           videoOut=0x0000000c,
                           phoneSet=0x0000000d,
                           phoneLine=0x0000000e,
                           audioIn=0x0000000f,
                           audioOut=0x00000010,
                           universal=0x00000011 }

  Use the preceding enumerations to specify connection types. These are all of the types of connections that a device can support. Each device only supports a subsection of this list. For example, an audio CD device would not support xaStream or microphones.
  Note: "Stream in" these enumerations means the digital transfer of the data for these devices.

Supported Platforms

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

EventType

      enum EventType { allEvents,
                       notifyEvent=0x0500,
                       passDeviceEvent,
                       positionChangeEvent,
                       cuePointEvent,
                       deviceEvent,
                       synchEvent }

  Use the preceding enumerations to specify the type of events that are to be removed.

Supported Platforms

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

Mode

      enum Mode { notReady=1,
                  paused,
                  playing,
                  stopped,
                  recording,
                  seeking }

  An enumeration that denotes the current state of the device. The following are valid values:

  notReady
    A device is in this state when the device is not acquired.
  paused
    The device is paused.
  playing
    The device is playing.
  stopped
    The device is stopped.
  recording
    The device is recording.
  seeking
    The device is moving the current position to a new location.

Supported Platforms

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

OpenStatus

      enum OpenStatus { openNotAttempted,
                        openSuccessful,
                        openFailed }

  An enumeration that denotes the different states for opening a device. The following are valid values:

  openNotAttempted
    You have not tried to open the device yet.
  openSuccessful
    The open succeeded.
  openFailed
    The open failed.

Supported Platforms

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

PrerollType

      enum PrerollType { variable=1,
                         fixed,
                         none }

  Use these enumerators to specify preroll characteristic identifiers. Preroll means preparing a device to begin a playback or recording function with minimal delay. The following are valid values:

  variable
    The preroll time for the device is variable, meaning that you can change the preroll time value.
  fixed
    The preroll time for the device is fixed, meaning that you cannot change the preroll time value; it is fixed by the operating system.
  none
    The preroll time is not supported by the device.

Supported Platforms

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

ShareMode

      enum ShareMode { shareable,
                       isolatedExclusive=0x00000100,
                       exclusive=0x00000200 }

  Use these enumerators to specify share mode identifiers:

  shareable
    Allows the device to be shared by other applications.
  isolatedExclusive
    Inhibits other applications from acquiring use of the physical (or hardware) device until released by the owning application.
  exclusive
    Acquires the device for exclusive use without acquiring the entire device resource for exclusive use. This basically means that the operating system cannot make this device inactive.

Supported Platforms

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

### IMMDevice - Inherited Member Functions and Data

#### Inherited Public Functions

  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

#### 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 )

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

  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 )

#### Inherited Protected Data

  - None