S_OK                                     The function completed successfully
S_FALSE                                  Call successful, but returned FALSE
ERROR_FILE_NOT_FOUND                     The system cannot find the file specified.
ERROR_PATH_NOT_FOUND                     The system cannot find the path specified.
ERROR_TOO_MANY_OPEN_FILES                The system cannot open the file.
ERROR_ACCESS_DENIED                      Access is denied.
ERROR_INVALID_HANDLE                     The handle is invalid.
ERROR_NOT_ENOUGH_MEMORY                  Not enough storage is available to process this command.
ERROR_INVALID_BLOCK                      The storage control block address is invalid.
ERROR_BAD_ENVIRONMENT                    The environment is incorrect.
ERROR_BAD_FORMAT                         An attempt was made to load a program with an incorrect format.
ERROR_OUTOFMEMORY                        The system cannot find the drive specified.
VFW_S_NO_MORE_ITEMS                      The end of the list has been reached.
VFW_S_DUPLICATE_NAME                     An attempt to add a filter with a duplicate name succeeded with a modified name.
VFW_S_STATE_INTERMEDIATE                 The state transition has not completed.
VFW_S_PARTIAL_RENDER                     Some of the streams in this movie are in an unsupported format.
VFW_S_SOME_DATA_IGNORED                  The file contained some property settings that were not used.
VFW_S_CONNECTIONS_DEFERRED               Some connections have failed and have been deferred.
VFW_S_RESOURCE_NOT_NEEDED                The resource specified is no longer needed.
VFW_S_MEDIA_TYPE_IGNORED                 A connection could not be made with the media type in the persistent graph, but has been made with a negotiated media type.
VFW_S_VIDEO_NOT_RENDERED                 Cannot play back the video stream: no suitable decompressor could be found.
VFW_S_AUDIO_NOT_RENDERED                 Cannot play back the audio stream: no audio hardware is available.
VFW_S_RPZA                               Cannot play back the video stream: format 'RPZA' is not supported.
VFW_S_ESTIMATED                          The value returned had to be estimated.  Its accuracy cannot be guaranteed.
VFW_S_RESERVED                           This success code is reserved for internal purposes within ActiveMovie.
VFW_S_STREAM_OFF                         The stream has been turned off.
VFW_S_CANT_CUE                           The graph can't be cued because of lack of or corrupt data.
VFW_S_NO_STOP_TIME                       The stop time for the sample was not set.
VFW_S_NOPREVIEWPIN                       There was no preview pin available, so the capture pin output is being split to provide both capture and preview.
VFW_S_DVD_NON_ONE_SEQUENTIAL             The current title was not a sequential set of chapters (PGC) and the returned timing information might not be continuous.
VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE The audio stream did not contain sufficient information to determine the contents of each channel.
VFW_S_DVD_NOT_ACCURATE                   The seek into the movie was not frame accurate.
D3DOK_NOAUTOGEN                          The call succeeded but there won't be any mipmaps generated
DS_NO_VIRTUALIZATION                     The call succeeded, but we had to substitute the 3D algorithm
DMUS_S_PARTIALLOAD                       The object could only load partially. This can happen if some components are not registered properly, such as embedded tracks and tools. This can also happen if some content is missing. For example, if a segment uses a DLS collection that is not in the loader's current search directory.
DMUS_S_PARTIALDOWNLOAD                   Return value from IDirectMusicBand::Download() which indicates that some of the instruments safely downloaded, but others failed. This usually occurs when some instruments are on PChannels not supported by the performance or port.
DMUS_S_REQUEUE                           Return value from IDirectMusicTool::ProcessPMsg() which indicates to the performance that it should cue the PMsg again automatically.
DMUS_S_FREE                              Return value from IDirectMusicTool::ProcessPMsg() which indicates to the performance that it should free the PMsg automatically.
DMUS_S_END                               Return value from IDirectMusicTrack::Play() which indicates to the segment that the track has no more data after mtEnd.
DMUS_S_STRING_TRUNCATED                  Returned string has been truncated to fit the buffer size.
DMUS_S_LAST_TOOL                         Returned from IDirectMusicGraph::StampPMsg() this indicates that the PMsg is already stamped with the last tool in the graph. The returned PMsg's tool pointer is now NULL.
DMUS_S_OVER_CHORD                        Returned from IDirectMusicPerformance::MusicToMIDI() this indicates  that no note has been calculated because the music value has the note  at a position higher than the top note of the chord. This applies only to DMUS_PLAYMODE_NORMALCHORD play mode. This success code indicates that the caller should not do anything with the note. It is not meant to be played against this chord.
DMUS_S_UP_OCTAVE                         Returned from IDirectMusicPerformance::MIDIToMusic()  and IDirectMusicPerformance::MusicToMIDI() this indicates that the note conversion generated a note value that is below 0, so it has been bumped up one or more octaves to be in the proper MIDI range of 0 through 127. Note that this is valid for MIDIToMusic() when using play modes DMUS_PLAYMODE_FIXEDTOCHORD and DMUS_PLAYMODE_FIXEDTOKEY, both of which store MIDI values in wMusicValue. With MusicToMIDI() it is valid for all play modes. Of course, DMUS_PLAYMODE_FIXED will never return this success code.
DMUS_S_DOWN_OCTAVE                       Returned from IDirectMusicPerformance::MIDIToMusic()  and IDirectMusicPerformance::MusicToMIDI() this indicates  that the note conversion generated a note value that is above 127, so it has been bumped down one or more octaves to be in the proper MIDI range of 0 through 127.  Note that this is valid for MIDIToMusic() when using play modes DMUS_PLAYMODE_FIXEDTOCHORD and DMUS_PLAYMODE_FIXEDTOKEY, both of which store MIDI values in wMusicValue. With MusicToMIDI() it is valid for all play modes. Of course, DMUS_PLAYMODE_FIXED will never return this success code.
DMUS_S_NOBUFFERCONTROL                   Although the audio output from the port will be routed to the same device as the given DirectSound buffer, buffer controls such as pan and volume will not affect the output.
DMUS_S_GARBAGE_COLLECTED                 The requested operation was not performed because during CollectGarbage the loader determined that the object had been released.
E_PENDING                                The data necessary to complete this operation is not yet available.
E_NOTIMPL                                The function called is not supported at this time
E_NOINTERFACE                            The requested COM interface is not available
E_POINTER                                Invalid pointer
E_ABORT                                  Operation aborted
E_FAIL                                   An undetermined error occurred
E_UNEXPECTED                             Catastrophic failure
CLASSFACTORY_E_FIRST                     This object does not support aggregation
REGDB_E_CLASSNOTREG                      Class not registered
CO_E_NOTINITIALIZED                      CoInitialize has not been called.
CO_E_ALREADYINITIALIZED                  CoInitialize has already been called.
DIERR_INSUFFICIENTPRIVS & VFW_E_INVALIDMEDIATYPE Unable to IDirectInputJoyConfig_Acquire because the user does not have sufficient privileges to change the joystick configuration. & An invalid media type was specified
DIERR_DEVICEFULL & VFW_E_INVALIDSUBTYPE & DMO_E_INVALIDSTREAMINDEX The device is full. & An invalid media subtype was specified.
DIERR_MOREDATA & VFW_E_NEED_OWNER & DMO_E_INVALIDTYPE Not all the requested information fit into the buffer. & This object can only be created as an aggregated object.
DIERR_NOTDOWNLOADED & VFW_E_ENUM_OUT_OF_SYNC & DMO_E_TYPE_NOT_SET The effect is not downloaded. & The enumerator has become invalid.
DIERR_HASEFFECTS & VFW_E_ALREADY_CONNECTED & DMO_E_NOTACCEPTING The device cannot be reinitialized because there are still effects attached to it. & At least one of the pins involved in the operation is already connected.
DIERR_NOTEXCLUSIVEACQUIRED & VFW_E_FILTER_ACTIVE & DMO_E_TYPE_NOT_ACCEPTED The operation cannot be performed unless the device is acquired in DISCL_EXCLUSIVE mode. & This operation cannot be performed because the filter is active.
DIERR_INCOMPLETEEFFECT & VFW_E_NO_TYPES & DMO_E_NO_MORE_ITEMS The effect could not be downloaded because essential information is missing.  For example, no axes have been associated with the effect, or no type-specific information has been created. & One of the specified pins supports no media types.
DIERR_NOTBUFFERED & VFW_E_NO_ACCEPTABLE_TYPES Attempted to read buffered device data from a device that is not buffered. & There is no common media type between these pins.
DIERR_EFFECTPLAYING & VFW_E_INVALID_DIRECTION An attempt was made to modify parameters of an effect while it is playing.  Not all hardware devices support altering the parameters of an effect while it is playing. & Two pins of the same direction cannot be connected together.
DIERR_UNPLUGGED & VFW_E_NOT_CONNECTED    The operation could not be completed because the device is not plugged in. & The operation cannot be performed because the pins are not connected.
DIERR_REPORTFULL & VFW_E_NO_ALLOCATOR    SendDeviceData failed because more information was requested to be sent than can be sent to the device.  Some devices have restrictions on how much data can be sent to them.  (For example, there might be a limit on the number of buttons that can be pressed at once.) & No sample buffer allocator is available.
DIERR_MAPFILEFAIL & VFW_E_RUNTIME_ERROR  A mapper file function failed because reading or writing the user or IHV settings file failed. & A run-time error occurred.
VFW_E_BUFFER_NOTSET                      No buffer space has been set
VFW_E_BUFFER_OVERFLOW                    The buffer is not big enough.
VFW_E_BADALIGN                           An invalid alignment was specified.
VFW_E_ALREADY_COMMITTED                  Cannot change allocated memory while the filter is active.
VFW_E_BUFFERS_OUTSTANDING                One or more buffers are still active.
VFW_E_NOT_COMMITTED                      Cannot allocate a sample when the allocator is not active.
VFW_E_SIZENOTSET                         Cannot allocate memory because no size has been set.
VFW_E_NO_CLOCK                           Cannot lock for synchronization because no clock has been defined.
VFW_E_NO_SINK                            Quality messages could not be sent because no quality sink has been defined.
VFW_E_NO_INTERFACE                       A required interface has not been implemented.
VFW_E_NOT_FOUND                          An object or name was not found.
VFW_E_CANNOT_CONNECT                     No combination of intermediate filters could be found to make the connection.
VFW_E_CANNOT_RENDER                      No combination of filters could be found to render the stream.
VFW_E_CHANGING_FORMAT                    Could not change formats dynamically.
VFW_E_NO_COLOR_KEY_SET                   No color key has been set.
VFW_E_NOT_OVERLAY_CONNECTION             Current pin connection is not using the IOverlay transport.
VFW_E_NOT_SAMPLE_CONNECTION              Current pin connection is not using the IMemInputPin transport.
VFW_E_PALETTE_SET                        Setting a color key would conflict with the palette already set.
VFW_E_COLOR_KEY_SET                      Setting a palette would conflict with the color key already set.
VFW_E_NO_COLOR_KEY_FOUND                 No matching color key is available.
VFW_E_NO_PALETTE_AVAILABLE               No palette is available.
VFW_E_NO_DISPLAY_PALETTE                 Display does not use a palette.
VFW_E_TOO_MANY_COLORS                    Too many colors for the current display settings.
VFW_E_STATE_CHANGED                      The state changed while waiting to process the sample.
VFW_E_NOT_STOPPED                        The operation could not be performed because the filter is not stopped.
VFW_E_NOT_PAUSED                         The operation could not be performed because the filter is not paused.
VFW_E_NOT_RUNNING                        The operation could not be performed because the filter is not running.
VFW_E_WRONG_STATE                        The operation could not be performed because the filter is in the wrong state.
VFW_E_START_TIME_AFTER_END               The sample start time is after the sample end time.
VFW_E_INVALID_RECT                       The supplied rectangle is invalid.
VFW_E_TYPE_NOT_ACCEPTED                  This pin cannot use the supplied media type.
VFW_E_SAMPLE_REJECTED                    This sample cannot be rendered.
VFW_E_SAMPLE_REJECTED_EOS                This sample cannot be rendered because the end of the stream has been reached.
VFW_E_DUPLICATE_NAME                     An attempt to add a filter with a duplicate name failed.
VFW_E_TIMEOUT                            A time-out has expired.
VFW_E_INVALID_FILE_FORMAT                The file format is invalid.
VFW_E_ENUM_OUT_OF_RANGE                  The list has already been exhausted.
VFW_E_CIRCULAR_GRAPH                     The filter graph is circular.
VFW_E_NOT_ALLOWED_TO_SAVE                Updates are not allowed in this state.
VFW_E_TIME_ALREADY_PASSED                An attempt was made to queue a command for a time in the past.
VFW_E_ALREADY_CANCELLED                  The queued command has already been canceled.
VFW_E_CORRUPT_GRAPH_FILE                 Cannot render the file because it is corrupt.
VFW_E_ADVISE_ALREADY_SET                 An overlay advise link already exists.
VFW_E_NO_MODEX_AVAILABLE                 No full-screen modes are available.
VFW_E_NO_ADVISE_SET                      This Advise cannot be canceled because it was not successfully set.
VFW_E_NO_FULLSCREEN                      A full-screen mode is not available.
VFW_E_IN_FULLSCREEN_MODE                 Cannot call IVideoWindow methods while in full-screen mode.
VFW_E_UNKNOWN_FILE_TYPE                  The media type of this file is not recognized.
VFW_E_CANNOT_LOAD_SOURCE_FILTER          The source filter for this file could not be loaded.
VFW_E_FILE_TOO_SHORT                     A file appeared to be incomplete.
VFW_E_INVALID_FILE_VERSION               The version number of the file is invalid.
VFW_E_INVALID_CLSID                      This file is corrupt: it contains an invalid class identifier.
VFW_E_INVALID_MEDIA_TYPE                 This file is corrupt: it contains an invalid media type.
VFW_E_SAMPLE_TIME_NOT_SET                No time stamp has been set for this sample.
VFW_E_MEDIA_TIME_NOT_SET                 No media time stamp has been set for this sample.
VFW_E_NO_TIME_FORMAT_SET                 No media time format has been selected.
VFW_E_MONO_AUDIO_HW                      Cannot change balance because audio device is mono only.
VFW_E_NO_DECOMPRESSOR                    Cannot play back the video stream: no suitable decompressor could be found.
VFW_E_NO_AUDIO_HARDWARE                  Cannot play back the audio stream: no audio hardware is available, or the hardware is not responding.
VFW_E_RPZA                               Cannot play back the video stream: format 'RPZA' is not supported.
VFW_E_PROCESSOR_NOT_SUITABLE             ActiveMovie cannot play MPEG movies on this processor.
VFW_E_UNSUPPORTED_AUDIO                  Cannot play back the audio stream: the audio format is not supported.
VFW_E_UNSUPPORTED_VIDEO                  Cannot play back the video stream: the video format is not supported.
VFW_E_MPEG_NOT_CONSTRAINED               ActiveMovie cannot play this video stream because it falls outside the constrained standard.
VFW_E_NOT_IN_GRAPH                       Cannot perform the requested function on an object that is not in the filter graph.
VFW_E_NO_TIME_FORMAT                     Cannot get or set time related information on an object that is using a time format of TIME_FORMAT_NONE.
VFW_E_READ_ONLY                          The connection cannot be made because the stream is read only and the filter alters the data.
VFW_E_BUFFER_UNDERFLOW                   The buffer is not full enough.
VFW_E_UNSUPPORTED_STREAM                 Cannot play back the file.  The format is not supported.
VFW_E_NO_TRANSPORT                       Pins cannot connect due to not supporting the same transport.
VFW_E_BAD_VIDEOCD                        The Video CD can't be read correctly by the device or is the data is corrupt.
VFW_E_OUT_OF_VIDEO_MEMORY                There is not enough Video Memory at this display resolution and number of colors. Reducing resolution might help.
VFW_E_VP_NEGOTIATION_FAILED              The VideoPort connection negotiation process has failed.
VFW_E_DDRAW_CAPS_NOT_SUITABLE            Either DirectDraw has not been installed or the Video Card capabilities are not suitable. Make sure the display is not in 16 color mode.
VFW_E_NO_VP_HARDWARE                     No VideoPort hardware is available, or the hardware is not responding.
VFW_E_NO_CAPTURE_HARDWARE                No Capture hardware is available, or the hardware is not responding.
VFW_E_DVD_OPERATION_INHIBITED            This User Operation is inhibited by DVD Content at this time.
VFW_E_DVD_INVALIDDOMAIN                  This Operation is not permitted in the current domain.
VFW_E_DVD_NO_BUTTON                      The specified button is invalid or is not present at the current time, or there is no button present at the specified location.
VFW_E_DVD_GRAPHNOTREADY                  DVD-Video playback graph has not been built yet.
VFW_E_DVD_RENDERFAIL                     DVD-Video playback graph building failed.
VFW_E_DVD_DECNOTENOUGH                   DVD-Video playback graph could not be built due to insufficient decoders.
VFW_E_DDRAW_VERSION_NOT_SUITABLE         Version number of DirectDraw not suitable. Make sure to install dx5 or higher version.
VFW_E_COPYPROT_FAILED                    Copy protection cannot be enabled. Please make sure any other copy protected content is not being shown now.
VFW_E_TIME_EXPIRED                       This object cannot be used anymore as its time has expired.
VFW_E_DVD_WRONG_SPEED                    The operation cannot be performed at the current playback speed.
VFW_E_DVD_MENU_DOES_NOT_EXIST            The specified menu doesn't exist.
VFW_E_DVD_CMD_CANCELLED                  The specified command was either cancelled or no longer exists.
VFW_E_DVD_STATE_WRONG_VERSION            The data did not contain a recognized version.
VFW_E_DVD_STATE_CORRUPT                  The state data was corrupt.
VFW_E_DVD_STATE_WRONG_DISC               The state data is from a different disc.
VFW_E_DVD_INCOMPATIBLE_REGION            The region was not compatible with the current drive.
VFW_E_DVD_NO_ATTRIBUTES                  The requested DVD stream attribute does not exist.
VFW_E_DVD_NO_GOUP_PGC                    Currently there is no GoUp (Annex J user function) program chain (PGC).
VFW_E_DVD_LOW_PARENTAL_LEVEL             The current parental level was too low.
VFW_E_DVD_NOT_IN_KARAOKE_MODE            The current audio is not karaoke content.
VFW_E_FRAME_STEP_UNSUPPORTED             Frame step is not supported on this configuration.
VFW_E_DVD_STREAM_DISABLED                The specified stream is disabled and cannot be selected.
VFW_E_DVD_TITLE_UNKNOWN                  The operation depends on the current title number, however the navigator has not yet entered the VTSM or the title domains, so the 'current' title index is unknown.
VFW_E_DVD_INVALID_DISC                   The specified path does not point to a valid DVD disc.
VFW_E_DVD_NO_RESUME_INFORMATION          There is currently no resume information.
VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD This thread has already blocked this output pin.  There is no need to call IPinFlowControl::Block() again.
VFW_E_PIN_ALREADY_BLOCKED                IPinFlowControl::Block() has been called on another thread.  The current thread cannot make any assumptions about this pin's block state.
VFW_E_CERTIFICATION_FAILURE              An operation failed due to a certification failure.
VFW_E_BAD_KEY                            A registry entry is corrupt.
MS_E_NOSTREAM                            No stream can be found with the specified attributes.
MS_E_NOSEEKING                           Seeking not supported for this object.
MS_E_INCOMPATIBLE                        The stream formats are not compatible.
MS_E_BUSY                                The sample is busy.
MS_E_NOTINIT                             The object can't accept the call because its initialize function or equivalent has not been called.
MS_E_SOURCEALREADYDEFINED                MS_E_SOURCEALREADYDEFINED
MS_E_INVALIDSTREAMTYPE                   The stream type is not valid for this operation.
MS_E_NOTRUNNING                          The object is not in running state.
ERROR_FILE_NOT_FOUND                     The system cannot find the file specified.
ERROR_PATH_NOT_FOUND                     The system cannot find the path specified.
ERROR_TOO_MANY_OPEN_FILES                The system cannot open the file.
E_ACCESSDENIED                           Access is denied
E_HANDLE                                 Invalid handle
ERROR_NOT_ENOUGH_MEMORY                  Not enough storage is available to process this command.
ERROR_INVALID_BLOCK                      The storage control block address is invalid.
ERROR_BAD_ENVIRONMENT                    The environment is incorrect.
ERROR_BAD_FORMAT                         An attempt was made to load a program with an incorrect format.
ERROR_INVALID_ACCESS & DIERR_NOTACQUIRED The operation cannot be performed unless the device is acquired.
E_OUTOFMEMORY                            Ran out of memory
ERROR_NOT_READY & DIERR_NOTINITIALIZED   This object has not been initialized
ERROR_READ_FAULT & DIERR_INPUTLOST       Access to the device has been lost.  It must be re-acquired.
E_INVALIDARG                             An invalid parameter was passed to the returning function
ERROR_BAD_DRIVER_LEVEL & DIERR_BADDRIVERVER The object could not be created due to an incompatible driver version or mismatched or incomplete driver components.
ERROR_BUSY & DIERR_ACQUIRED              The operation cannot be performed while the device is acquired.
ERROR_OLD_WIN_VERSION & DIERR_OLDDIRECTINPUTVERSION The application requires a newer version of DirectInput.
ERROR_RMODE_APP & DIERR_BETADIRECTINPUTVERSION The application was written for an unsupported prerelease version of DirectInput.
ERROR_NOT_FOUND & E_PROP_ID_UNSUPPORTED  The specified property ID is not supported for the specified property set.
ERROR_SET_NOT_FOUND & E_PROP_SET_UNSUPPORTED The specified property set is not supported.
ERROR_ALREADY_INITIALIZED & DIERR_ALREADYINITIALIZED This object is already initialized
DPNERR_ABORTED                           Aborted
DPNERR_ADDRESSING                        Addressing
DPNERR_ALREADYCLOSING                    Already closing
DPNERR_ALREADYCONNECTED                  Already connected
DPNERR_ALREADYDISCONNECTING              Already disconnecting
DPNERR_ALREADYINITIALIZED                Already initialized
DPNERR_ALREADYREGISTERED                 Already registered
DPNERR_BUFFERTOOSMALL                    Buffer too small
DPNERR_CANNOTCANCEL                      Cannot cancel
DPNERR_CANTCREATEGROUP                   Cannot create group
DPNERR_CANTCREATEPLAYER                  Cannot create player
DPNERR_CANTLAUNCHAPPLICATION             Cannot launch application
DPNERR_CONNECTING                        Connecting
DPNERR_CONNECTIONLOST                    Connection lost
DPNERR_CONVERSION                        Conversion
DPNERR_DATATOOLARGE                      Data too large
DPNERR_DOESNOTEXIST                      Does not exist
DPNERR_DPNSVRNOTAVAILABLE                dpnsvr not available
DPNERR_DUPLICATECOMMAND                  Duplicate command
DPNERR_ENDPOINTNOTRECEIVING              End point not receiving
DPNERR_ENUMQUERYTOOLARGE                 Enum query too large
DPNERR_ENUMRESPONSETOOLARGE              Enum response too large
DPNERR_EXCEPTION                         Exception
DPNERR_GROUPNOTEMPTY                     Group not empty
DPNERR_HOSTING                           Hosting
DPNERR_HOSTREJECTEDCONNECTION            Host rejected connection
DPNERR_HOSTTERMINATEDSESSION             Host terminated session
DPNERR_INCOMPLETEADDRESS                 Incomplete address
DPNERR_INVALIDADDRESSFORMAT              Invalid address format
DPNERR_INVALIDAPPLICATION                Invalid application
DPNERR_INVALIDCOMMAND                    Invalid command
DPNERR_INVALIDDEVICEADDRESS              Invalid device address
DPNERR_INVALIDENDPOINT                   Invalid end point
DPNERR_INVALIDFLAGS                      Invalid flags
DPNERR_INVALIDGROUP                      Invalid group
DPNERR_INVALIDHANDLE                     Invalid handle
DPNERR_INVALIDHOSTADDRESS                Invalid host address
DPNERR_INVALIDINSTANCE                   Invalid instance
DPNERR_INVALIDINTERFACE                  Invalid interface
DPNERR_INVALIDOBJECT                     Invalid object
DPNERR_INVALIDPASSWORD                   Invalid password
DPNERR_INVALIDPLAYER                     Invalid player
DPNERR_INVALIDPRIORITY                   Invalid priority
DPNERR_INVALIDSTRING                     Invalid string
DPNERR_INVALIDURL                        Invalid url
DPNERR_INVALIDVERSION                    Invalid version
DPNERR_NOCAPS                            No caps
DPNERR_NOCONNECTION                      No connection
DPNERR_NOHOSTPLAYER                      No host player
DPNERR_NOMOREADDRESSCOMPONENTS           No more address components
DPNERR_NORESPONSE                        No response
DPNERR_NOTALLOWED                        Not allowed
DPNERR_NOTHOST                           Not host
DPNERR_NOTREADY                          Not ready
DPNERR_NOTREGISTERED                     Not registered
DPNERR_PLAYERALREADYINGROUP              Player already in group
DPNERR_PLAYERLOST                        Player lost
DPNERR_PLAYERNOTINGROUP                  Player not in group
DPNERR_PLAYERNOTREACHABLE                Player not reachable
DPNERR_SENDTOOLARGE                      Send too large
DPNERR_SESSIONFULL                       Session full
DPNERR_TABLEFULL                         Table full
DPNERR_TIMEDOUT                          Timed out
DPNERR_UNINITIALIZED                     Uninitialized
DPNERR_USERCANCEL                        User cancel
DDERR_ALREADYINITIALIZED                 This object is already initialized
DDERR_CANNOTATTACHSURFACE                This surface cannot be attached to the requested surface.
DDERR_CANNOTDETACHSURFACE                This surface cannot be detached from the requested surface.
DDERR_CURRENTLYNOTAVAIL                  Support is currently not available.
DDERR_EXCEPTION                          An exception was encountered while performing the requested operation
DDERR_HEIGHTALIGN                        Height of rectangle provided is not a multiple of reqd alignment
DDERR_INCOMPATIBLEPRIMARY                Unable to match primary surface creation request with existing primary surface.
DDERR_INVALIDCAPS                        One or more of the caps bits passed to the callback are incorrect.
DDERR_INVALIDCLIPLIST                    DirectDraw does not support provided Cliplist.
DDERR_INVALIDMODE                        DirectDraw does not support the requested mode
DDERR_INVALIDOBJECT                      DirectDraw received a pointer that was an invalid DIRECTDRAW object.
DDERR_INVALIDPIXELFORMAT                 pixel format was invalid as specified
DDERR_INVALIDRECT                        Rectangle provided was invalid.
DDERR_LOCKEDSURFACES                     Operation could not be carried out because one or more surfaces are locked
DDERR_NO3D                               There is no 3D present.
DDERR_NOALPHAHW                          Operation could not be carried out because there is no alpha accleration hardware present or available.
DDERR_NOSTEREOHARDWARE                   Operation could not be carried out because there is no stereo hardware present or available.
DDERR_NOSURFACELEFT                      Operation could not be carried out because there is no hardware present which supports stereo surfaces
DDERR_NOCLIPLIST                         no clip list available
DDERR_NOCOLORCONVHW                      Operation could not be carried out because there is no color conversion hardware present or available.
DDERR_NOCOOPERATIVELEVELSET              Create function called without DirectDraw object method SetCooperativeLevel being called.
DDERR_NOCOLORKEY                         Surface doesn't currently have a color key
DDERR_NOCOLORKEYHW                       Operation could not be carried out because there is no hardware support of the dest color key.
DDERR_NODIRECTDRAWSUPPORT                No DirectDraw support possible with current display driver
DDERR_NOEXCLUSIVEMODE                    Operation requires the application to have exclusive mode but the application does not have exclusive mode.
DDERR_NOFLIPHW                           Flipping visible surfaces is not supported.
DDERR_NOGDI                              There is no GDI present.
DDERR_NOMIRRORHW                         Operation could not be carried out because there is no hardware present or available.
DDERR_NOTFOUND                           Requested item was not found
DDERR_NOOVERLAYHW                        Operation could not be carried out because there is no overlay hardware present or available.
DDERR_OVERLAPPINGRECTS                   Operation could not be carried out because the source and destination rectangles are on the same surface and overlap each other.
DDERR_NORASTEROPHW                       Operation could not be carried out because there is no appropriate raster op hardware present or available.
DDERR_NOROTATIONHW                       Operation could not be carried out because there is no rotation hardware present or available.
DDERR_NOSTRETCHHW                        Operation could not be carried out because there is no hardware support for stretching
DDERR_NOT4BITCOLOR                       DirectDrawSurface is not in 4 bit color palette and the requested operation requires 4 bit color palette.
DDERR_NOT4BITCOLORINDEX                  DirectDrawSurface is not in 4 bit color index palette and the requested operation requires 4 bit color index palette.
DDERR_NOT8BITCOLOR                       DirectDraw Surface is not in 8 bit color mode and the requested operation requires 8 bit color.
DDERR_NOTEXTUREHW                        Operation could not be carried out because there is no texture mapping hardware present or available.
DDERR_NOVSYNCHW                          Operation could not be carried out because there is no hardware support for vertical blank synchronized operations.
DDERR_NOZBUFFERHW                        Operation could not be carried out because there is no hardware support for zbuffer blitting.
DDERR_NOZOVERLAYHW                       Overlay surfaces could not be z layered based on their BltOrder because the hardware does not support z layering of overlays.
DDERR_OUTOFCAPS                          The hardware needed for the requested operation has already been allocated.
D3DERR_OUTOFVIDEOMEMORY                  Out of video memory
DDERR_OVERLAYCANTCLIP                    hardware does not support clipped overlays
DDERR_OVERLAYCOLORKEYONLYONEACTIVE       Can only have one color key active at one time for overlays
DDERR_PALETTEBUSY                        Access to this palette is being refused because the palette is already locked by another thread.
DDERR_COLORKEYNOTSET                     No src color key specified for this operation.
DDERR_SURFACEALREADYATTACHED             This surface is already attached to the surface it is being attached to.
DDERR_SURFACEALREADYDEPENDENT            This surface is already a dependency of the surface it is being made a dependency of.
DDERR_SURFACEBUSY                        Access to this surface is being refused because the surface is already locked by another thread.
DDERR_CANTLOCKSURFACE                    Access to this surface is being refused because no driver exists which can supply a pointer to the surface. This is most likely to happen when attempting to lock the primary surface when no DCI provider is present. Will also happen on attempts to lock an optimized surface.
DDERR_SURFACEISOBSCURED                  Access to Surface refused because Surface is obscured.
DDERR_SURFACELOST                        Access to this surface is being refused because the surface is gone. The DIRECTDRAWSURFACE object representing this surface should have Restore called on it.
DDERR_SURFACENOTATTACHED                 The requested surface is not attached.
DDERR_TOOBIGHEIGHT                       Height requested by DirectDraw is too large.
DDERR_TOOBIGSIZE                         Size requested by DirectDraw is too large --  The individual height and width are OK.
DDERR_TOOBIGWIDTH                        Width requested by DirectDraw is too large.
DDERR_UNSUPPORTEDFORMAT                  Pixel format requested is unsupported by DirectDraw
DDERR_UNSUPPORTEDMASK                    Bitmask in the pixel format requested is unsupported by DirectDraw
DDERR_INVALIDSTREAM                      The specified stream contains invalid data
DDERR_VERTICALBLANKINPROGRESS            vertical blank is in progress
DDERR_WASSTILLDRAWING                    Was still drawing
DDERR_DDSCAPSCOMPLEXREQUIRED             The specified surface type requires specification of the COMPLEX flag
DDERR_XALIGN                             Rectangle provided was not horizontally aligned on reqd. boundary
DDERR_INVALIDDIRECTDRAWGUID              The GUID passed to DirectDrawCreate is not a valid DirectDraw driver identifier.
DDERR_DIRECTDRAWALREADYCREATED           A DirectDraw object representing this driver has already been created for this process.
DDERR_NODIRECTDRAWHW                     A hardware only DirectDraw object creation was attempted but the driver did not support any hardware.
DDERR_PRIMARYSURFACEALREADYEXISTS        this process already has created a primary surface
DDERR_NOEMULATION                        software emulation not available.
DDERR_REGIONTOOSMALL                     region passed to Clipper::GetClipList is too small.
DDERR_CLIPPERISUSINGHWND                 an attempt was made to set a clip list for a clipper object that is already monitoring an hwnd.
DDERR_NOCLIPPERATTACHED                  No clipper object attached to surface object
DDERR_NOHWND                             Clipper notification requires an HWND or no HWND has previously been set as the CooperativeLevel HWND.
DDERR_HWNDSUBCLASSED                     HWND used by DirectDraw CooperativeLevel has been subclassed, this prevents DirectDraw from restoring state.
DDERR_HWNDALREADYSET                     The CooperativeLevel HWND has already been set. It cannot be reset while the process has surfaces or palettes created.
DDERR_NOPALETTEATTACHED                  No palette object attached to this surface.
DDERR_NOPALETTEHW                        No hardware support for 16 or 256 color palettes.
DDERR_BLTFASTCANTCLIP                    If a clipper object is attached to the source surface passed into a BltFast call.
DDERR_NOBLTHW                            No blter.
DDERR_NODDROPSHW                         No DirectDraw ROP hardware.
DDERR_OVERLAYNOTVISIBLE                  returned when GetOverlayPosition is called on a hidden overlay
DDERR_NOOVERLAYDEST                      returned when GetOverlayPosition is called on an overlay that UpdateOverlay has never been called on to establish a destination.
DDERR_INVALIDPOSITION                    returned when the position of the overlay on the destination is no longer legal for that destionation.
DDERR_NOTAOVERLAYSURFACE                 returned when an overlay member is called for a non-overlay surface
DDERR_EXCLUSIVEMODEALREADYSET            An attempt was made to set the cooperative level when it was already set to exclusive.
DDERR_NOTFLIPPABLE                       An attempt has been made to flip a surface that is not flippable.
DDERR_CANTDUPLICATE                      Can't duplicate primary & 3D surfaces, or surfaces that are implicitly created.
DDERR_NOTLOCKED                          Surface was not locked.  An attempt to unlock a surface that was not locked at all, or by this process, has been attempted.
DDERR_CANTCREATEDC                       Windows cannot create any more DCs, or a DC was requested for a palette-indexed surface when the surface had no palette AND the display mode was not palette-indexed (in this case DirectDraw cannot select a proper palette into the DC)
DDERR_NODC                               No DC was ever created for this surface.
DDERR_WRONGMODE                          This surface cannot be restored because it was created in a different mode.
DDERR_IMPLICITLYCREATED                  This surface cannot be restored because it is an implicitly created surface.
DDERR_NOTPALETTIZED                      The surface being used is not a palette-based surface
DDERR_UNSUPPORTEDMODE                    The display is currently in an unsupported mode
DDERR_NOMIPMAPHW                         Operation could not be carried out because there is no mip-map texture mapping hardware present or available.
DDERR_INVALIDSURFACETYPE                 The requested action could not be performed because the surface was of the wrong type.
DDERR_NOOPTIMIZEHW                       Device does not support optimized surfaces, therefore no video memory optimized surfaces
DDERR_NOTLOADED                          Surface is an optimized surface, but has not yet been allocated any memory
DDERR_NOFOCUSWINDOW                      Attempt was made to create or set a device window without first setting the focus window
DDERR_NOTONMIPMAPSUBLEVEL                Attempt was made to set a palette on a mipmap sublevel
DDERR_DCALREADYCREATED                   A DC has already been returned for this surface. Only one DC can be retrieved per surface.
DDERR_NONONLOCALVIDMEM                   An attempt was made to allocate non-local video memory from a device that does not support non-local video memory.
DDERR_CANTPAGELOCK                       The attempt to page lock a surface failed.
DDERR_CANTPAGEUNLOCK                     The attempt to page unlock a surface failed.
DDERR_NOTPAGELOCKED                      An attempt was made to page unlock a surface with no outstanding page locks.
DDERR_MOREDATA                           There is more data available than the specified buffer size could hold
DDERR_EXPIRED                            The data has expired and is therefore no longer valid.
DDERR_TESTFINISHED                       The mode test has finished executing.
DDERR_NEWMODE                            The mode test has switched to a new mode.
DDERR_D3DNOTINITIALIZED                  D3D has not yet been initialized.
DDERR_VIDEONOTACTIVE                     The video port is not active
DDERR_NOMONITORINFORMATION               The monitor does not have EDID data.
DDERR_NODRIVERSUPPORT                    The driver does not enumerate display mode refresh rates.
DDERR_DEVICEDOESNTOWNSURFACE             Surfaces created by one direct draw device cannot be used directly by another direct draw device.
DXFILEERR_BADOBJECT                      Bad object
DXFILEERR_BADVALUE                       Bad value
DXFILEERR_BADTYPE                        Bad type
DXFILEERR_BADSTREAMHANDLE                Bad stream handle
DXFILEERR_BADALLOC                       Bad alloc
DXFILEERR_NOTFOUND                       Not found
DXFILEERR_NOTDONEYET                     Not done yet
DXFILEERR_FILENOTFOUND                   File not found
DXFILEERR_RESOURCENOTFOUND               Resource not found
DXFILEERR_URLNOTFOUND                    Url not found
DXFILEERR_BADRESOURCE                    Bad resource
DXFILEERR_BADFILETYPE                    Bad file type
DXFILEERR_BADFILEVERSION                 Bad file version
DXFILEERR_BADFILEFLOATSIZE               Bad file float size
DXFILEERR_BADFILECOMPRESSIONTYPE         Bad file compression type
DXFILEERR_BADFILE                        Bad file
DXFILEERR_PARSEERROR                     Parse error
DXFILEERR_NOTEMPLATE                     No template
DXFILEERR_BADARRAYSIZE                   Bad array size
DXFILEERR_BADDATAREFERENCE               Bad data reference
DXFILEERR_INTERNALERROR                  Internal error
DXFILEERR_NOMOREOBJECTS                  No more objects
DXFILEERR_BADINTRINSICS                  Bad intrinsics
DXFILEERR_NOMORESTREAMHANDLES            No more stream handles
DXFILEERR_NOMOREDATA                     No more data
DXFILEERR_BADCACHEFILE                   Bad cache file
DXFILEERR_NOINTERNET                     No internet
D3DERR_WRONGTEXTUREFORMAT                Wrong texture format
D3DERR_UNSUPPORTEDCOLOROPERATION         Unsupported color operation
D3DERR_UNSUPPORTEDCOLORARG               Unsupported color arg
D3DERR_UNSUPPORTEDALPHAOPERATION         Unsupported alpha operation
D3DERR_UNSUPPORTEDALPHAARG               Unsupported alpha arg
D3DERR_TOOMANYOPERATIONS                 Too many operations
D3DERR_CONFLICTINGTEXTUREFILTER          Conflicting texture filter
D3DERR_UNSUPPORTEDFACTORVALUE            Unsupported factor value
D3DERR_CONFLICTINGRENDERSTATE            Conflicting render state
D3DERR_UNSUPPORTEDTEXTUREFILTER          Unsupported texture filter
D3DERR_CONFLICTINGTEXTUREPALETTE         Conflicting texture palette
D3DERR_DRIVERINTERNALERROR               Driver internal error
D3DERR_NOTFOUND                          Not found
D3DERR_MOREDATA                          More data
D3DERR_DEVICELOST                        Device lost
D3DERR_DEVICENOTRESET                    Device not reset
D3DERR_NOTAVAILABLE                      Not available
D3DERR_INVALIDDEVICE                     Invalid device
D3DERR_INVALIDCALL                       Invalid call
D3DERR_DRIVERINVALIDCALL                 Driver invalid call
DSERR_ALLOCATED                          The call failed because resources (such as a priority level) were already being used by another caller
DSERR_CONTROLUNAVAIL                     The control (vol, pan, etc.) requested by the caller is not available
DSERR_INVALIDCALL                        This call is not valid for the current state of this object
DSERR_PRIOLEVELNEEDED                    The caller does not have the priority level required for the function to succeed
DSERR_BADFORMAT                          The specified WAVE format is not supported
DSERR_NODRIVER                           No sound driver is available for use
DSERR_ALREADYINITIALIZED                 This object is already initialized
DSERR_BUFFERLOST                         The buffer memory has been lost, and must be restored
DSERR_OTHERAPPHASPRIO                    Another app has a higher priority level, preventing this call from succeeding
DSERR_UNINITIALIZED                      This object has not been initialized
DSERR_BUFFERTOOSMALL                     Tried to create a DSBCAPS_CTRLFX buffer shorter than DSBSIZE_FX_MIN milliseconds
DSERR_DS8_REQUIRED                       Attempt to use DirectSound 8 functionality on an older DirectSound object
DSERR_SENDLOOP                           A circular loop of send effects was detected
DSERR_BADSENDBUFFERGUID                  The GUID specified in an audiopath file does not match a valid MIXIN buffer
DMUS_E_DRIVER_FAILED                     An unexpected error was returned from a device driver, indicating possible failure of the driver or hardware.
DMUS_E_PORTS_OPEN                        The requested operation cannot be performed while there are  instantiated ports in any process in the system.
DMUS_E_DEVICE_IN_USE                     The requested device is already in use (possibly by a non-DirectMusic client) and cannot be opened again.
DMUS_E_INSUFFICIENTBUFFER                Buffer is not large enough for requested operation.
DMUS_E_BUFFERNOTSET                      No buffer was prepared for the download data.
DMUS_E_BUFFERNOTAVAILABLE                Download failed due to inability to access or create download buffer.
DMUS_E_NOTADLSCOL                        Error parsing DLS collection. File is corrupt.
DMUS_E_INVALIDOFFSET                     Wave chunks in DLS collection file are at incorrect offsets.
DMUS_E_ALREADY_LOADED                    Second attempt to load a DLS collection that is currently open. 
DMUS_E_INVALIDPOS                        Error reading wave data from DLS collection. Indicates bad file.
DMUS_E_INVALIDPATCH                      There is no instrument in the collection that matches patch number.
DMUS_E_CANNOTSEEK                        The IStream* doesn't support Seek().
DMUS_E_CANNOTWRITE                       The IStream* doesn't support Write().
DMUS_E_CHUNKNOTFOUND                     The RIFF parser doesn't contain a required chunk while parsing file.
DMUS_E_INVALID_DOWNLOADID                Invalid download id was used in the process of creating a download buffer.
DMUS_E_NOT_DOWNLOADED_TO_PORT            Tried to unload an object that was not downloaded or previously unloaded.
DMUS_E_ALREADY_DOWNLOADED                Buffer was already downloaded to synth.
DMUS_E_UNKNOWN_PROPERTY                  The specified property item was not recognized by the target object.
DMUS_E_SET_UNSUPPORTED                   The specified property item may not be set on the target object.
DMUS_E_GET_UNSUPPORTED                   * The specified property item may not be retrieved from the target object.
DMUS_E_NOTMONO                           Wave chunk has more than one interleaved channel. DLS format requires MONO.
DMUS_E_BADARTICULATION                   Invalid articulation chunk in DLS collection.
DMUS_E_BADINSTRUMENT                     Invalid instrument chunk in DLS collection.
DMUS_E_BADWAVELINK                       Wavelink chunk in DLS collection points to invalid wave.
DMUS_E_NOARTICULATION                    Articulation missing from instrument in DLS collection.
DMUS_E_NOTPCM                            Downoaded DLS wave is not in PCM format. 
DMUS_E_BADWAVE                           Bad wave chunk in DLS collection
DMUS_E_BADOFFSETTABLE                    Offset Table for download buffer has errors. 
DMUS_E_UNKNOWNDOWNLOAD                   Attempted to download unknown data type.
DMUS_E_NOSYNTHSINK                       The operation could not be completed because no sink was connected to the synthesizer.
DMUS_E_ALREADYOPEN                       An attempt was made to open the software synthesizer while it was already  open.
DMUS_E_ALREADYCLOSED                     An attempt was made to close the software synthesizer while it was already  open.
DMUS_E_SYNTHNOTCONFIGURED                The operation could not be completed because the software synth has not  yet been fully configured.
DMUS_E_SYNTHACTIVE                       The operation cannot be carried out while the synthesizer is active.
DMUS_E_CANNOTREAD                        An error occurred while attempting to read from the IStream* object.
DMUS_E_DMUSIC_RELEASED                   The operation cannot be performed because the final instance of the DirectMusic object was released. Ports cannot be used after final  release of the DirectMusic object.
DMUS_E_BUFFER_EMPTY                      There was no data in the referenced buffer.
DMUS_E_BUFFER_FULL                       There is insufficient space to insert the given event into the buffer.
DMUS_E_PORT_NOT_CAPTURE                  The given operation could not be carried out because the port is a capture port.
DMUS_E_PORT_NOT_RENDER                   The given operation could not be carried out because the port is a render port.
DMUS_E_DSOUND_NOT_SET                    The port could not be created because no DirectSound has been specified. Specify a DirectSound interface via the IDirectMusic::SetDirectSound method; pass NULL to have DirectMusic manage usage of DirectSound.
DMUS_E_ALREADY_ACTIVATED                 The operation cannot be carried out while the port is active.
DMUS_E_INVALIDBUFFER                     Invalid DirectSound buffer was handed to port. 
DMUS_E_WAVEFORMATNOTSUPPORTED            Invalid buffer format was handed to the synth sink.
DMUS_E_SYNTHINACTIVE                     The operation cannot be carried out while the synthesizer is inactive.
DMUS_E_DSOUND_ALREADY_SET                IDirectMusic::SetDirectSound has already been called. It may not be changed while in use.
DMUS_E_INVALID_EVENT                     The given event is invalid (either it is not a valid MIDI message or it makes use of running status). The event cannot be packed into the buffer.
DMUS_E_UNSUPPORTED_STREAM                The IStream* object does not contain data supported by the loading object.
DMUS_E_ALREADY_INITED                    The object has already been initialized.
DMUS_E_INVALID_BAND                      The file does not contain a valid band.
DMUS_E_TRACK_HDR_NOT_FIRST_CK            The IStream* object's data does not have a track header as the first chunk, and therefore cannot be read by the segment object.
DMUS_E_TOOL_HDR_NOT_FIRST_CK             The IStream* object's data does not have a tool header as the first chunk, and therefore cannot be read by the graph object.
DMUS_E_INVALID_TRACK_HDR                 The IStream* object's data contains an invalid track header (ckid is 0 and fccType is NULL,) and therefore cannot be read by the segment object.
DMUS_E_INVALID_TOOL_HDR                  The IStream* object's data contains an invalid tool header (ckid is 0 and fccType is NULL,) and therefore cannot be read by the graph object.
DMUS_E_ALL_TOOLS_FAILED                  The graph object was unable to load all tools from the IStream* object data. This may be due to errors in the stream, or the tools being incorrectly registered on the client.
DMUS_E_ALL_TRACKS_FAILED                 The segment object was unable to load all tracks from the IStream* object data. This may be due to errors in the stream, or the tracks being incorrectly registered on the client.
DSERR_OBJECTNOTFOUND                     The object requested was not found (numerically equal to DMUS_E_NOT_FOUND)
DMUS_E_NOT_INIT                          A required object is not initialized or failed to initialize.
DMUS_E_TYPE_DISABLED                     The requested parameter type is currently disabled. Parameter types may be enabled and disabled by certain calls to SetParam().
DMUS_E_TYPE_UNSUPPORTED                  The requested parameter type is not supported on the object.
DMUS_E_TIME_PAST                         The time is in the past, and the operation cannot succeed.
DMUS_E_TRACK_NOT_FOUND                   The requested track is not contained by the segment.
DMUS_E_TRACK_NO_CLOCKTIME_SUPPORT        The track does not support clock time playback or getparam.
DMUS_E_NO_MASTER_CLOCK                   There is no master clock in the performance. Be sure to call IDirectMusicPerformance::Init().
DMUS_E_LOADER_NOCLASSID                  The class id field is required and missing in the DMUS_OBJECTDESC.
DMUS_E_LOADER_BADPATH                    The requested file path is invalid.
DMUS_E_LOADER_FAILEDOPEN                 File open failed - either file doesn't exist or is locked.
DMUS_E_LOADER_FORMATNOTSUPPORTED         Search data type is not supported.
DMUS_E_LOADER_FAILEDCREATE               Unable to find or create object.
DMUS_E_LOADER_OBJECTNOTFOUND             Object was not found.
DMUS_E_LOADER_NOFILENAME                 The file name is missing from the DMUS_OBJECTDESC.
DMUS_E_INVALIDFILE                       The file requested is not a valid file.
DMUS_E_ALREADY_EXISTS                    The tool is already contained in the graph. Create a new instance.
DMUS_E_OUT_OF_RANGE                      Value is out of range, for instance the requested length is longer than the segment.
DMUS_E_SEGMENT_INIT_FAILED               Segment initialization failed, most likely due to a critical memory situation.
DMUS_E_ALREADY_SENT                      The DMUS_PMSG has already been sent to the performance object via IDirectMusicPerformance::SendPMsg().
DMUS_E_CANNOT_FREE                       The DMUS_PMSG was either not allocated by the performance via IDirectMusicPerformance::AllocPMsg() or it was already freed via IDirectMusicPerformance::FreePMsg().
DMUS_E_CANNOT_OPEN_PORT                  The default system port could not be opened.
DMUS_E_CANNOT_CONVERT                    A call to MIDIToMusic() or MusicToMIDI() resulted in an error because the requested conversion could not happen. This usually occurs when the provided DMUS_CHORD_KEY structure has an invalid chord or scale pattern.
DMUS_E_DESCEND_CHUNK_FAIL                DMUS_E_DESCEND_CHUNK_FAIL is returned when the end of the file  was reached before the desired chunk was found.
DMUS_E_NOT_LOADED                        An attempt to use this object failed because it first needs to be loaded.
DMUS_E_SCRIPT_LANGUAGE_INCOMPATIBLE      The activeX scripting engine for the script's language is not compatible with DirectMusic.
DMUS_E_SCRIPT_UNSUPPORTED_VARTYPE        A variant was used that had a type that is not supported by DirectMusic.
DMUS_E_SCRIPT_ERROR_IN_SCRIPT            An error was encountered while parsing or executing the script. The pErrorInfo parameter (if supplied) was filled with information about the error.
DMUS_E_SCRIPT_CANTLOAD_OLEAUT32          Loading of oleaut32.dll failed.  VBScript and other activeX scripting languages require use of oleaut32.dll.  On platforms where oleaut32.dll is not present, only the DirectMusicScript language, which doesn't require oleaut32.dll can be used.
DMUS_E_SCRIPT_LOADSCRIPT_ERROR           An error occurred while parsing a script loaded using LoadScript.  The script that was loaded contains an error.
DMUS_E_SCRIPT_INVALID_FILE               The script file is invalid.
DMUS_E_INVALID_SCRIPTTRACK               The file contains an invalid script track.
DMUS_E_SCRIPT_VARIABLE_NOT_FOUND         The script does not contain a variable with the specified name.
DMUS_E_SCRIPT_ROUTINE_NOT_FOUND          The script does not contain a routine with the specified name.
DMUS_E_SCRIPT_CONTENT_READONLY           Scripts variables for content referenced or embedded in a script cannot be set.
DMUS_E_SCRIPT_NOT_A_REFERENCE            Attempt was made to set a script's variable by reference to a value that was not an object type.
DMUS_E_SCRIPT_VALUE_NOT_SUPPORTED        Attempt was made to set a script's variable by value to an object that does not support a default value property.
DMUS_E_INVALID_SEGMENTTRIGGERTRACK       The file contains an invalid segment trigger track.
DMUS_E_INVALID_LYRICSTRACK               The file contains an invalid lyrics track.
DMUS_E_INVALID_PARAMCONTROLTRACK         The file contains an invalid parameter control track.
DMUS_E_AUDIOVBSCRIPT_SYNTAXERROR         A script written in AudioVBScript could not be read because it contained a statement that is not allowed by the AudioVBScript language.
DMUS_E_AUDIOVBSCRIPT_RUNTIMEERROR        A script routine written in AudioVBScript failed because an invalid operation occurred.  For example, adding the number 3 to a segment object would produce this error.  So would attempting to call a routine that doesn't exist.
DMUS_E_AUDIOVBSCRIPT_OPERATIONFAILURE    A script routine written in AudioVBScript failed because a function outside of a script failed to complete. For example, a call to PlaySegment that fails to play because of low memory would return this error.
DMUS_E_AUDIOPATHS_NOT_VALID              The Performance has set up some PChannels using the AssignPChannel command, which makes it not capable of supporting audio paths.
DMUS_E_AUDIOPATHS_IN_USE                 This is the inverse of the previous error. The Performance has set up some audio paths, which makes is incompatible with the calls to allocate pchannels, etc. 
DMUS_E_NO_AUDIOPATH_CONFIG               A segment or song was asked for its embedded audio path configuration, but there isn't any. 
DMUS_E_AUDIOPATH_INACTIVE                An audiopath is inactive, perhaps because closedown was called.
DMUS_E_AUDIOPATH_NOBUFFER                An audiopath failed to create because a requested buffer could not be created.
DMUS_E_AUDIOPATH_NOPORT                  An audiopath could not be used for playback because it lacked port assignments.
DMUS_E_NO_AUDIOPATH                      Attempt was made to play segment in audiopath mode and there was no audiopath.
DMUS_E_INVALIDCHUNK                      Invalid data was found in a RIFF file chunk.
DMUS_E_AUDIOPATH_NOGLOBALFXBUFFER        Attempt was made to create an audiopath that sends to a global effects buffer which did not exist.
DMUS_E_INVALID_CONTAINER_OBJECT          The file does not contain a valid container object.
