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. Ofcourse, 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. Ofcourse, 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 blting.
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 ony 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 objec 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 a overlay that UpdateOverlay has never been called on to establish a destionation.
DDERR_INVALIDPOSITION                    returned when the position of the overlay on the destionation 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 paltte-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 varient 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.
