ReactOS 0.4.17-dev-966-gf06eace
dmobject.h File Reference
#include "wine/debug.h"
Include dependency graph for dmobject.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  chunk_entry
 
struct  dmobject
 

Macros

#define MAKE_IDTYPE(id, type)   (((UINT64)type << 32) | (UINT64)id)
 
#define DMUS_OBJ_NAME_INAM   0x1000 /* 'INAM' chunk in UNFO list */
 
#define DMUS_OBJ_NAME_INFO   0x2000 /* 'INAM' chunk in INFO list */
 
#define DMUS_OBJ_GUID_DLID   0x4000 /* 'dlid' chunk instead of 'guid' */
 

Functions

HRESULT stream_read (IStream *stream, void *data, ULONG size)
 
HRESULT stream_get_chunk (IStream *stream, struct chunk_entry *chunk)
 
HRESULT stream_next_chunk (IStream *stream, struct chunk_entry *chunk)
 
HRESULT stream_skip_chunk (IStream *stream, const struct chunk_entry *chunk)
 
HRESULT stream_chunk_get_array (IStream *stream, const struct chunk_entry *chunk, void **array, unsigned int *count, DWORD elem_size)
 
HRESULT stream_chunk_get_data (IStream *stream, const struct chunk_entry *chunk, void *data, ULONG size)
 
HRESULT stream_chunk_get_wstr (IStream *stream, const struct chunk_entry *chunk, WCHAR *str, ULONG size)
 
HRESULT stream_get_loader (IStream *stream, IDirectMusicLoader **ret_loader)
 
HRESULT stream_get_object (IStream *stream, DMUS_OBJECTDESC *desc, REFIID riid, void **ret_iface)
 
static HRESULT stream_reset_chunk_data (IStream *stream, const struct chunk_entry *chunk)
 
static HRESULT stream_reset_chunk_start (IStream *stream, const struct chunk_entry *chunk)
 
void dmobject_init (struct dmobject *dmobj, const GUID *class, IUnknown *outer_unk)
 
HRESULT WINAPI dmobj_IDirectMusicObject_QueryInterface (IDirectMusicObject *iface, REFIID riid, void **ret_iface)
 
ULONG WINAPI dmobj_IDirectMusicObject_AddRef (IDirectMusicObject *iface)
 
ULONG WINAPI dmobj_IDirectMusicObject_Release (IDirectMusicObject *iface)
 
HRESULT WINAPI dmobj_IDirectMusicObject_GetDescriptor (IDirectMusicObject *iface, DMUS_OBJECTDESC *desc)
 
HRESULT WINAPI dmobj_IDirectMusicObject_SetDescriptor (IDirectMusicObject *iface, DMUS_OBJECTDESC *desc)
 
HRESULT dmobj_parsedescriptor (IStream *stream, const struct chunk_entry *riff, DMUS_OBJECTDESC *desc, DWORD supported)
 
HRESULT dmobj_parsereference (IStream *stream, const struct chunk_entry *list, IDirectMusicObject **dmobj)
 
HRESULT WINAPI dmobj_IPersistStream_QueryInterface (IPersistStream *iface, REFIID riid, void **ret_iface)
 
ULONG WINAPI dmobj_IPersistStream_AddRef (IPersistStream *iface)
 
ULONG WINAPI dmobj_IPersistStream_Release (IPersistStream *iface)
 
HRESULT WINAPI dmobj_IPersistStream_GetClassID (IPersistStream *iface, CLSID *class)
 
HRESULT WINAPI unimpl_IPersistStream_GetClassID (IPersistStream *iface, CLSID *class)
 
HRESULT WINAPI unimpl_IPersistStream_IsDirty (IPersistStream *iface)
 
HRESULT WINAPI unimpl_IPersistStream_Save (IPersistStream *iface, IStream *stream, BOOL clear_dirty)
 
HRESULT WINAPI unimpl_IPersistStream_GetSizeMax (IPersistStream *iface, ULARGE_INTEGER *size)
 
const char * debugstr_chunk (const struct chunk_entry *chunk)
 
const char * debugstr_dmguid (const GUID *id)
 
void dump_DMUS_OBJECTDESC (DMUS_OBJECTDESC *desc)
 

Macro Definition Documentation

◆ DMUS_OBJ_GUID_DLID

#define DMUS_OBJ_GUID_DLID   0x4000 /* 'dlid' chunk instead of 'guid' */

Definition at line 98 of file dmobject.h.

◆ DMUS_OBJ_NAME_INAM

#define DMUS_OBJ_NAME_INAM   0x1000 /* 'INAM' chunk in UNFO list */

Definition at line 96 of file dmobject.h.

◆ DMUS_OBJ_NAME_INFO

#define DMUS_OBJ_NAME_INFO   0x2000 /* 'INAM' chunk in INFO list */

Definition at line 97 of file dmobject.h.

◆ MAKE_IDTYPE

#define MAKE_IDTYPE (   id,
  type 
)    (((UINT64)type << 32) | (UINT64)id)

Definition at line 33 of file dmobject.h.

Function Documentation

◆ debugstr_chunk()

const char * debugstr_chunk ( const struct chunk_entry *  chunk)

Definition at line 279 of file dmobject.c.

280{
281 const char *type = "";
282
283 if (!chunk)
284 return "(null)";
285 if (chunk->id == FOURCC_RIFF || chunk->id == FOURCC_LIST)
286 type = wine_dbg_sprintf("type %s, ", debugstr_fourcc(chunk->type));
287 return wine_dbg_sprintf("%s chunk, %ssize %lu", debugstr_fourcc(chunk->id), type, chunk->size);
288}
const char * wine_dbg_sprintf(const char *format,...)
Definition: compat.c:296
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define FOURCC_RIFF
Definition: mmsystem.h:564
#define FOURCC_LIST
Definition: mmsystem.h:565
static __inline const char * debugstr_fourcc(unsigned int cc)
Definition: debug.h:397
uint16_t size
Definition: btrfs_drv.h:563

Referenced by band_object_ParseDescriptor(), chord_IDirectMusicObject_ParseDescriptor(), collection_object_ParseDescriptor(), cont_IDirectMusicObject_ParseDescriptor(), dmobj_parsedescriptor(), dmobj_parsereference(), graph_IDirectMusicObject_ParseDescriptor(), parse_dmsg_chunk(), parse_lyrics_track_events(), parse_lyricstrack_list(), parse_pchannel_to_buffers_list(), parse_port_config_list(), parse_port_configs_list(), parse_segments_list(), parse_timetrack_list(), parse_track_form(), parse_track_list(), parse_wave_item(), parse_wave_part(), path_config_IDirectMusicObject_ParseDescriptor(), path_config_IPersistStream_Load(), script_IDirectMusicObject_ParseDescriptor(), segment_object_ParseDescriptor(), stream_chunk_get_array(), stream_get_chunk(), style_IDirectMusicObject_ParseDescriptor(), and wave_IPersistStream_Load().

◆ debugstr_dmguid()

const char * debugstr_dmguid ( const GUID *  id)

Definition at line 36 of file dmobject.c.

36 {
37 unsigned int i;
38#define X(guid) { &guid, #guid }
39 static const struct {
40 const GUID *guid;
41 const char *name;
42 } guids[] = {
43 /* CLSIDs */
44 X(CLSID_AudioVBScript),
45 X(CLSID_DirectMusic),
46 X(CLSID_DirectMusicAudioPathConfig),
47 X(CLSID_DirectMusicAuditionTrack),
48 X(CLSID_DirectMusicBand),
49 X(CLSID_DirectMusicBandTrack),
50 X(CLSID_DirectMusicChordMapTrack),
51 X(CLSID_DirectMusicChordMap),
52 X(CLSID_DirectMusicChordTrack),
53 X(CLSID_DirectMusicCollection),
54 X(CLSID_DirectMusicCommandTrack),
55 X(CLSID_DirectMusicComposer),
56 X(CLSID_DirectMusicContainer),
57 X(CLSID_DirectMusicGraph),
58 X(CLSID_DirectMusicLoader),
59 X(CLSID_DirectMusicLyricsTrack),
60 X(CLSID_DirectMusicMarkerTrack),
61 X(CLSID_DirectMusicMelodyFormulationTrack),
62 X(CLSID_DirectMusicMotifTrack),
63 X(CLSID_DirectMusicMuteTrack),
64 X(CLSID_DirectMusicParamControlTrack),
65 X(CLSID_DirectMusicPatternTrack),
66 X(CLSID_DirectMusicPerformance),
67 X(CLSID_DirectMusicScript),
68 X(CLSID_DirectMusicScriptAutoImpSegment),
69 X(CLSID_DirectMusicScriptAutoImpPerformance),
70 X(CLSID_DirectMusicScriptAutoImpSegmentState),
71 X(CLSID_DirectMusicScriptAutoImpAudioPathConfig),
72 X(CLSID_DirectMusicScriptAutoImpAudioPath),
73 X(CLSID_DirectMusicScriptAutoImpSong),
74 X(CLSID_DirectMusicScriptSourceCodeLoader),
75 X(CLSID_DirectMusicScriptTrack),
76 X(CLSID_DirectMusicSection),
77 X(CLSID_DirectMusicSegment),
78 X(CLSID_DirectMusicSegmentState),
79 X(CLSID_DirectMusicSegmentTriggerTrack),
80 X(CLSID_DirectMusicSegTriggerTrack),
81 X(CLSID_DirectMusicSeqTrack),
82 X(CLSID_DirectMusicSignPostTrack),
83 X(CLSID_DirectMusicSong),
84 X(CLSID_DirectMusicStyle),
85 X(CLSID_DirectMusicStyleTrack),
86 X(CLSID_DirectMusicSynth),
87 X(CLSID_DirectMusicSynthSink),
88 X(CLSID_DirectMusicSysExTrack),
89 X(CLSID_DirectMusicTemplate),
90 X(CLSID_DirectMusicTempoTrack),
91 X(CLSID_DirectMusicTimeSigTrack),
92 X(CLSID_DirectMusicWaveTrack),
93 X(CLSID_DirectSoundWave),
94 /* IIDs */
95 X(IID_IDirectMusic),
96 X(IID_IDirectMusic2),
97 X(IID_IDirectMusic8),
98 X(IID_IDirectMusicAudioPath),
99 X(IID_IDirectMusicBand),
100 X(IID_IDirectMusicBuffer),
101 X(IID_IDirectMusicChordMap),
102 X(IID_IDirectMusicCollection),
103 X(IID_IDirectMusicComposer),
104 X(IID_IDirectMusicContainer),
105 X(IID_IDirectMusicDownload),
106 X(IID_IDirectMusicDownloadedInstrument),
107 X(IID_IDirectMusicGetLoader),
108 X(IID_IDirectMusicGraph),
109 X(IID_IDirectMusicInstrument),
110 X(IID_IDirectMusicLoader),
111 X(IID_IDirectMusicLoader8),
112 X(IID_IDirectMusicObject),
113 X(IID_IDirectMusicPatternTrack),
114 X(IID_IDirectMusicPerformance),
115 X(IID_IDirectMusicPerformance2),
116 X(IID_IDirectMusicPerformance8),
117 X(IID_IDirectMusicPort),
118 X(IID_IDirectMusicPortDownload),
119 X(IID_IDirectMusicScript),
120 X(IID_IDirectMusicSegment),
121 X(IID_IDirectMusicSegment2),
122 X(IID_IDirectMusicSegment8),
123 X(IID_IDirectMusicSegmentState),
124 X(IID_IDirectMusicSegmentState8),
125 X(IID_IDirectMusicStyle),
126 X(IID_IDirectMusicStyle8),
127 X(IID_IDirectMusicSynth),
128 X(IID_IDirectMusicSynth8),
129 X(IID_IDirectMusicSynthSink),
130 X(IID_IDirectMusicThru),
131 X(IID_IDirectMusicTool),
132 X(IID_IDirectMusicTool8),
133 X(IID_IDirectMusicTrack),
134 X(IID_IDirectMusicTrack8),
137 X(IID_IStream),
139 /* GUIDs */
140 X(GUID_DirectMusicAllTypes),
141 X(GUID_NOTIFICATION_CHORD),
142 X(GUID_NOTIFICATION_COMMAND),
143 X(GUID_NOTIFICATION_MEASUREANDBEAT),
144 X(GUID_NOTIFICATION_PERFORMANCE),
145 X(GUID_NOTIFICATION_RECOMPOSE),
146 X(GUID_NOTIFICATION_SEGMENT),
147 X(GUID_BandParam),
148 X(GUID_ChordParam),
149 X(GUID_CommandParam),
150 X(GUID_CommandParam2),
151 X(GUID_CommandParamNext),
152 X(GUID_IDirectMusicBand),
153 X(GUID_IDirectMusicChordMap),
154 X(GUID_IDirectMusicStyle),
155 X(GUID_MuteParam),
156 X(GUID_Play_Marker),
157 X(GUID_RhythmParam),
158 X(GUID_TempoParam),
159 X(GUID_TimeSignature),
160 X(GUID_Valid_Start_Time),
161 X(GUID_Clear_All_Bands),
162 X(GUID_ConnectToDLSCollection),
163 X(GUID_Disable_Auto_Download),
164 X(GUID_DisableTempo),
165 X(GUID_DisableTimeSig),
166 X(GUID_Download),
167 X(GUID_DownloadToAudioPath),
168 X(GUID_Enable_Auto_Download),
169 X(GUID_EnableTempo),
170 X(GUID_EnableTimeSig),
172 X(GUID_SeedVariations),
173 X(GUID_StandardMIDIFile),
174 X(GUID_Unload),
175 X(GUID_UnloadFromAudioPath),
176 X(GUID_Variations),
177 X(GUID_PerfMasterTempo),
178 X(GUID_PerfMasterVolume),
179 X(GUID_PerfMasterGrooveLevel),
180 X(GUID_PerfAutoDownload),
181 X(GUID_DefaultGMCollection),
182 X(GUID_Synth_Default),
183 X(GUID_Buffer_Reverb),
184 X(GUID_Buffer_EnvReverb),
185 X(GUID_Buffer_Stereo),
186 X(GUID_Buffer_3D_Dry),
187 X(GUID_Buffer_Mono),
188 X(GUID_DMUS_PROP_GM_Hardware),
189 X(GUID_DMUS_PROP_GS_Capable),
190 X(GUID_DMUS_PROP_GS_Hardware),
191 X(GUID_DMUS_PROP_DLS1),
192 X(GUID_DMUS_PROP_DLS2),
193 X(GUID_DMUS_PROP_Effects),
194 X(GUID_DMUS_PROP_INSTRUMENT2),
195 X(GUID_DMUS_PROP_LegacyCaps),
196 X(GUID_DMUS_PROP_MemorySize),
197 X(GUID_DMUS_PROP_SampleMemorySize),
198 X(GUID_DMUS_PROP_SamplePlaybackRate),
199 X(GUID_DMUS_PROP_SetSynthSink),
200 X(GUID_DMUS_PROP_SinkUsesDSound),
201 X(GUID_DMUS_PROP_SynthSink_DSOUND),
202 X(GUID_DMUS_PROP_SynthSink_WAVE),
203 X(GUID_DMUS_PROP_Volume),
204 X(GUID_DMUS_PROP_WavesReverb),
205 X(GUID_DMUS_PROP_WriteLatency),
206 X(GUID_DMUS_PROP_WritePeriod),
207 X(GUID_DMUS_PROP_XG_Capable),
208 X(GUID_DMUS_PROP_XG_Hardware)
209 };
210#undef X
211
212 if (!id)
213 return "(null)";
214
215 for (i = 0; i < ARRAY_SIZE(guids); i++)
216 if (IsEqualGUID(id, guids[i].guid))
217 return guids[i].name;
218
219 return debugstr_guid(id);
220}
#define ARRAY_SIZE(A)
Definition: main.h:20
const GUID IID_IUnknown
const GUID IID_IClassFactory
const struct sortguid * guids
Definition: locale.c:422
GUID guid
Definition: version.c:147
#define X(guid)
#define GUID_IgnoreBankSelectForGM
Definition: dmusici.h:181
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define debugstr_guid
Definition: kernel32.h:35
const GUID IID_IPersistStream
Definition: proxy.cpp:13
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
Definition: name.c:39

Referenced by audition_track_AddNotificationType(), audition_track_GetParam(), audition_track_GetParamEx(), audition_track_IsParamSupported(), audition_track_QueryInterface(), audition_track_RemoveNotificationType(), audition_track_SetParam(), audition_track_SetParamEx(), band_QueryInterface(), band_track_AddNotificationType(), band_track_GetParam(), band_track_GetParamEx(), band_track_IsParamSupported(), band_track_QueryInterface(), band_track_RemoveNotificationType(), band_track_SetParam(), band_track_SetParamEx(), chord_track_AddNotificationType(), chord_track_GetParam(), chord_track_GetParamEx(), chord_track_IsParamSupported(), chord_track_QueryInterface(), chord_track_RemoveNotificationType(), chord_track_SetParam(), chord_track_SetParamEx(), chordmap_track_AddNotificationType(), chordmap_track_GetParam(), chordmap_track_GetParamEx(), chordmap_track_IsParamSupported(), chordmap_track_QueryInterface(), chordmap_track_RemoveNotificationType(), chordmap_track_SetParam(), chordmap_track_SetParamEx(), ClassFactory_CreateInstance(), collection_QueryInterface(), command_track_AddNotificationType(), command_track_GetParam(), command_track_GetParamEx(), command_track_IsParamSupported(), command_track_QueryInterface(), command_track_RemoveNotificationType(), command_track_SetParam(), command_track_SetParamEx(), create_direct_music_section(), create_direct_music_template(), create_dmloader(), create_unimpl_instance(), debugstr_DMUS_IO_CONTAINED_OBJECT_HEADER(), DllGetClassObject(), dmobj_parsereference(), download_QueryInterface(), downloaded_instrument_QueryInterface(), dump_DMUS_OBJECTDESC(), file_stream_QueryInterface(), IDirectMusic8Impl_CreatePort(), IDirectMusic8Impl_QueryInterface(), IDirectMusic8Impl_SetMasterClock(), IDirectMusicAudioPathImpl_GetObjectInPath(), IDirectMusicAudioPathImpl_QueryInterface(), IDirectMusicBufferImpl_QueryInterface(), IDirectMusicChordMapImpl_QueryInterface(), IDirectMusicComposerImpl_QueryInterface(), IDirectMusicContainerImpl_EnumObject(), IDirectMusicContainerImpl_QueryInterface(), IDirectMusicLoaderResourceStream_IStream_QueryInterface(), IDirectMusicScriptImpl_GetVariableObject(), IDirectMusicScriptImpl_QueryInterface(), IDirectMusicTrackImpl_AddNotificationType(), IDirectMusicTrackImpl_GetParam(), IDirectMusicTrackImpl_IsParamSupported(), IDirectMusicTrackImpl_QueryInterface(), IDirectMusicTrackImpl_RemoveNotificationType(), IDirectMusicTrackImpl_SetParam(), instrument_create_from_chunk(), instrument_create_from_soundfont(), instrument_QueryInterface(), IReferenceClockImpl_QueryInterface(), loader_ClearCache(), loader_EnableCache(), loader_EnumObject(), loader_GetObject(), loader_LoadObjectFromFile(), loader_QueryInterface(), loader_ScanDirectory(), loader_SetSearchDirectory(), loader_stream_QueryInterface(), lyrics_track_AddNotificationType(), lyrics_track_GetParam(), lyrics_track_GetParamEx(), lyrics_track_IsParamSupported(), lyrics_track_QueryInterface(), lyrics_track_RemoveNotificationType(), lyrics_track_SetParam(), lyrics_track_SetParamEx(), master_IReferenceClock_QueryInterface(), midi_IDirectMusicPort_QueryInterface(), motif_track_AddNotificationType(), motif_track_GetParam(), motif_track_GetParamEx(), motif_track_IsParamSupported(), motif_track_QueryInterface(), motif_track_RemoveNotificationType(), motif_track_SetParam(), motif_track_SetParamEx(), mute_track_AddNotificationType(), mute_track_GetParam(), mute_track_GetParamEx(), mute_track_IsParamSupported(), mute_track_QueryInterface(), mute_track_RemoveNotificationType(), mute_track_SetParam(), mute_track_SetParamEx(), paramcontrol_track_AddNotificationType(), paramcontrol_track_GetParam(), paramcontrol_track_GetParamEx(), paramcontrol_track_IsParamSupported(), paramcontrol_track_QueryInterface(), paramcontrol_track_RemoveNotificationType(), paramcontrol_track_SetParam(), paramcontrol_track_SetParamEx(), parse_pchannel_to_buffers_list(), parse_port_config_list(), path_config_get_audio_path_params(), path_config_IUnknown_QueryInterface(), performance_AddNotificationType(), performance_CreateAudioPath(), performance_GetGlobalParam(), performance_GetParam(), performance_GetParamEx(), performance_QueryInterface(), performance_RemoveNotificationType(), performance_SetGlobalParam(), performance_SetParam(), script_track_AddNotificationType(), script_track_GetParam(), script_track_GetParamEx(), script_track_IsParamSupported(), script_track_QueryInterface(), script_track_RemoveNotificationType(), script_track_SetParam(), script_track_SetParamEx(), segment_AddNotificationType(), segment_GetParam(), segment_GetTrack(), segment_QueryInterface(), segment_RemoveNotificationType(), segment_SetParam(), segment_SetTrackConfig(), segment_state_GetObjectInPath(), segment_state_QueryInterface(), segment_state_SetTrackConfig(), segment_track_AddNotificationType(), segment_track_GetParam(), segment_track_GetParamEx(), segment_track_IsParamSupported(), segment_track_QueryInterface(), segment_track_RemoveNotificationType(), segment_track_SetParam(), segment_track_SetParamEx(), sequence_track_AddNotificationType(), sequence_track_GetParam(), sequence_track_GetParamEx(), sequence_track_IsParamSupported(), sequence_track_QueryInterface(), sequence_track_RemoveNotificationType(), sequence_track_SetParam(), sequence_track_SetParamEx(), signpost_track_AddNotificationType(), signpost_track_GetParam(), signpost_track_GetParamEx(), signpost_track_IsParamSupported(), signpost_track_QueryInterface(), signpost_track_RemoveNotificationType(), signpost_track_SetParam(), signpost_track_SetParamEx(), style_QueryInterface(), style_track_AddNotificationType(), style_track_GetParam(), style_track_GetParamEx(), style_track_IsParamSupported(), style_track_QueryInterface(), style_track_RemoveNotificationType(), style_track_SetParam(), style_track_SetParamEx(), synth_port_download_QueryInterface(), synth_port_QueryInterface(), synth_port_thru_QueryInterface(), sysex_track_AddNotificationType(), sysex_track_GetParam(), sysex_track_GetParamEx(), sysex_track_IsParamSupported(), sysex_track_QueryInterface(), sysex_track_RemoveNotificationType(), sysex_track_SetParam(), sysex_track_SetParamEx(), tempo_track_AddNotificationType(), tempo_track_GetParam(), tempo_track_GetParamEx(), tempo_track_IsParamSupported(), tempo_track_QueryInterface(), tempo_track_RemoveNotificationType(), tempo_track_SetParam(), tempo_track_SetParamEx(), wave_QueryInterface(), wave_track_AddNotificationType(), wave_track_GetParam(), wave_track_GetParamEx(), wave_track_IsParamSupported(), wave_track_QueryInterface(), wave_track_RemoveNotificationType(), wave_track_SetParam(), wave_track_SetParamEx(), and WaveCF_CreateInstance().

◆ dmobj_IDirectMusicObject_AddRef()

ULONG WINAPI dmobj_IDirectMusicObject_AddRef ( IDirectMusicObject *  iface)

Definition at line 491 of file dmobject.c.

492{
494 return IUnknown_AddRef(This->outer_unk);
495}
static struct dmobject * impl_from_IDirectMusicObject(IDirectMusicObject *iface)
Definition: dmobject.c:479

◆ dmobj_IDirectMusicObject_GetDescriptor()

HRESULT WINAPI dmobj_IDirectMusicObject_GetDescriptor ( IDirectMusicObject *  iface,
DMUS_OBJECTDESC *  desc 
)

Definition at line 503 of file dmobject.c.

505{
507
508 TRACE("(%p/%p)->(%p)\n", iface, This, desc);
509
510 if (!desc)
511 return E_POINTER;
512
513 memcpy(desc, &This->desc, This->desc.dwSize);
514
515 return S_OK;
516}
#define S_OK
Definition: intsafe.h:52
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
#define TRACE(s)
Definition: solgame.cpp:4
#define E_POINTER
Definition: winerror.h:3480

◆ dmobj_IDirectMusicObject_QueryInterface()

HRESULT WINAPI dmobj_IDirectMusicObject_QueryInterface ( IDirectMusicObject *  iface,
REFIID  riid,
void **  ret_iface 
)

Definition at line 484 of file dmobject.c.

486{
488 return IUnknown_QueryInterface(This->outer_unk, riid, ret_iface);
489}
REFIID riid
Definition: atlbase.h:39

◆ dmobj_IDirectMusicObject_Release()

ULONG WINAPI dmobj_IDirectMusicObject_Release ( IDirectMusicObject *  iface)

Definition at line 497 of file dmobject.c.

498{
500 return IUnknown_Release(This->outer_unk);
501}

◆ dmobj_IDirectMusicObject_SetDescriptor()

HRESULT WINAPI dmobj_IDirectMusicObject_SetDescriptor ( IDirectMusicObject *  iface,
DMUS_OBJECTDESC *  desc 
)

Definition at line 518 of file dmobject.c.

520{
522 HRESULT ret = S_OK;
523
524 TRACE("(%p, %p)\n", iface, desc);
525
526 if (!desc)
527 return E_POINTER;
528
529 /* Immutable property */
530 if (desc->dwValidData & DMUS_OBJ_CLASS)
531 {
532 desc->dwValidData &= ~DMUS_OBJ_CLASS;
533 ret = S_FALSE;
534 }
535 /* Set only valid fields */
536 if (desc->dwValidData & DMUS_OBJ_OBJECT)
537 This->desc.guidObject = desc->guidObject;
538 if (desc->dwValidData & DMUS_OBJ_NAME)
539 lstrcpynW(This->desc.wszName, desc->wszName, DMUS_MAX_NAME);
540 if (desc->dwValidData & DMUS_OBJ_CATEGORY)
541 lstrcpynW(This->desc.wszCategory, desc->wszCategory, DMUS_MAX_CATEGORY);
542 if (desc->dwValidData & DMUS_OBJ_FILENAME)
543 lstrcpynW(This->desc.wszFileName, desc->wszFileName, DMUS_MAX_FILENAME);
544 if (desc->dwValidData & DMUS_OBJ_VERSION)
545 This->desc.vVersion = desc->vVersion;
546 if (desc->dwValidData & DMUS_OBJ_DATE)
547 This->desc.ftDate = desc->ftDate;
548 if (desc->dwValidData & DMUS_OBJ_MEMORY) {
549 This->desc.llMemLength = desc->llMemLength;
550 memcpy(This->desc.pbMemData, desc->pbMemData, desc->llMemLength);
551 }
552 if (desc->dwValidData & DMUS_OBJ_STREAM)
553 IStream_Clone(desc->pStream, &This->desc.pStream);
554
555 This->desc.dwValidData |= desc->dwValidData;
556
557 return ret;
558}
#define lstrcpynW
Definition: compat.h:738
#define DMUS_OBJ_DATE
Definition: dmusici.h:273
#define DMUS_MAX_CATEGORY
Definition: dmusici.h:246
#define DMUS_OBJ_MEMORY
Definition: dmusici.h:275
#define DMUS_OBJ_NAME
Definition: dmusici.h:267
#define DMUS_OBJ_STREAM
Definition: dmusici.h:276
#define DMUS_OBJ_FILENAME
Definition: dmusici.h:269
#define DMUS_OBJ_CLASS
Definition: dmusici.h:266
#define DMUS_MAX_NAME
Definition: dmusici.h:245
#define DMUS_MAX_FILENAME
Definition: dmusici.h:247
#define DMUS_OBJ_VERSION
Definition: dmusici.h:272
#define DMUS_OBJ_CATEGORY
Definition: dmusici.h:268
#define DMUS_OBJ_OBJECT
Definition: dmusici.h:265
return ret
Definition: mutex.c:147
#define S_FALSE
Definition: winerror.h:3451

◆ dmobj_IPersistStream_AddRef()

ULONG WINAPI dmobj_IPersistStream_AddRef ( IPersistStream *  iface)

Definition at line 696 of file dmobject.c.

697{
698 struct dmobject *This = impl_from_IPersistStream(iface);
699 return IUnknown_AddRef(This->outer_unk);
700}
static struct dmobject * impl_from_IPersistStream(IPersistStream *iface)
Definition: dmobject.c:684

◆ dmobj_IPersistStream_GetClassID()

HRESULT WINAPI dmobj_IPersistStream_GetClassID ( IPersistStream *  iface,
CLSID *  class 
)

Definition at line 708 of file dmobject.c.

709{
710 struct dmobject *This = impl_from_IPersistStream(iface);
711
712 TRACE("(%p, %p)\n", This, class);
713
714 if (!class)
715 return E_POINTER;
716
717 *class = This->desc.guidClass;
718
719 return S_OK;
720}

◆ dmobj_IPersistStream_QueryInterface()

HRESULT WINAPI dmobj_IPersistStream_QueryInterface ( IPersistStream *  iface,
REFIID  riid,
void **  ret_iface 
)

Definition at line 689 of file dmobject.c.

691{
692 struct dmobject *This = impl_from_IPersistStream(iface);
693 return IUnknown_QueryInterface(This->outer_unk, riid, ret_iface);
694}

◆ dmobj_IPersistStream_Release()

ULONG WINAPI dmobj_IPersistStream_Release ( IPersistStream *  iface)

Definition at line 702 of file dmobject.c.

703{
704 struct dmobject *This = impl_from_IPersistStream(iface);
705 return IUnknown_Release(This->outer_unk);
706}

◆ dmobj_parsedescriptor()

HRESULT dmobj_parsedescriptor ( IStream *  stream,
const struct chunk_entry *  riff,
DMUS_OBJECTDESC *  desc,
DWORD  supported 
)

Definition at line 591 of file dmobject.c.

593{
594 struct chunk_entry chunk = {.parent = riff};
595 HRESULT hr;
596
597 TRACE("Looking for %#lx in %p: %s\n", supported, stream, debugstr_chunk(riff));
598
599 desc->dwValidData = 0;
600 desc->dwSize = sizeof(*desc);
601
602 while ((hr = stream_next_chunk(stream, &chunk)) == S_OK) {
603 switch (chunk.id) {
606 desc->wszCategory, sizeof(desc->wszCategory)) == S_OK)
607 desc->dwValidData |= DMUS_OBJ_CATEGORY;
608 break;
610 if ((supported & DMUS_OBJ_DATE) && stream_chunk_get_data(stream, &chunk,
611 &desc->ftDate, sizeof(desc->ftDate)) == S_OK)
612 desc->dwValidData |= DMUS_OBJ_DATE;
613 break;
616 desc->wszFileName, sizeof(desc->wszFileName)) == S_OK)
617 desc->dwValidData |= DMUS_OBJ_FILENAME;
618 break;
619 case FOURCC_DLID:
620 if (!(supported & DMUS_OBJ_GUID_DLID)) break;
621 if ((supported & DMUS_OBJ_OBJECT) && stream_chunk_get_data(stream, &chunk,
622 &desc->guidObject, sizeof(desc->guidObject)) == S_OK)
623 desc->dwValidData |= DMUS_OBJ_OBJECT;
624 break;
626 if ((supported & DMUS_OBJ_GUID_DLID)) break;
627 if ((supported & DMUS_OBJ_OBJECT) && stream_chunk_get_data(stream, &chunk,
628 &desc->guidObject, sizeof(desc->guidObject)) == S_OK)
629 desc->dwValidData |= DMUS_OBJ_OBJECT;
630 break;
632 if ((supported & DMUS_OBJ_NAME) && stream_chunk_get_wstr(stream, &chunk,
633 desc->wszName, sizeof(desc->wszName)) == S_OK)
634 desc->dwValidData |= DMUS_OBJ_NAME;
635 break;
637 if ((supported & DMUS_OBJ_VERSION) && stream_chunk_get_data(stream, &chunk,
638 &desc->vVersion, sizeof(desc->vVersion)) == S_OK)
639 desc->dwValidData |= DMUS_OBJ_VERSION;
640 break;
641 case FOURCC_LIST:
642 if (chunk.type == DMUS_FOURCC_UNFO_LIST && (supported & DMUS_OBJ_NAME))
644 else if (chunk.type == DMUS_FOURCC_INFO_LIST && (supported & DMUS_OBJ_NAME_INFO))
646 break;
647 }
648 }
649 TRACE("Found %#lx\n", desc->dwValidData);
650
651 return hr;
652}
HRESULT hr
Definition: delayimp.cpp:582
#define FOURCC_DLID
Definition: dls1.h:34
HRESULT stream_chunk_get_data(IStream *stream, const struct chunk_entry *chunk, void *data, ULONG size)
Definition: dmobject.c:417
HRESULT stream_next_chunk(IStream *stream, struct chunk_entry *chunk)
Definition: dmobject.c:360
static void info_get_name(IStream *stream, const struct chunk_entry *info, DMUS_OBJECTDESC *desc)
Definition: dmobject.c:561
static void unfo_get_name(IStream *stream, const struct chunk_entry *unfo, DMUS_OBJECTDESC *desc, BOOL inam)
Definition: dmobject.c:580
HRESULT stream_chunk_get_wstr(IStream *stream, const struct chunk_entry *chunk, WCHAR *str, ULONG size)
Definition: dmobject.c:429
const char * debugstr_chunk(const struct chunk_entry *chunk)
Definition: dmobject.c:279
#define DMUS_OBJ_NAME_INAM
Definition: dmobject.h:96
#define DMUS_OBJ_NAME_INFO
Definition: dmobject.h:97
#define DMUS_OBJ_GUID_DLID
Definition: dmobject.h:98
#define DMUS_FOURCC_GUID_CHUNK
Definition: dmusicf.h:42
#define DMUS_FOURCC_VERSION_CHUNK
Definition: dmusicf.h:51
#define DMUS_FOURCC_FILE_CHUNK
Definition: dmusicf.h:106
#define DMUS_FOURCC_INFO_LIST
Definition: dmusicf.h:43
#define DMUS_FOURCC_NAME_CHUNK
Definition: dmusicf.h:105
#define DMUS_FOURCC_DATE_CHUNK
Definition: dmusicf.h:104
#define DMUS_FOURCC_UNFO_LIST
Definition: dmusicf.h:44
#define DMUS_FOURCC_CATEGORY_CHUNK
Definition: dmusicf.h:50
Definition: dmobject.h:26
Definition: parse.h:23

Referenced by band_object_ParseDescriptor(), chord_IDirectMusicObject_ParseDescriptor(), collection_object_ParseDescriptor(), cont_IDirectMusicObject_ParseDescriptor(), dmobj_parsereference(), graph_IDirectMusicObject_ParseDescriptor(), parse_dls_chunk(), parse_dmbd_chunk(), parse_dmbt_chunk(), parse_dmsg_chunk(), parse_ins_chunk(), parse_part_list(), parse_pref_list(), parse_pttn_list(), parse_sfbk_chunk(), path_config_IDirectMusicObject_ParseDescriptor(), path_config_IPersistStream_Load(), script_IDirectMusicObject_ParseDescriptor(), segment_object_ParseDescriptor(), style_IDirectMusicObject_ParseDescriptor(), and wave_object_ParseDescriptor().

◆ dmobj_parsereference()

HRESULT dmobj_parsereference ( IStream *  stream,
const struct chunk_entry *  list,
IDirectMusicObject **  dmobj 
)

Definition at line 654 of file dmobject.c.

656{
657 struct chunk_entry chunk = {.parent = list};
660 HRESULT hr;
661
663 return hr;
666
668 WARN("Failed to read data of %s\n", debugstr_chunk(&chunk));
669 return hr;
670 }
671 TRACE("REFERENCE guidClassID %s, dwValidData %#lx\n", debugstr_dmguid(&reference.guidClassID),
672 reference.dwValidData);
673
674 if (FAILED(hr = dmobj_parsedescriptor(stream, list, &desc, reference.dwValidData)))
675 return hr;
676 desc.guidClass = reference.guidClassID;
677 desc.dwValidData |= DMUS_OBJ_CLASS;
679
680 return stream_get_object(stream, &desc, &IID_IDirectMusicObject, (void **)dmobj);
681}
#define WARN(fmt,...)
Definition: precomp.h:61
Definition: list.h:39
#define DMUS_E_UNSUPPORTED_STREAM
Definition: dmerror.h:100
HRESULT dmobj_parsedescriptor(IStream *stream, const struct chunk_entry *riff, DMUS_OBJECTDESC *desc, DWORD supported)
Definition: dmobject.c:591
void dump_DMUS_OBJECTDESC(DMUS_OBJECTDESC *desc)
Definition: dmobject.c:222
const char * debugstr_dmguid(const GUID *id)
Definition: dmobject.c:36
HRESULT stream_get_object(IStream *stream, DMUS_OBJECTDESC *desc, REFIID iid, void **ret_iface)
Definition: dmobject.c:462
#define DMUS_FOURCC_REF_CHUNK
Definition: dmusicf.h:103
GLint reference
Definition: glext.h:11729
#define FAILED(hr)
Definition: intsafe.h:51

Referenced by parse_lbin_list(), parse_segment_item(), parse_style_ref(), and parse_wave_item().

◆ dmobject_init()

◆ dump_DMUS_OBJECTDESC()

void dump_DMUS_OBJECTDESC ( DMUS_OBJECTDESC *  desc)

Definition at line 222 of file dmobject.c.

223{
224 if (!desc || !TRACE_ON(dmfile))
225 return;
226
227 TRACE_(dmfile)("DMUS_OBJECTDESC (%p):", desc);
228 TRACE_(dmfile)(" - dwSize = %lu\n", desc->dwSize);
229
230#define X(flag) if (desc->dwValidData & flag) TRACE_(dmfile)(#flag " ")
231 TRACE_(dmfile)(" - dwValidData = %#08lx ( ", desc->dwValidData);
244 TRACE_(dmfile)(")\n");
245#undef X
246
247 if (desc->dwValidData & DMUS_OBJ_CLASS)
248 TRACE_(dmfile)(" - guidClass = %s\n", debugstr_dmguid(&desc->guidClass));
249 if (desc->dwValidData & DMUS_OBJ_OBJECT)
250 TRACE_(dmfile)(" - guidObject = %s\n", debugstr_guid(&desc->guidObject));
251
252 if (desc->dwValidData & DMUS_OBJ_DATE) {
254 FileTimeToSystemTime(&desc->ftDate, &time);
255 TRACE_(dmfile)(" - ftDate = \'%04u-%02u-%02u %02u:%02u:%02u\'\n",
256 time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond);
257 }
258 if (desc->dwValidData & DMUS_OBJ_VERSION)
259 TRACE_(dmfile)(" - vVersion = \'%u,%u,%u,%u\'\n",
260 HIWORD(desc->vVersion.dwVersionMS), LOWORD(desc->vVersion.dwVersionMS),
261 HIWORD(desc->vVersion.dwVersionLS), LOWORD(desc->vVersion.dwVersionLS));
262 if (desc->dwValidData & DMUS_OBJ_NAME)
263 TRACE_(dmfile)(" - wszName = %s\n", debugstr_w(desc->wszName));
264 if (desc->dwValidData & DMUS_OBJ_CATEGORY)
265 TRACE_(dmfile)(" - wszCategory = %s\n", debugstr_w(desc->wszCategory));
266 if (desc->dwValidData & DMUS_OBJ_FILENAME)
267 TRACE_(dmfile)(" - wszFileName = %s\n", debugstr_w(desc->wszFileName));
268 if (desc->dwValidData & DMUS_OBJ_MEMORY)
269 TRACE_(dmfile)(" - llMemLength = 0x%s - pbMemData = %p\n",
270 wine_dbgstr_longlong(desc->llMemLength), desc->pbMemData);
271 if (desc->dwValidData & DMUS_OBJ_STREAM)
272 TRACE_(dmfile)(" - pStream = %p\n", desc->pStream);
273}
#define TRACE_(x)
Definition: compat.h:76
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49
#define TRACE_ON(x)
Definition: compat.h:75
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
Definition: time.c:183
#define DMUS_OBJ_FULLPATH
Definition: dmusici.h:270
#define DMUS_OBJ_URL
Definition: dmusici.h:271
#define DMUS_OBJ_LOADED
Definition: dmusici.h:274
#define debugstr_w
Definition: kernel32.h:32
__u16 time
Definition: mkdosfs.c:8
#define LOWORD(l)
Definition: pedump.c:82
#define HIWORD(l)
Definition: typedefs.h:247

Referenced by band_object_ParseDescriptor(), band_persist_stream_Load(), band_track_persist_stream_Load(), chord_IDirectMusicObject_ParseDescriptor(), collection_object_ParseDescriptor(), collection_stream_Load(), cont_IDirectMusicObject_ParseDescriptor(), dmobj_parsereference(), DMUSIC_CopyDescriptor(), graph_IDirectMusicObject_ParseDescriptor(), IPersistStreamImpl_Load(), loader_GetObject(), loader_ReleaseObject(), loader_SetObject(), path_config_IDirectMusicObject_ParseDescriptor(), script_IDirectMusicObject_ParseDescriptor(), segment_object_ParseDescriptor(), style_IDirectMusicObject_ParseDescriptor(), and wave_object_ParseDescriptor().

◆ stream_chunk_get_array()

HRESULT stream_chunk_get_array ( IStream *  stream,
const struct chunk_entry *  chunk,
void **  array,
unsigned int *  count,
DWORD  elem_size 
)

Definition at line 378 of file dmobject.c.

380{
381 DWORD size;
382 HRESULT hr;
383
384 *array = NULL;
385 *count = 0;
386
387 if (chunk->size < sizeof(DWORD)) {
388 WARN_(dmfile)("%s: Too short to read element size\n", debugstr_chunk(chunk));
389 return E_FAIL;
390 }
391 if (FAILED(hr = stream_read(stream, &size, sizeof(DWORD))))
392 return hr;
393 if (size != elem_size) {
394 WARN_(dmfile)("%s: Array element size mismatch: got %lu, expected %lu\n",
395 debugstr_chunk(chunk), size, elem_size);
397 }
398
399 *count = (chunk->size - sizeof(DWORD)) / elem_size;
400 size = *count * elem_size;
401 if (!(*array = malloc(size)))
402 return E_OUTOFMEMORY;
403 if (FAILED(hr = stream_read(stream, *array, size))) {
404 free(*array);
405 *array = NULL;
406 return hr;
407 }
408
409 if (chunk->size > size + sizeof(DWORD)) {
410 WARN_(dmfile)("%s: Extraneous data at end of array\n", debugstr_chunk(chunk));
412 return S_FALSE;
413 }
414 return S_OK;
415}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_FAIL
Definition: ddrawi.h:102
#define free
Definition: debug_ros.c:5
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
HRESULT stream_skip_chunk(IStream *stream, const struct chunk_entry *chunk)
Definition: dmobject.c:351
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizeiptr size
Definition: glext.h:5919
static int stream_read
Definition: htmldoc.c:205
#define DWORD
Definition: nt_native.h:44
#define WARN_(ch,...)
Definition: debug.h:157
Definition: undname.c:54

Referenced by parse_curl_list(), parse_part_list(), parse_seqt_chunk(), parse_timetrack_list(), and tempo_IPersistStream_Load().

◆ stream_chunk_get_data()

HRESULT stream_chunk_get_data ( IStream *  stream,
const struct chunk_entry *  chunk,
void *  data,
ULONG  size 
)

◆ stream_chunk_get_wstr()

HRESULT stream_chunk_get_wstr ( IStream *  stream,
const struct chunk_entry *  chunk,
WCHAR *  str,
ULONG  size 
)

Definition at line 429 of file dmobject.c.

431{
432 ULONG len;
433 HRESULT hr;
434
435 hr = IStream_Read(stream, str, min(chunk->size, size), &len);
436 if (FAILED(hr))
437 return hr;
438
439 /* Don't assume the string is properly zero terminated */
440 str[min(len, size - 1)] = 0;
441
442 if (len < chunk->size)
443 return S_FALSE;
444 return S_OK;
445}
GLenum GLsizei len
Definition: glext.h:6722
#define min(a, b)
Definition: monoChain.cc:55
const WCHAR * str
uint32_t ULONG
Definition: typedefs.h:59

Referenced by dmobj_parsedescriptor(), parse_segment_item(), and unfo_get_name().

◆ stream_get_chunk()

HRESULT stream_get_chunk ( IStream *  stream,
struct chunk_entry *  chunk 
)

Definition at line 307 of file dmobject.c.

308{
309 static const LARGE_INTEGER zero;
310 ULONGLONG ck_end = 0, p_end = 0;
311 HRESULT hr;
312
313 hr = IStream_Seek(stream, zero, STREAM_SEEK_CUR, &chunk->offset);
314 if (FAILED(hr))
315 return hr;
316 assert(!(chunk->offset.QuadPart & 1));
317 if (chunk->parent) {
318 p_end = chunk->parent->offset.QuadPart + CHUNK_HDR_SIZE + ((chunk->parent->size + 1) & ~1);
319 if (chunk->offset.QuadPart == p_end)
320 return S_FALSE;
321 ck_end = chunk->offset.QuadPart + CHUNK_HDR_SIZE;
322 if (ck_end > p_end) {
323 WARN_(dmfile)("No space for sub-chunk header in parent chunk: ends at offset %s > %s\n",
325 return E_FAIL;
326 }
327 }
328
330 if (hr != S_OK)
331 return hr;
332 if (chunk->parent) {
333 ck_end += (chunk->size + 1) & ~1;
334 if (ck_end > p_end) {
335 WARN_(dmfile)("No space for sub-chunk data in parent chunk: ends at offset %s > %s\n",
337 return E_FAIL;
338 }
339 }
340
341 if (chunk->id != FOURCC_LIST && chunk->id != FOURCC_RIFF)
342 chunk->type = 0;
343 else if ((hr = stream_read(stream, &chunk->type, sizeof(FOURCC))) != S_OK)
344 return hr != S_FALSE ? hr : E_FAIL;
345
346 TRACE_(dmfile)("Returning %s\n", debugstr_chunk(chunk));
347
348 return S_OK;
349}
#define assert(_expr)
Definition: assert.h:32
DWORD FOURCC
Definition: dmdls.h:25
#define CHUNK_HDR_SIZE
Definition: dmobject.c:277
int zero
Definition: sehframes.cpp:29
uint64_t ULONGLONG
Definition: typedefs.h:67

Referenced by band_object_ParseDescriptor(), band_persist_stream_Load(), band_track_persist_stream_Load(), chord_IDirectMusicObject_ParseDescriptor(), collection_object_ParseDescriptor(), cont_IDirectMusicObject_ParseDescriptor(), graph_IDirectMusicObject_ParseDescriptor(), IPersistStreamImpl_Load(), lyrics_IPersistStream_Load(), parse_segment_item(), parse_style_ref(), parse_track_form(), path_config_IDirectMusicObject_ParseDescriptor(), path_config_IPersistStream_Load(), script_IDirectMusicObject_ParseDescriptor(), segment_object_ParseDescriptor(), segment_persist_stream_Load(), stream_next_chunk(), style_IDirectMusicObject_ParseDescriptor(), tempo_IPersistStream_Load(), time_IPersistStream_Load(), track_IPersistStream_Load(), trigger_IPersistStream_Load(), and wave_IPersistStream_Load().

◆ stream_get_loader()

HRESULT stream_get_loader ( IStream *  stream,
IDirectMusicLoader **  ret_loader 
)

Definition at line 447 of file dmobject.c.

448{
449 IDirectMusicGetLoader *getter;
450 HRESULT hr;
451
452 if (SUCCEEDED(hr = IStream_QueryInterface(stream, &IID_IDirectMusicGetLoader, (void**)&getter)))
453 {
454 hr = IDirectMusicGetLoader_GetLoader(getter, ret_loader);
456 }
457
458 if (FAILED(hr)) *ret_loader = NULL;
459 return hr;
460}
#define IDirectMusicGetLoader_GetLoader(p, a)
Definition: dmusici.h:963
#define IDirectMusicGetLoader_Release(p)
Definition: dmusici.h:961
#define SUCCEEDED(hr)
Definition: intsafe.h:50

Referenced by stream_get_object().

◆ stream_get_object()

HRESULT stream_get_object ( IStream *  stream,
DMUS_OBJECTDESC *  desc,
REFIID  riid,
void **  ret_iface 
)

Definition at line 462 of file dmobject.c.

463{
464 IDirectMusicLoader *loader;
465 HRESULT hr;
466
468 {
469 hr = IDirectMusicLoader_GetObject(loader, desc, iid, ret_iface);
471 }
472
473 if (FAILED(hr)) *ret_iface = NULL;
474 return hr;
475}
HRESULT stream_get_loader(IStream *stream, IDirectMusicLoader **ret_loader)
Definition: dmobject.c:447
#define IDirectMusicLoader_Release(p)
Definition: dmusici.h:879
#define IDirectMusicLoader_GetObject(p, a, b, c)
Definition: dmusici.h:881
Definition: loader.c:72

Referenced by band_persist_stream_Load(), and dmobj_parsereference().

◆ stream_next_chunk()

◆ stream_read()

HRESULT stream_read ( IStream *  stream,
void *  data,
ULONG  size 
)

Definition at line 290 of file dmobject.c.

291{
292 ULONG read;
293 HRESULT hr;
294
295 hr = IStream_Read(stream, data, size, &read);
296 if (FAILED(hr))
297 TRACE_(dmfile)("IStream_Read failed: %#lx\n", hr);
298 else if (!read && read < size) {
299 /* All or nothing: Handle a partial read due to end of stream as an error */
300 TRACE_(dmfile)("Short read: %lu < %lu\n", read, size);
301 return E_FAIL;
302 }
303
304 return hr;
305}
#define read
Definition: acwin.h:97

◆ stream_reset_chunk_data()

static HRESULT stream_reset_chunk_data ( IStream *  stream,
const struct chunk_entry *  chunk 
)
inlinestatic

Definition at line 50 of file dmobject.h.

51{
53
54 offset.QuadPart = chunk->offset.QuadPart + sizeof(FOURCC) + sizeof(DWORD);
55 if (chunk->id == FOURCC_RIFF || chunk->id == FOURCC_LIST)
56 offset.QuadPart += sizeof(FOURCC);
57
58 return IStream_Seek(stream, offset, STREAM_SEEK_SET, NULL);
59}
GLintptr offset
Definition: glext.h:5920
#define FOURCC(a, b, c, d)
Definition: memtrack.h:4

Referenced by parse_curl_list(), parse_dls_chunk(), parse_dmbd_chunk(), parse_dmbt_chunk(), parse_dmsg_chunk(), parse_ins_chunk(), parse_part_list(), parse_pref_list(), parse_pttn_list(), parse_sfbk_chunk(), and path_config_IPersistStream_Load().

◆ stream_reset_chunk_start()

static HRESULT stream_reset_chunk_start ( IStream *  stream,
const struct chunk_entry *  chunk 
)
inlinestatic

Definition at line 61 of file dmobject.h.

62{
64
65 offset.QuadPart = chunk->offset.QuadPart;
66
67 return IStream_Seek(stream, offset, STREAM_SEEK_SET, NULL);
68}

Referenced by parse_lbnd_list(), parse_pttn_list(), and parse_track_form().

◆ stream_skip_chunk()

◆ unimpl_IPersistStream_GetClassID()

HRESULT WINAPI unimpl_IPersistStream_GetClassID ( IPersistStream *  iface,
CLSID *  class 
)

Definition at line 723 of file dmobject.c.

724{
725 TRACE("(%p, %p): method not implemented\n", iface, class);
726 return E_NOTIMPL;
727}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ unimpl_IPersistStream_GetSizeMax()

HRESULT WINAPI unimpl_IPersistStream_GetSizeMax ( IPersistStream *  iface,
ULARGE_INTEGER *  size 
)

Definition at line 742 of file dmobject.c.

743{
744 TRACE("(%p, %p): method not implemented\n", iface, size);
745 return E_NOTIMPL;
746}

◆ unimpl_IPersistStream_IsDirty()

HRESULT WINAPI unimpl_IPersistStream_IsDirty ( IPersistStream *  iface)

Definition at line 729 of file dmobject.c.

730{
731 TRACE("(%p): method not implemented, always returning S_FALSE\n", iface);
732 return S_FALSE;
733}

◆ unimpl_IPersistStream_Save()

HRESULT WINAPI unimpl_IPersistStream_Save ( IPersistStream *  iface,
IStream *  stream,
BOOL  clear_dirty 
)

Definition at line 735 of file dmobject.c.

737{
738 TRACE("(%p, %p, %d): method not implemented\n", iface, stream, clear_dirty);
739 return E_NOTIMPL;
740}