[PATCH 2/2] dx8vb: Add DirectX8 oclass plus IDirectX8 interface and its dependencies

Fabian Maurer dark.shadow4 at web.de
Sat Oct 14 08:46:17 CDT 2017


Signed-off-by: Fabian Maurer <dark.shadow4 at web.de>
---
 dlls/dx8vb/dx8vb.idl | 3864 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 3859 insertions(+), 5 deletions(-)

diff --git a/dlls/dx8vb/dx8vb.idl b/dlls/dx8vb/dx8vb.idl
index b5f6bea851..e81ce6e811 100644
--- a/dlls/dx8vb/dx8vb.idl
+++ b/dlls/dx8vb/dx8vb.idl
@@ -327,6 +327,531 @@ typedef enum {
     D3DXIFF_FORCE_DWORD = 2147483647
 } CONST_D3DXIMAGE_FILEFORMAT;
 
+typedef enum {
+    DSSPEAKER_HEADPHONE = 1,
+    DSSPEAKER_MONO = 2,
+    DSSPEAKER_QUAD = 3,
+    DSSPEAKER_STEREO = 4,
+    DSSPEAKER_SURROUND = 5,
+    DSSPEAKER_GEOMETRY_MIN = 5,
+    DSSPEAKER_GEOMETRY_NARROW = 10,
+    DSSPEAKER_GEOMETRY_WIDE = 20,
+    DSSPEAKER_GEOMETRY_MAX = 180
+} CONST_DSSPEAKERFLAGS;
+
+typedef enum {
+    DSCBSTART_DEFAULT = 0,
+    DSCBSTART_LOOPING = 1
+} CONST_DSCBSTARTFLAGS;
+
+typedef enum {
+    DSCBSTATUS_CAPTURING = 1,
+    DSCBSTATUS_LOOPING = 2
+} CONST_DSCBSTATUSFLAGS;
+
+typedef enum {
+    DSCBLOCK_DEFAULT = 0,
+    DSCBLOCK_ENTIREBUFFER = 1
+} CONST_DSCBLOCKFLAGS;
+
+typedef enum {
+    DI8DEVCLASS_ALL = 0,
+    DI8DEVCLASS_DEVICE = 1,
+    DI8DEVCLASS_POINTER = 2,
+    DI8DEVCLASS_KEYBOARD = 3,
+    DI8DEVCLASS_GAMECTRL = 4,
+    DI8DEVTYPE_DEVICE = 17,
+    DI8DEVTYPE_MOUSE = 18,
+    DI8DEVTYPE_KEYBOARD = 19,
+    DI8DEVTYPE_JOYSTICK = 20,
+    DI8DEVTYPE_GAMEPAD = 21,
+    DI8DEVTYPE_DRIVING = 22,
+    DI8DEVTYPE_FLIGHT = 23,
+    DI8DEVTYPE_1STPERSON = 24,
+    DI8DEVTYPE_DEVICECTRL = 25,
+    DI8DEVTYPE_SCREENPOINTER = 26,
+    DI8DEVTYPE_REMOTE = 27,
+    DI8DEVTYPE_SUPPLEMENTAL = 28,
+    DI8DEVTYPE_FORCEDWORD = 2130706432
+} CONST_DI8DEVICETYPE;
+
+typedef enum {
+    DIEDFL_ALLDEVICES = 0,
+    DIEDFL_ATTACHEDONLY = 1,
+    DIEDFL_FORCEFEEDBACK = 256,
+    DIEDFL_INCLUDEALIASES = 65536,
+    DIEDFL_INCLUDEPHANTOMS = 131072,
+    DIEDFL_INCLUDEHIDDEN = 262144
+} CONST_DIENUMDEVICESFLAGS;
+
+typedef enum {
+    DMUS_NOTIFY_ON_RECOMPOSE = 0,
+    DMUS_NOTIFY_ON_CHORD = 1,
+    DMUS_NOTIFY_ON_COMMAND = 2,
+    DMUS_NOTIFY_ON_MEASUREANDBEAT = 3,
+    DMUS_NOTIFY_ON_PERFORMANCE = 4,
+    DMUS_NOTIFY_ON_SEGMENT = 5
+} CONST_DMUS_NOTIFICATION_TYPE;
+
+typedef enum {
+    DMUS_PATH_SEGMENT = 4096,
+    DMUS_PATH_SEGMENT_TRACK = 4352,
+    DMUS_PATH_SEGMENT_GRAPH = 4608,
+    DMUS_PATH_SEGMENT_TOOL = 4864,
+    DMUS_PATH_AUDIOPATH = 8192,
+    DMUS_PATH_AUDIOPATH_GRAPH = 8704,
+    DMUS_PATH_AUDIOPATH_TOOL = 8960,
+    DMUS_PATH_PERFORMANCE = 12288,
+    DMUS_PATH_PERFORMANCE_GRAPH = 12800,
+    DMUS_PATH_PERFORMANCE_TOOL = 13056,
+    DMUS_PATH_PORT = 16384,
+    DMUS_PATH_BUFFER = 24576,
+    DMUS_PATH_BUFFER_DMO = 24832,
+    DMUS_PATH_MIXIN_BUFFER = 28672,
+    DMUS_PATH_MIXIN_BUFFER_DMO = 28928,
+    DMUS_PATH_PRIMARY_BUFFER = 32768
+} CONST_DMUSIC_PATH;
+
+typedef enum {
+    DMUS_AUDIOF_3D = 1,
+    DMUS_AUDIOF_ENVIRON = 2,
+    DMUS_AUDIOF_EAX = 4,
+    DMUS_AUDIOF_DMOS = 8,
+    DMUS_AUDIOF_STREAMING = 16,
+    DMUS_AUDIOF_BUFFERS = 32,
+    DMUS_AUDIOF_ALL = 63
+} CONST_DMUS_AUDIO;
+
+typedef enum {
+    DMUS_SEGF_REFTIME = 64,
+    DMUS_SEGF_SECONDARY = 128,
+    DMUS_SEGF_QUEUE = 256,
+    DMUS_SEGF_CONTROL = 512,
+    DMUS_SEGF_AFTERPREPARETIME = 1024,
+    DMUS_SEGF_GRID = 2048,
+    DMUS_SEGF_BEAT = 4096,
+    DMUS_SEGF_MEASURE = 8192,
+    DMUS_SEGF_DEFAULT = 16384,
+    DMUS_SEGF_NOINVALIDATE = 32768,
+    DMUS_SEGF_ALIGN = 65536,
+    DMUS_SEGF_VALID_START_BEAT = 131072,
+    DMUS_SEGF_VALID_START_GRID = 262144,
+    DMUS_SEGF_VALID_START_TICK = 524288,
+    DMUS_SEGF_AUTOTRANSITION = 1048576,
+    DMUS_SEGF_AFTERQUEUETIME = 2097152,
+    DMUS_SEGF_AFTERLATENCYTIME = 4194304,
+    DMUS_SEGF_SEGMENTEND = 8388608,
+    DMUS_SEGF_MARKER = 16777216,
+    DMUS_SEGF_TIMESIG_ALWAYS = 33554432,
+    DMUS_SEGF_USE_AUDIOPATH = 67108864,
+    DMUS_SEGF_VALID_START_MEASURE = 134217728
+} CONST_DMUS_SEGF_FLAGS;
+
+typedef enum {
+    DVBUFFERAGGRESSIVENESS_MIN = 1,
+    DVBUFFERAGGRESSIVENESS_MAX = 100,
+    DVBUFFERAGGRESSIVENESS_DEFAULT = 0
+} CONST_DVBUFFERAGGRESSIVENESS;
+
+typedef enum {
+    DVCLIENTCONFIG_RECORDMUTE = 1,
+    DVCLIENTCONFIG_PLAYBACKMUTE = 2,
+    DVCLIENTCONFIG_MANUALVOICEACTIVATED = 4,
+    DVCLIENTCONFIG_AUTORECORDVOLUME = 8,
+    DVCLIENTCONFIG_MUTEGLOBAL = 16,
+    DVCLIENTCONFIG_AUTOVOICEACTIVATED = 32,
+    DVCLIENTCONFIG_ECHOSUPPRESSION = 134217728
+} CONST_DVCLIENTCONFIGENUM;
+
+typedef enum {
+    DVBUFFERQUALITY_MIN = 1,
+    DVBUFFERQUALITY_MAX = 100,
+    DVBUFFERQUALITY_DEFAULT = 0
+} CONST_DVBUFFERQUALITY;
+
+typedef enum {
+    DVTHRESHOLD_MIN = 0,
+    DVTHRESHOLD_MAX = 99,
+    DVTHRESHOLD_DEFAULT = -1,
+    DVTHRESHOLD_UNUSED = -2
+} CONST_DVTHRESHOLD;
+
+typedef enum {
+    DVSOUNDCONFIG_NORMALMODE = 1,
+    DVSOUNDCONFIG_AUTOSELECT = 2,
+    DVSOUNDCONFIG_HALFDUPLEX = 4,
+    DVSOUNDCONFIG_SETCONVERSIONQUALITY = 8,
+    DVSOUNDCONFIG_NORECVOLAVAILABLE = 16,
+    DVSOUNDCONFIG_NOFOCUS = 536870912,
+    DVSOUNDCONFIG_STRICTFOCUS = 1073741824
+} CONST_DVSOUNDEFFECT;
+
+typedef enum {
+    DVSESSION_NOHOSTMIGRATION = 1,
+    DVSESSION_SERVERCONTROLTARGET = 2
+} CONST_DVSESSION;
+
+typedef enum {
+    DVSESSIONTYPE_PEER = 1,
+    DVSESSIONTYPE_MIXING = 2,
+    DVSESSIONTYPE_FORWARDING = 3,
+    DVSESSIONTYPE_ECHO = 4
+} CONST_DVSESSIONTYPE;
+
+typedef enum {
+    DPLCONNECT_LAUNCHNEW = 1,
+    DPLCONNECT_LAUNCHNOTFOUND = 2
+} CONST_DPLCONNECT;
+
+typedef enum {
+    DPLSESSION_CONNECTED = 1,
+    DPLSESSION_COULDNOTCONNECT = 2,
+    DPLSESSION_DISCONNECTED = 3,
+    DPLSESSION_TERMINATED = 4,
+    DPLSESSION_HOSTMIGRATED = 5,
+    DPLSESSION_HOSTMIGRATEDHERE = 6
+} CONST_DPLSESSION;
+
+typedef enum {
+    DPLAVAILABLE_ALLOWMULTIPLECONNECT = 1
+} CONST_DPLAVAILABLE;
+
+typedef enum {
+    DPLCONNECTSETTINGS_HOST = 1
+} CONST_DPLCONNECTSETTINGS;
+
+typedef enum {
+    DPNCANCEL_ALL_OPERATIONS = 32768,
+    DPNCANCEL_CONNECT = 1,
+    DPNCANCEL_ENUM = 2,
+    DPNCANCEL_SEND = 4
+} CONST_DPNCANCELFLAGS;
+
+typedef enum {
+    DPNENUM_PLAYERS = 1,
+    DPNENUM_GROUPS = 16
+} CONST_DPNENUMCLIENTGROUPFLAGS;
+
+typedef enum {
+    DPNSESSION_CLIENT_SERVER = 1,
+    DPNSESSION_MIGRATE_HOST = 4,
+    DPNSESSION_NODPNSVR = 64,
+    DPNSESSION_REQUIREPASSWORD = 128
+} CONST_DPNSESSIONFLAGS;
+
+typedef enum {
+    DPNPLAYER_LOCAL = 2,
+    DPNPLAYER_HOST = 4
+} CONST_DPNPLAYINFOFLAGS;
+
+typedef enum {
+    DPNGETSENDQUEUEINFO_PRIORITY_NORMAL = 1,
+    DPNGETSENDQUEUEINFO_PRIORITY_HIGH = 2,
+    DPNGETSENDQUEUEINFO_PRIORITY_LOW = 4
+} CONST_DPNGETSENDQUEUEINFO;
+
+typedef enum {
+    DPNOP_SYNC = -2147483648,
+    DPNCONNECT_SYNC = -2147483648,
+    DPNENUMHOSTS_SYNC = -2147483648,
+    DPNCREATEGROUP_SYNC = -2147483648,
+    DPNDESTROYGROUP_SYNC = -2147483648,
+    DPNADDPLAYERTOGROUP_SYNC = -2147483648,
+    DPNREMOVEPLAYERFROMGROUP_SYNC = -2147483648,
+    DPNSETGROUPINFO_SYNC = -2147483648,
+    DPNSETCLIENTINFO_SYNC = -2147483648,
+    DPNSETSERVERINFO_SYNC = -2147483648,
+    DPNSETPEERINFO_SYNC = -2147483648,
+    DPNHOST_OKTOQUERYFORADDRESSING = 1
+} CONST_DPNOPERATIONS;
+
+typedef enum {
+    DPNSEND_SYNC = -2147483648,
+    DPNSEND_NOCOPY = 1,
+    DPNSEND_NOCOMPLETE = 2,
+    DPNSEND_COMPLETEONPROCESS = 4,
+    DPNSEND_GUARANTEED = 8,
+    DPNSEND_NONSEQUENTIAL = 16,
+    DPNSEND_NOLOOPBACK = 32,
+    DPNSEND_PRIORITY_LOW = 64,
+    DPNSEND_PRIORITY_HIGH = 128
+} CONST_DPNSENDFLAGS;
+
+typedef enum {
+    DMUS_APATH_SHARED_STEREOPLUSREVERB = 1,
+    DMUS_APATH_DYNAMIC_3D = 6,
+    DMUS_APATH_DYNAMIC_MONO = 7,
+    DMUS_APATH_DYNAMIC_STEREO = 8
+} CONST_DMUSIC_STANDARD_AUDIO_PATH;
+
+typedef enum {
+    DMUS_AUDIOPARAMS_FEATURES = 1,
+    DMUS_AUDIOPARAMS_VOICES = 2,
+    DMUS_AUDIOPARAMS_SAMPLERATE = 4,
+    DMUS_AUDIOPARAMS_DEFAULTSYNTH = 8
+} CONST_DMUS_AUDIOPARAMS;
+
+typedef enum {
+    DIDFT_ALL = 0,
+    DIDFT_RELAXIS = 1,
+    DIDFT_ABSAXIS = 2,
+    DIDFT_AXIS = 3,
+    DIDFT_PSHBUTTON = 4,
+    DIDFT_TGLBUTTON = 8,
+    DIDFT_BUTTON = 12,
+    DIDFT_POV = 16,
+    DIDFT_COLLECTION = 64,
+    DIDFT_NODATA = 128,
+    DIDFT_ANYINSTANCE = 16776960,
+    DIDFT_INSTANCEMASK = 16776960,
+    DIDFT_FFACTUATOR = 16777216,
+    DIDFT_FFEFFECTTRIGGER = 33554432,
+    DIDFT_NOCOLLECTION = 16776960,
+    DIDFT_VENDORDEFINED = 67108864,
+    DIDFT_ALIAS = 134217728,
+    DIDFT_OUTPUT = 268435456
+} CONST_DIDFTFLAGS;
+
+typedef enum {
+    DIDOI_FFACTUATOR = 1,
+    DIDOI_FFEFFECTTRIGGER = 2,
+    DIDOI_POLLED = 32768,
+    DIDOI_ASPECTPOSITION = 256,
+    DIDOI_ASPECTVELOCITY = 512,
+    DIDOI_ASPECTACCEL = 768,
+    DIDOI_ASPECTFORCE = 1024,
+    DIDOI_ASPECTMASK = 3840,
+    DIDOI_GUIDISUSAGE = 65536
+} CONST_DIDEVICEOBJINSTANCEFLAGS;
+
+    typedef enum {
+    DIDC_ATTACHED = 1,
+    DIDC_POLLEDDEVICE = 2,
+    DIDC_EMULATED = 4,
+    DIDC_POLLEDDATAFORMAT = 8,
+    DIDC_FORCEFEEDBACK = 256,
+    DIDC_FFATTACK = 512,
+    DIDC_FFFADE = 1024,
+    DIDC_SATURATION = 2048,
+    DIDC_POSNEGCOEFFICIENTS = 4096,
+    DIDC_POSNEGSATURATION = 8192,
+    DIDC_DEADBAND = 16384,
+    DIDC_STARTDELAY = 32768,
+    DIDC_ALIAS = 65536,
+    DIDC_PHANTOM = 131072,
+    DIDC_HIDDEN = 262144
+} CONST_DIDEVCAPSFLAGS;
+
+typedef enum {
+    DIGDD_DEFAULT = 0,
+    DIGDD_PEEK = 1
+} CONST_DIDGDDFLAGS;
+
+typedef enum {
+    DIPH_DEVICE = 0,
+    DIPH_BYOFFSET = 1,
+    DIPH_BYID = 2,
+    DIPH_BYUSAGE = 3
+} CONST_DIPHFLAGS;
+
+typedef enum {
+    DISCL_EXCLUSIVE = 1,
+    DISCL_NONEXCLUSIVE = 2,
+    DISCL_FOREGROUND = 4,
+    DISCL_BACKGROUND = 8,
+    DISCL_NOWINKEY = 16
+} CONST_DISCLFLAGS;
+
+typedef enum {
+    DIFORMAT_KEYBOARD = 1,
+    DIFORMAT_MOUSE = 2,
+    DIFORMAT_JOYSTICK = 3,
+    DIFORMAT_JOYSTICK2 = 4,
+    DIFORMAT_MOUSE2 = 5
+} CONST_DICOMMONDATAFORMATS;
+
+typedef enum {
+    DIDF_ABSAXIS = 1,
+    DIDF_RELAXIS = 2
+} CONST_DIDATAFORMATFLAGS;
+
+typedef enum {
+    DICONDITION_USE_BOTH_AXES = 1,
+    DICONDITION_USE_DIRECTION = 2
+} CONST_DICONDITIONFLAGS;
+
+typedef enum {
+    DIEP_DURATION = 1,
+    DIEP_SAMPLEPERIOD = 2,
+    DIEP_GAIN = 4,
+    DIEP_TRIGGERBUTTON = 8,
+    DIEP_TRIGGERREPEATINTERVAL = 16,
+    DIEP_AXES = 32,
+    DIEP_DIRECTION = 64,
+    DIEP_ENVELOPE = 128,
+    DIEP_TYPESPECIFICPARAMS = 256,
+    DIEP_ALLPARAMS = 1023,
+    DIEP_START = 536870912,
+    DIEP_NORESTART = 1073741824,
+    DIEP_NODOWNLOAD = -2147483648,
+    DIEP_STARTDELAY = 512
+} CONST_DIEPFLAGS;
+
+typedef enum {
+    DISDD_DEFAULT = 0,
+    DISDD_CONTINUE = 1
+} CONST_DISDDFLAGS;
+
+typedef enum {
+    DISFFC_RESET = 1,
+    DISFFC_STOPALL = 2,
+    DISFFC_PAUSE = 4,
+    DISFFC_CONTINUE = 8,
+    DISFFC_SETACTUATORSON = 16,
+    DISFFC_SETACTUATORSOFF = 32
+} CONST_DISFFCFLAGS;
+
+typedef enum {
+    DIGFFS_EMPTY = 1,
+    DIGFFS_STOPPED = 2,
+    DIGFFS_PAUSED = 4,
+    DIGFFS_ACTUATORSON = 16,
+    DIGFFS_ACTUATORSOFF = 32,
+    DIGFFS_POWERON = 64,
+    DIGFFS_POWEROFF = 128,
+    DIGFFS_SAFETYSWITCHON = 256,
+    DIGFFS_SAFETYSWITCHOFF = 512,
+    DIGFFS_USERFFSWITCHON = 1024,
+    DIGFFS_USERFFSWITCHOFF = 2048,
+    DIGFFS_DEVICELOST = -2147483648
+} CONST_DIGFFSFLAGS;
+
+typedef enum {
+    DIEFT_ALL = 0,
+    DIEFT_CONSTANTFORCE = 1,
+    DIEFT_RAMPFORCE = 2,
+    DIEFT_PERIODIC = 3,
+    DIEFT_CONDITION = 4,
+    DIEFT_CUSTOMFORCE = 5,
+    DIEFT_HARDWARE = 255,
+    DIEFT_FFATTACK = 512,
+    DIEFT_FFFADE = 1024,
+    DIEFT_SATURATION = 2048,
+    DIEFT_POSNEGCOEFFICIENTS = 4096,
+    DIEFT_POSNEGSATURATION = 8192,
+    DIEFT_DEADBAND = 16384,
+    DIEFT_STARTDELAY = 32768
+} CONST_DIEFTFLAGS;
+
+typedef enum {
+    DPNINFO_NAME = 1,
+    DPNINFO_DATA = 2
+} CONST_DPNINFO;
+
+typedef enum {
+    DPNGROUP_AUTODESTRUCT = 1
+} CONST_DPNGROUPINFOFLAGS;
+
+typedef enum {
+    DS3D_IMMEDIATE = 0,
+    DS3D_DEFERRED = 1
+} CONST_DS3DAPPLYFLAGS;
+
+typedef enum {
+    DSBSTATUS_PLAYING = 1,
+    DSBSTATUS_BUFFERLOST = 2,
+    DSBSTATUS_LOOPING = 4,
+    DSBSTATUS_LOCHARDWARE = 8,
+    DSBSTATUS_LOCSOFTWARE = 16,
+    DSBSTATUS_TERMINATED = 32
+} CONST_DSBSTATUSFLAGS;
+
+typedef enum {
+    DSBLOCK_DEFAULT = 0,
+    DSBLOCK_FROMWRITECURSOR = 1,
+    DSBLOCK_ENTIREBUFFER = 2
+} CONST_DSBLOCKFLAGS;
+
+typedef enum {
+    DSBPLAY_DEFAULT = 0,
+    DSBPLAY_LOOPING = 1,
+    DSBPLAY_LOCHARDWARE = 2,
+    DSBPLAY_LOCSOFTWARE = 4,
+    DSBPLAY_TERMINATEBY_TIME = 8,
+    DSBPLAY_TERMINATEBY_DISTANCE = 16,
+    DSBPLAY_TERMINATEBY_PRIORITY = 32
+} CONST_DSBPLAYFLAGS;
+
+typedef enum {
+    DSCAPS_PRIMARYMONO = 1,
+    DSCAPS_PRIMARYSTEREO = 2,
+    DSCAPS_PRIMARY8BIT = 4,
+    DSCAPS_PRIMARY16BIT = 8,
+    DSCAPS_CONTINUOUSRATE = 16,
+    DSCAPS_EMULDRIVER = 32,
+    DSCAPS_CERTIFIED = 64,
+    DSCAPS_SECONDARYMONO = 256,
+    DSCAPS_SECONDARYSTEREO = 512,
+    DSCAPS_SECONDARY8BIT = 1024,
+    DSCAPS_SECONDARY16BIT = 2048
+} CONST_DSCAPSFLAGS;
+
+typedef enum {
+    DSSCL_NORMAL = 1,
+    DSSCL_PRIORITY = 2,
+    DSSCL_WRITEPRIMARY = 4
+} CONST_DSSCLFLAGS;
+
+typedef enum {
+    DSCBCAPS_DEFAULT = 0,
+    DSCBCAPS_WAVEMAPPED = -2147483648
+} CONST_DSCBCAPSFLAGS;
+
+typedef enum {
+    DSBCAPS_PRIMARYBUFFER = 1,
+    DSBCAPS_STATIC = 2,
+    DSBCAPS_LOCHARDWARE = 4,
+    DSBCAPS_LOCSOFTWARE = 8,
+    DSBCAPS_CTRL3D = 16,
+    DSBCAPS_CTRLFREQUENCY = 32,
+    DSBCAPS_CTRLPAN = 64,
+    DSBCAPS_CTRLVOLUME = 128,
+    DSBCAPS_CTRLPOSITIONNOTIFY = 256,
+    DSBCAPS_CTRLFX = 512,
+    DSBCAPS_CTRLCHANNELVOLUME = 1024,
+    DSBCAPS_STICKYFOCUS = 16384,
+    DSBCAPS_GLOBALFOCUS = 32768,
+    DSBCAPS_GETCURRENTPOSITION2 = 65536,
+    DSBCAPS_MUTE3DATMAXDISTANCE = 131072,
+    DSBCAPS_LOCDEFER = 262144
+} CONST_DSBCAPSFLAGS;
+
+typedef enum {
+    DS3DMODE_NORMAL = 0,
+    DS3DMODE_HEADRELATIVE = 1,
+    DS3DMODE_DISABLE = 2
+} CONST_DS3DMODEFLAGS;
+
+typedef enum {
+    DSCCAPS_DEFAULT = 0,
+    DSCCAPS_EMULDRIVER = 32
+} CONST_DSCCAPSFLAGS;
+
+typedef enum {
+    WAVE_FORMAT_1M08 = 1,
+    WAVE_FORMAT_1S08 = 2,
+    WAVE_FORMAT_1M16 = 4,
+    WAVE_FORMAT_1S16 = 8,
+    WAVE_FORMAT_2M08 = 16,
+    WAVE_FORMAT_2S08 = 32,
+    WAVE_FORMAT_2M16 = 64,
+    WAVE_FORMAT_2S16 = 128,
+    WAVE_FORMAT_4M08 = 256,
+    WAVE_FORMAT_4S08 = 512,
+    WAVE_FORMAT_4M16 = 1024,
+    WAVE_FORMAT_4S16 = 2048
+} CONST_WAVEFORMATFLAGS;
+
 //Structures
 
 typedef struct tagDXGUID {
@@ -630,6 +1155,667 @@ typedef struct tagD3DXBONECOMBINATION {
     long pBones;
 } D3DXBONECOMBINATION;
 
+typedef struct tagWAVEFORMATEX {
+    short nFormatTag;
+    short nChannels;
+    long lSamplesPerSec;
+    long lAvgBytesPerSec;
+    short nBlockAlign;
+    short nBitsPerSample;
+    short nSize;
+    long lExtra;
+} WAVEFORMATEX;
+
+typedef struct tagDSBUFFERDESC {
+    long lSize;
+    CONST_DSBCAPSFLAGS lFlags;
+    long lBufferBytes;
+    long lReserved;
+    WAVEFORMATEX fxFormat;
+    BSTR guid3DAlgorithm;
+} DSBUFFERDESC;
+
+typedef struct tagDSCURSORS {
+    long lPlay;
+    long lWrite;
+} DSCURSORS;
+
+typedef struct tagDSCBCAPS {
+    long lSize;
+    CONST_DSCBCAPSFLAGS lFlags;
+    long lBufferBytes;
+    long lReserved;
+} DSCBCAPS;
+
+typedef struct tagDSBPOSITIONNOTIFY {
+    long lOffset;
+    long hEventNotify;
+} DSBPOSITIONNOTIFY;
+
+typedef struct tagDIACTION {
+    long lAppData;
+    long lSemantic;
+    long lFlags;
+    BSTR ActionName;
+    DXGUID guidInstance;
+    long lObjId;
+    long lHow;
+} DIACTION;
+
+typedef struct tagDIACTIONFORMAT {
+    long lActionSize;
+    long lDataSize;
+    BSTR ActionMapName;
+    BSTR guidActionMap;
+    long lGenre;
+    long lAxisMin;
+    long lAxisMax;
+    long lBufferSize;
+    long lActionCount;
+    SAFEARRAY(DIACTION) ActionArray;
+} DIACTIONFORMAT;
+
+typedef struct tagDMUS_TIMESIGNATURE {
+    long mtTime;
+    unsigned char beatsPerMeasure;
+    unsigned char beat;
+    short gridsPerBeat;
+} DMUS_TIMESIGNATURE;
+
+typedef struct tagDMUS_NOTE_PMSG {
+    long mtDuration;
+    short musicValue;
+    short measure;
+    short Offset;
+    unsigned char beat;
+    unsigned char grid;
+    unsigned char velocity;
+    unsigned char flags;
+    unsigned char timeRange;
+    unsigned char durRange;
+    unsigned char velRange;
+    unsigned char playModeFlags;
+    unsigned char subChordLevel;
+    unsigned char midiValue;
+    short transpose;
+} DMUS_NOTE_PMSG;
+
+typedef struct tagDMUS_AUDIOPARAMS {
+    long dwSize;
+    VARIANT_BOOL fInitNow;
+    CONST_DMUS_AUDIOPARAMS lValidData;
+    CONST_DMUS_AUDIO lFeatures;
+    long lVoices;
+    long lSampleRate;
+    BSTR clsidDefaultSynth;
+} DMUS_AUDIOPARAMS;
+
+typedef struct tagDVSOUNDDEVICECONFIG {
+    long lSize;
+    CONST_DVSOUNDEFFECT lFlags;
+    BSTR guidPlaybackDevice;
+    BSTR guidCaptureDevice;
+    long hwndAppWindow;
+    DirectSoundSecondaryBuffer8 *MainSoundBuffer;
+    CONST_DSBPLAYFLAGS lMainBufferFlags;
+    long lMainBufferPriority;
+} DVSOUNDDEVICECONFIG;
+
+typedef struct tagDVCLIENTCONFIG {
+    long lSize;
+    CONST_DVCLIENTCONFIGENUM lFlags;
+    long lRecordVolume;
+    long lPlaybackVolume;
+    CONST_DVTHRESHOLD lThreshold;
+    CONST_DVBUFFERQUALITY lBufferQuality;
+    CONST_DVBUFFERAGGRESSIVENESS lBufferAggressiveness;
+    long lNotifyPeriod;
+} DVCLIENTCONFIG;
+
+typedef struct tagDVSESSIONDESC {
+    long lSize;
+    CONST_DVSESSION lFlags;
+    CONST_DVSESSIONTYPE lSessionType;
+    BSTR guidCT;
+    CONST_DVBUFFERQUALITY lBufferQuality;
+    CONST_DVBUFFERAGGRESSIVENESS lBufferAggressiveness;
+} DVSESSIONDESC;
+
+typedef struct tagDVCOMPRESSIONINFO {
+    long lSize;
+    BSTR guidType;
+    BSTR strName;
+    BSTR strDescription;
+    long lFlags;
+    long lMaxBitsPerSecond;
+} DVCOMPRESSIONINFO;
+
+typedef struct tagDVCAPS {
+    long lSize;
+    long lFlags;
+} DVCAPS;
+
+typedef struct tagDPN_APPLICATION_DESC {
+    long lSize;
+    CONST_DPNSESSIONFLAGS lFlags;
+    BSTR guidInstance;
+    BSTR guidApplication;
+    long lMaxPlayers;
+    long lCurrentPlayers;
+    BSTR SessionName;
+    BSTR Password;
+    long dwReservedDataSize;
+    long dwApplicationReservedDataSize;
+} DPN_APPLICATION_DESC;
+
+typedef struct tagDPL_CONNECTION_SETTINGS {
+    long lSize;
+    CONST_DPLCONNECTSETTINGS lFlags;
+    DPN_APPLICATION_DESC ApplicationDescription;
+    BSTR PlayerName;
+    BSTR AddressSenderUrl;
+    BSTR AddressDeviceUrl;
+} DPL_CONNECTION_SETTINGS;
+
+typedef struct tagDPL_CONNECT_INFO {
+    long lSize;
+    CONST_DPLCONNECT lFlags;
+    BSTR guidApplication;
+    DPL_CONNECTION_SETTINGS ConnectionSettings;
+} DPL_CONNECT_INFO;
+
+typedef struct tagDPL_APPLICATION_INFO {
+    BSTR guidApplication;
+    BSTR ApplicationName;
+    long lNumRunning;
+    long lNumWaiting;
+    CONST_DPLSESSION lFlags;
+} DPL_APPLICATION_INFO;
+
+typedef struct tagDPN_SP_CAPS {
+    long lSize;
+    long lFlags;
+    long lNumThreads;
+    long lDefaultEnumCount;
+    long lDefaultEnumRetryInterval;
+    long lDefaultEnumTimeout;
+    long lMaxEnumPayloadSize;
+    long lBuffersPerThread;
+    long lSystemBufferSize;
+} DPN_SP_CAPS;
+
+typedef struct tagDPN_CONNECTION_INFO {
+    long lSize;
+    long lRoundTripLatencyMS;
+    long lThroughputBPS;
+    long lPeakThroughputBPS;
+    long lBytesSentGuaranteed;
+    long lPacketsSentGuaranteed;
+    long lBytesSentNonGuaranteed;
+    long lPacketsSentNonGuaranteed;
+    long lBytesRetried;
+    long lPacketsRetried;
+    long lBytesDropped;
+    long lPacketsDropped;
+    long lMessagesTransmittedHighPriority;
+    long lMessagesTimedOutHighPriority;
+    long lMessagesTransmittedNormalPriority;
+    long lMessagesTimedOutNormalPriority;
+    long lMessagesTransmittedLowPriority;
+    long lMessagesTimedOutLowPriority;
+    long lBytesReceivedGuaranteed;
+    long lPacketsReceivedGuaranteed;
+    long lBytesReceivedNonGuaranteed;
+    long lPacketsReceivedNonGuaranteed;
+    long lMessagesReceived;
+} DPN_CONNECTION_INFO;
+
+typedef struct tagDPL_PROGRAM_DESC {
+    long lSize;
+    long lFlags;
+    BSTR guidApplication;
+    BSTR ApplicationName;
+    BSTR CommandLine;
+    BSTR CurrentDirectory;
+    BSTR Description;
+    BSTR ExecutableFilename;
+    BSTR ExecutablePath;
+    BSTR LauncherFilename;
+    BSTR LauncherPath;
+} DPL_PROGRAM_DESC;
+
+typedef struct tagDPL_MESSAGE_RECEIVE {
+    long lSize;
+    long Sender;
+    SAFEARRAY(unsigned char) Buffer;
+    long lBufferSize;
+} DPL_MESSAGE_RECEIVE;
+
+typedef struct tagDPL_MESSAGE_CONNECT {
+    long lSize;
+    long ConnectId;
+    SAFEARRAY(unsigned char) LobbyConnectData;
+    DPL_CONNECTION_SETTINGS dplMsgCon;
+} DPL_MESSAGE_CONNECT;
+
+typedef struct tagDPL_MESSAGE_CONNECTION_SETTINGS {
+    long lSize;
+    long hSender;
+    DPL_CONNECTION_SETTINGS dplConnectionSettings;
+} DPL_MESSAGE_CONNECTION_SETTINGS;
+
+typedef struct tagDPN_CAPS {
+    long lSize;
+    long lFlags;
+    long lConnectTimeout;
+    long lConnectRetries;
+    long lTimeoutUntilKeepAlive;
+} DPN_CAPS;
+
+typedef struct tagDPN_SERVICE_PROVIDER_INFO {
+    long lFlags;
+    BSTR guid;
+    BSTR name;
+} DPN_SERVICE_PROVIDER_INFO;
+
+typedef struct tagDPNMSG_ASYNC_OP_COMPLETE {
+    long lSize;
+    long AsyncOpHandle;
+    long hResultCode;
+} DPNMSG_ASYNC_OP_COMPLETE;
+
+typedef struct tagDPNMSG_CONNECT_COMPLETE {
+    long lSize;
+    long AsyncOpHandle;
+    long hResultCode;
+    SAFEARRAY(unsigned char) ReplyData;
+} DPNMSG_CONNECT_COMPLETE;
+
+typedef struct tagDPNMSG_ENUM_HOSTS_QUERY {
+    long lSize;
+    SAFEARRAY(unsigned char) ReceivedData;
+    long lMaxResponseDataSize;
+    SAFEARRAY(unsigned char) ResponseData;
+    BSTR AddressSenderUrl;
+    BSTR AddressDeviceUrl;
+} DPNMSG_ENUM_HOSTS_QUERY;
+
+typedef struct tagDPNMSG_ENUM_HOSTS_RESPONSE {
+    long lSize;
+    DPN_APPLICATION_DESC ApplicationDescription;
+    SAFEARRAY(unsigned char) ResponseData;
+    long lRoundTripLatencyMS;
+    BSTR AddressSenderUrl;
+    BSTR AddressDeviceUrl;
+} DPNMSG_ENUM_HOSTS_RESPONSE;
+
+typedef struct tagDPNMSG_INDICATE_CONNECT {
+    long lSize;
+    SAFEARRAY(unsigned char) UserData;
+    long dwReplyDataSize;
+    BSTR AddressPlayerUrl;
+    BSTR AddressDeviceUrl;
+} DPNMSG_INDICATE_CONNECT;
+
+typedef struct tagDPNMSG_RECEIVE {
+    long lSize;
+    long idSender;
+    SAFEARRAY(unsigned char) ReceivedData;
+    long lDataSize;
+    long BufferHandle;
+} DPNMSG_RECEIVE;
+
+typedef struct tagDPNMSG_SEND_COMPLETE {
+    long lSize;
+    long AsyncOpHandle;
+    long hResultCode;
+    long lSendTime;
+} DPNMSG_SEND_COMPLETE;
+
+typedef struct tagDPNMSG_TERMINATE_SESSION {
+    long lSize;
+    long hResultCode;
+    SAFEARRAY(unsigned char) TerminateData;
+} DPNMSG_TERMINATE_SESSION;
+
+typedef struct tagDPN_PLAYER_INFO {
+    long lSize;
+    CONST_DPNINFO lInfoFlags;
+    BSTR name;
+    long lDataSize;
+    CONST_DPNPLAYINFOFLAGS lPlayerFlags;
+} DPN_PLAYER_INFO;
+
+typedef struct tagDPN_GROUP_INFO {
+    long lSize;
+    CONST_DPNINFO lInfoFlags;
+    BSTR name;
+    long lDataSize;
+    CONST_DPNGROUPINFOFLAGS lGroupFlags;
+} DPN_GROUP_INFO;
+
+typedef struct tagDMUS_CURVE_PMSG {
+    long mtDuration;
+    long mtOriginalStart;
+    long mtResetDuration;
+    short startValue;
+    short endValue;
+    short resetValue;
+    short measure;
+    short Offset;
+    unsigned char beat;
+    unsigned char grid;
+    unsigned char Type;
+    unsigned char curveShape;
+    unsigned char ccData;
+    unsigned char flags;
+    short ParamType;
+    short MergeIndex;
+} DMUS_CURVE_PMSG;
+
+typedef struct tagDIDEVCAPS {
+    long lSize;
+    CONST_DIDEVCAPSFLAGS lFlags;
+    long lDevType;
+    long lAxes;
+    long lButtons;
+    long lPOVs;
+    long lFFSamplePeriod;
+    long lFFMinTimeResolution;
+    long lFirmwareRevision;
+    long lHardwareRevision;
+    long lDriverVersion;
+} DIDEVCAPS;
+
+typedef struct tagDIDEVICEOBJECTDATA {
+    long lOfs;
+    long lData;
+    long lTimeStamp;
+    long lSequence;
+    long lUserData;
+} DIDEVICEOBJECTDATA;
+
+typedef struct tagDIKEYBOARDSTATE {
+    unsigned char key[256];
+} DIKEYBOARDSTATE;
+
+typedef struct tagDIMOUSESTATE {
+    long lX;
+    long lY;
+    long lZ;
+    unsigned char Buttons[4];
+} DIMOUSESTATE;
+
+typedef struct tagDIMOUSESTATE2 {
+    long lX;
+    long lY;
+    long lZ;
+    unsigned char Buttons[8];
+} DIMOUSESTATE2;
+
+typedef struct tagDIJOYSTATE {
+    long x;
+    long y;
+    long z;
+    long rx;
+    long ry;
+    long rz;
+    long slider[2];
+    long POV[4];
+    unsigned char Buttons[32];
+} DIJOYSTATE;
+
+typedef struct tagDIJOYSTATE2 {
+    long x;
+    long y;
+    long z;
+    long rx;
+    long ry;
+    long rz;
+    long slider[2];
+    long POV[4];
+    unsigned char Buttons[128];
+    long vx;
+    long vy;
+    long vz;
+    long vrx;
+    long vry;
+    long vrz;
+    long vslider[2];
+    long ax;
+    long ay;
+    long az;
+    long arx;
+    long ary;
+    long arz;
+    long aslider[2];
+    long fx;
+    long fy;
+    long fz;
+    long frx;
+    long fry;
+    long frz;
+    long fslider[2];
+} DIJOYSTATE2;
+
+typedef struct tagDIDATAFORMAT {
+    long lSize;
+    long lObjSize;
+    CONST_DIDATAFORMATFLAGS lFlags;
+    long dataSize;
+    long numObjs;
+    long pData;
+} DIDATAFORMAT;
+
+typedef struct tagDIOBJECTDATAFORMAT {
+    BSTR strGuid;
+    long lOfs;
+    CONST_DIDFTFLAGS lType;
+    CONST_DIDEVICEOBJINSTANCEFLAGS lFlags;
+} DIOBJECTDATAFORMAT;
+
+typedef struct tagDIRAMPFORCE {
+    long lRangeStart;
+    long lRangeEnd;
+} DIRAMPFORCE;
+
+typedef struct tagDIPERIODICFORCE {
+    long lMagnitude;
+    long lOffset;
+    long lPhase;
+    long lPeriod;
+} DIPERIODICFORCE;
+
+typedef struct tagDICONSTANTFORCE {
+    long lMagnitude;
+} DICONSTANTFORCE;
+
+typedef struct tagDICONDITION {
+    long lOffset;
+    long lPositiveCoefficient;
+    long lNegativeCoefficient;
+    long lPositiveSaturation;
+    long lNegativeSaturation;
+    long lDeadBand;
+} DICONDITION;
+
+typedef struct tagDIENVELOPE {
+    long lSize;
+    long lAttackLevel;
+    long lAttackTime;
+    long lFadeLevel;
+    long lFadeTime;
+} DIENVELOPE;
+
+typedef struct tagDIAXISOFFSETS_CDESC {
+    long x;
+    long y;
+} DIAXISOFFSETS_CDESC;
+
+typedef struct tagDIEFFECT {
+    long dwSize;
+    long lFlags;
+    long lDuration;
+    long lSamplePeriod;
+    long lGain;
+    long lTriggerButton;
+    long lTriggerRepeatInterval;
+    long lAxes;
+    long lprgdwAxes;
+    long lprglDirection;
+    long lpEnvelope;
+    long cbTypeSpecificParams;
+    long lpvTypeSpecificParams;
+    long lStartDelay;
+    long x;
+    long y;
+    DIRAMPFORCE rampForce;
+    DIPERIODICFORCE periodicForce;
+    DICONSTANTFORCE constantForce;
+    DICONDITION conditionX;
+    DICONDITION conditionY;
+    CONST_DICONDITIONFLAGS conditionFlags;
+    long bUseEnvelope;
+    DIENVELOPE envelope;
+    DIAXISOFFSETS_CDESC axisOffsets;
+} DIEFFECT;
+
+typedef struct tagDSBCAPS {
+    long lSize;
+    CONST_DSBCAPSFLAGS lFlags;
+    long lBufferBytes;
+    long lUnlockTransferRate;
+    long lPlayCpuOverhead;
+} DSBCAPS;
+
+typedef struct tagDSEFFECTDESC {
+    long lSize;
+    long lFlags;
+    BSTR guidDSFXClass;
+    long lReserved;
+    long lReserved2;
+} DSEFFECTDESC;
+
+typedef struct tagDSCAPS {
+    long lSize;
+    CONST_DSCAPSFLAGS lFlags;
+    long lMinSecondarySampleRate;
+    long lMaxSecondarySampleRate;
+    long lPrimaryBuffers;
+    long lMaxHwMixingAllBuffers;
+    long lMaxHwMixingStaticBuffers;
+    long lMaxHwMixingStreamingBuffers;
+    long lFreeHwMixingAllBuffers;
+    long lFreeHwMixingStaticBuffers;
+    long lFreeHwMixingStreamingBuffers;
+    long lMaxHw3DAllBuffers;
+    long lMaxHw3DStaticBuffers;
+    long lMaxHw3DStreamingBuffers;
+    long lFreeHw3DAllBuffers;
+    long lFreeHw3DStaticBuffers;
+    long lFreeHw3DStreamingBuffers;
+    long lTotalHwMemBytes;
+    long lFreeHwMemBytes;
+    long lMaxContigFreeHwMemBytes;
+    long lUnlockTransferRateHwBuffers;
+    long lPlayCpuOverheadSwBuffers;
+    long lReserved1;
+    long lReserved2;
+} DSCAPS;
+
+typedef struct tagDS3DLISTENER {
+    long lSize;
+    D3DVECTOR vPosition;
+    D3DVECTOR vVelocity;
+    D3DVECTOR vOrientFront;
+    D3DVECTOR vOrientTop;
+    float distanceFactor;
+    float rolloffFactor;
+    float dopplerFactor;
+} DS3DLISTENER;
+
+typedef struct tagDSCBUFFERDESC {
+    long lSize;
+    CONST_DSCBCAPSFLAGS lFlags;
+    long lBufferBytes;
+    long lReserved;
+    WAVEFORMATEX fxFormat;
+    BSTR guid3DAlgorithm;
+} DSCBUFFERDESC;
+
+typedef struct tagDS3DBUFFER {
+    long lSize;
+    D3DVECTOR vPosition;
+    D3DVECTOR vVelocity;
+    long lInsideConeAngle;
+    long lOutsideConeAngle;
+    D3DVECTOR vConeOrientation;
+    long lConeOutsideVolume;
+    float minDistance;
+    float maxDistance;
+    CONST_DS3DMODEFLAGS lMode;
+} DS3DBUFFER;
+
+typedef struct tagDIDEVICEIMAGEINFO {
+    BSTR ImagePath;
+    long flags;
+    long ViewID;
+    RECT OverlayRect;
+    long ObjId;
+    long ValidPts;
+    POINT CalloutLine[5];
+    RECT CalloutRect;
+    long TextAlign;
+} DIDEVICEIMAGEINFO;
+
+typedef struct tagDIDEVICEIMAGEINFOHEADER {
+    long Views;
+    long Buttons;
+    long Axes;
+    long POVs;
+    long ImageCount;
+    SAFEARRAY(DIDEVICEIMAGEINFO) Images;
+} DIDEVICEIMAGEINFOHEADER;
+
+typedef struct tagDICOLORSET {
+    long cTextFore;
+    long cTextHighlight;
+    long cCalloutLine;
+    long cCalloutHighlight;
+    long cBorder;
+    long cControlFill;
+    long cHighlightFill;
+    long cAreaFill;
+} DICOLORSET;
+
+typedef struct tagDICONFIGUREDEVICESPARAMS {
+    long UserCount;
+    SAFEARRAY(BSTR) UserNames;
+    long FormatCount;
+    SAFEARRAY(DIACTIONFORMAT) ActionFormats;
+    long hwnd;
+    DICOLORSET dics;
+    IUnknown *DDSTarget;
+} DICONFIGUREDEVICESPARAMS;
+
+typedef struct tagDSCCAPS {
+    long lSize;
+    CONST_DSCCAPSFLAGS lFlags;
+    CONST_WAVEFORMATFLAGS lFormats;
+    long lChannels;
+} DSCCAPS;
+
+typedef struct tagDMUS_NOTIFICATION_PMSG {
+    long lFlags;
+    long ctTime;
+    long mtTime;
+    long lNotificationType;
+    long lNotificationOption;
+    long lField1;
+    long lField2;
+    IUnknown *User;
+} DMUS_NOTIFICATION_PMSG;
+
 //Interfaces
 
 [
@@ -2738,11 +3924,2679 @@ interface ID3DX8 : IUnknown {
     );
 };
 
-//Coclasses
+[
+    object,
+    uuid(9f76fb03-8e92-11d1-8808-00c04fc2c603),
+    helpstring("DirectSound3DBuffer Interface"),
+    local
+]
+interface DirectSound3DBuffer8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT GetDirectSoundBuffer(
+        [out, retval] DirectSoundSecondaryBuffer8 **retVal
+    );
+    HRESULT GetAllParameters(
+        [in, out] DS3DBUFFER *buffer
+    );
+    HRESULT GetConeAngles(
+        [in, out] long *inCone,
+        [in, out] long *outCone
+    );
+    HRESULT GetConeOrientation(
+        [in, out] D3DVECTOR *orientation
+    );
+    HRESULT GetConeOutsideVolume(
+        [out, retval] long *coneOutsideVolume
+    );
+    HRESULT GetMaxDistance(
+        [out, retval] float *maxDistance
+    );
+    HRESULT GetMinDistance(
+        [out, retval] float *minDistance
+    );
+    HRESULT GetMode(
+        [out, retval] CONST_DS3DMODEFLAGS *mode
+    );
+    HRESULT GetPosition(
+        [in, out] D3DVECTOR *position
+    );
+    HRESULT GetVelocity(
+        [in, out] D3DVECTOR *velocity
+    );
+    HRESULT SetAllParameters(
+        [in] DS3DBUFFER *buffer,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetConeAngles(
+        [in] long inCone,
+        [in] long outCone,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetConeOrientation(
+        [in] float x,
+        [in] float y,
+        [in] float z,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetConeOutsideVolume(
+        [in] long coneOutsideVolume,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetMaxDistance(
+        [in] float maxDistance,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetMinDistance(
+        [in] float minDistance,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetMode(
+        [in] CONST_DS3DMODEFLAGS mode,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetPosition(
+        [in] float x,
+        [in] float y,
+        [in] float z,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetVelocity(
+        [in] float x,
+        [in] float y,
+        [in] float z,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+};
 
 [
-    uuid(58356c5d-0bfd-48ed-93c5-f4520b6233de),
-    helpstring("D3DX8"),
-    threading(both)
+    object,
+    uuid(9f76fb02-8e92-11d1-8808-00c04fc2c603),
+    helpstring("DirectSound3dListener Interface"),
+    local
 ]
-coclass D3DX8 { interface ID3DX8; };
+interface DirectSound3DListener8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT GetAllParameters(
+        [in, out] DS3DLISTENER *listener
+    );
+    HRESULT GetDistanceFactor(
+        [out, retval] float *distanceFactor
+    );
+    HRESULT GetDopplerFactor(
+        [out, retval] float *dopplerFactor
+    );
+    HRESULT GetOrientation(
+        [in, out] D3DVECTOR *orientFront,
+        [in, out] D3DVECTOR *orientTop
+    );
+    HRESULT GetPosition(
+        [out] D3DVECTOR *position
+    );
+    HRESULT GetRolloffFactor(
+        [out, retval] float *rolloffFactor
+    );
+    HRESULT GetVelocity(
+        [out, retval] D3DVECTOR *velocity
+    );
+    HRESULT SetAllParameters(
+        [in] DS3DLISTENER *listener,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetDistanceFactor(
+        [in] float distanceFactor,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetDopplerFactor(
+        [in] float dopplerFactor,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetOrientation(
+        [in] float xFront,
+        [in] float yFront,
+        [in] float zFront,
+        [in] float xTop,
+        [in] float yTop,
+        [in] float zTop,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetPosition(
+        [in] float x,
+        [in] float y,
+        [in] float z,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetRolloffFactor(
+        [in] float rolloffFactor,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT SetVelocity(
+        [in] float x,
+        [in] float y,
+        [in] float z,
+        [in] CONST_DS3DAPPLYFLAGS applyFlag
+    );
+    HRESULT CommitDeferredSettings(
+    );
+    HRESULT GetDirectSoundBuffer(
+        [out, retval] DirectSoundPrimaryBuffer8 **retVal
+    );
+};
+
+[
+    object,
+    uuid(4e6f040e-03fb-4ba1-897c-2265700d5368),
+    helpstring("DirectSoundPrimaryBuffer Interface"),
+    local
+]
+interface DirectSoundPrimaryBuffer8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT GetDirectSound3DListener(
+        [out, retval] DirectSound3DListener8 **lpdsl
+    );
+    HRESULT GetCaps(
+        [in, out] DSBCAPS *caps
+    );
+    HRESULT GetCurrentPosition(
+        [out] DSCURSORS *cursors
+    );
+    HRESULT GetFormat(
+        [in, out] WAVEFORMATEX *format
+    );
+    HRESULT GetVolume(
+        [out, retval] long *volume
+    );
+    HRESULT GetPan(
+        [out, retval] long *pan
+    );
+    HRESULT GetStatus(
+        [out, retval] CONST_DSBSTATUSFLAGS *status
+    );
+    HRESULT Initialize(
+        [in] DirectSound8 *directSound,
+        [in, out] DSBUFFERDESC *bufferDesc,
+        [in, out] unsigned char *wbuf
+    );
+    HRESULT WriteBuffer(
+        [in] long start,
+        [in] long size,
+        [in] void *buffer,
+        [in] CONST_DSBLOCKFLAGS flags
+    );
+    HRESULT ReadBuffer(
+        [in] long start,
+        [in] long size,
+        [in] void *buffer,
+        [in] CONST_DSBLOCKFLAGS flags
+    );
+    HRESULT Play(
+        [in] CONST_DSBPLAYFLAGS flags
+    );
+    HRESULT SetFormat(
+        [in] WAVEFORMATEX *format
+    );
+    HRESULT SetVolume(
+        [in] long volume
+    );
+    HRESULT SetPan(
+        [in] long pan
+    );
+    HRESULT Stop(
+    );
+    HRESULT Restore(
+    );
+};
+
+[
+    object,
+    uuid(9f76fb00-8e92-11d1-8808-00c04fc2c603),
+    helpstring("DirectSound Interface"),
+    local
+]
+interface DirectSound8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT CreateSoundBuffer(
+        [in] DSBUFFERDESC *bufferDesc,
+        [out, retval] DirectSoundSecondaryBuffer8 **soundBuffer
+    );
+    HRESULT CreateSoundBufferFromFile(
+        [in] BSTR filename,
+        [in, out] DSBUFFERDESC *bufferDesc,
+        [out, retval] DirectSoundSecondaryBuffer8 **soundBuffer
+    );
+    HRESULT CreateSoundBufferFromResource(
+        [in] BSTR dll,
+        [in] BSTR resourceName,
+        [in, out] DSBUFFERDESC *bufferDesc,
+        [out, retval] DirectSoundSecondaryBuffer8 **soundBuffer
+    );
+    HRESULT GetCaps(
+        [in, out] DSCAPS *caps
+    );
+    HRESULT DuplicateSoundBuffer(
+        [in] DirectSoundSecondaryBuffer8 *original,
+        [out, retval] DirectSoundSecondaryBuffer8 **duplicate
+    );
+    HRESULT SetCooperativeLevel(
+        [in] long hwnd,
+        [in] CONST_DSSCLFLAGS level
+    );
+    HRESULT GetSpeakerConfig(
+        [out, retval] CONST_DSSPEAKERFLAGS *speakerConfig
+    );
+    HRESULT SetSpeakerConfig(
+        [in] CONST_DSSPEAKERFLAGS speakerConfig
+    );
+    HRESULT CreatePrimarySoundBuffer(
+        [in] DSBUFFERDESC *bufferDesc,
+        [out, retval] DirectSoundPrimaryBuffer8 **soundBuffer
+    );
+};
+
+[
+    object,
+    uuid(9f76fb01-8e92-11d1-8808-00c04fc2c603),
+    helpstring("DirectSoundBuffer Interface"),
+    local
+]
+interface DirectSoundSecondaryBuffer8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT GetDirectSound3DBuffer(
+        [out, retval] DirectSound3DBuffer8 **lpdsb
+    );
+    HRESULT GetCaps(
+        [in, out] DSBCAPS *caps
+    );
+    HRESULT GetCurrentPosition(
+        [out] DSCURSORS *cursors
+    );
+    HRESULT GetFormat(
+        [in, out] WAVEFORMATEX *format
+    );
+    HRESULT GetVolume(
+        [out, retval] long *volume
+    );
+    HRESULT GetPan(
+        [out, retval] long *pan
+    );
+    HRESULT GetFrequency(
+        [out, retval] long *frequency
+    );
+    HRESULT GetStatus(
+        [out, retval] CONST_DSBSTATUSFLAGS *status
+    );
+    HRESULT Initialize(
+        [in] DirectSound8 *directSound,
+        [in, out] DSBUFFERDESC *bufferDesc,
+        [in, out] unsigned char *wbuf
+    );
+    HRESULT WriteBuffer(
+        [in] long start,
+        [in] long size,
+        [in] void *buffer,
+        [in] CONST_DSBLOCKFLAGS flags
+    );
+    HRESULT ReadBuffer(
+        [in] long start,
+        [in] long size,
+        [in] void *buffer,
+        [in] CONST_DSBLOCKFLAGS flags
+    );
+    HRESULT Play(
+        [in] CONST_DSBPLAYFLAGS flags
+    );
+    HRESULT SetCurrentPosition(
+        [in] long newPosition
+    );
+    HRESULT SetVolume(
+        [in] long volume
+    );
+    HRESULT SetPan(
+        [in] long pan
+    );
+    HRESULT SetFrequency(
+        [in] long frequency
+    );
+    HRESULT Stop(
+    );
+    HRESULT Restore(
+    );
+    HRESULT SetNotificationPositions(
+        long nElements,
+        SAFEARRAY(DSBPOSITIONNOTIFY) *psa
+    );
+    HRESULT SaveToFile(
+        [in] BSTR filename
+    );
+    HRESULT SetFX(
+        [in] long lEffectsCount,
+        SAFEARRAY(DSEFFECTDESC) *buffers,
+        SAFEARRAY(long) *lResultIDs
+    );
+    HRESULT AcquireResources(
+        [in] long lFlags,
+        [in, out] SAFEARRAY(long) *lEffectsResults
+    );
+    HRESULT GetObjectinPath(
+        [in] BSTR guidFX,
+        [in] long lIndex,
+        [in] BSTR iidInterface,
+        [out, retval] IUnknown **ret
+    );
+};
+
+[
+    object,
+    uuid(9f76fb05-8e92-11d1-8808-00c04fc2c603),
+    helpstring("DirectSoundCaptureBuffer Interface"),
+    local
+]
+interface DirectSoundCaptureBuffer8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT GetCaps(
+        [in, out] DSCBCAPS *caps
+    );
+    HRESULT GetCurrentPosition(
+        [in, out] DSCURSORS *cursors
+    );
+    HRESULT GetFormat(
+        [in, out] WAVEFORMATEX *waveformat
+    );
+    HRESULT GetStatus(
+        [out, retval] CONST_DSCBSTATUSFLAGS *status
+    );
+    HRESULT Initialize(
+        [in] DirectSoundCaptureBuffer8 *captureBuffer,
+        [in] DSCBUFFERDESC *bufferDesc
+    );
+    HRESULT start(
+        [in] CONST_DSCBSTARTFLAGS flags
+    );
+    HRESULT Stop(
+    );
+    HRESULT WriteBuffer(
+        [in] long start,
+        [in] long size,
+        [in] void *buffer,
+        [in] CONST_DSCBLOCKFLAGS flags
+    );
+    HRESULT ReadBuffer(
+        [in] long start,
+        [in] long size,
+        [in] void *buffer,
+        [in] CONST_DSCBLOCKFLAGS flags
+    );
+    HRESULT SetNotificationPositions(
+        long nElements,
+        SAFEARRAY(DSBPOSITIONNOTIFY) *psa
+    );
+};
+
+[
+    object,
+    uuid(9f76fb04-8e92-11d1-8808-00c04fc2c603),
+    helpstring("DirectSoundCapture Interface"),
+    local
+]
+interface DirectSoundCapture8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT CreateCaptureBuffer(
+        [in] DSCBUFFERDESC *bufferDesc,
+        [out, retval] DirectSoundCaptureBuffer8 **ret
+    );
+    HRESULT GetCaps(
+        [in, out] DSCCAPS *caps
+    );
+};
+
+[
+    object,
+    uuid(9f76fb07-8e92-11d1-8808-00c04fc2c603),
+    helpstring("DSEnum Interface"),
+    local
+]
+interface DirectSoundEnum8 : IUnknown {
+    HRESULT GetGuid(
+        [in] long index,
+        [out, retval] BSTR *guid
+    );
+    HRESULT GetDescription(
+        [in] long index,
+        [out, retval] BSTR *guid
+    );
+    HRESULT GetName(
+        [in] long index,
+        [out, retval] BSTR *guid
+    );
+    HRESULT GetCount(
+        [out, retval] long *count
+    );
+};
+
+[
+    object,
+    uuid(9f76fa05-8e92-11d1-8808-00c04fc2c602),
+    helpstring("I_dxj_DirectInputDeviceObjectInstance Interface"),
+    local
+]
+interface DirectInputDeviceObjectInstance : IUnknown {
+    HRESULT GetGuidType(
+        [out, retval] BSTR *ret
+    );
+    HRESULT GetOfs(
+        [out, retval] long *ret
+    );
+    HRESULT GetType(
+        [out, retval] long *ret
+    );
+    HRESULT GetFlags(
+        [out, retval] CONST_DIDEVICEOBJINSTANCEFLAGS *ret
+    );
+    HRESULT GetName(
+        [out, retval] BSTR *ret
+    );
+    HRESULT GetCollectionNumber(
+        [out, retval] short *ret
+    );
+    HRESULT GetDesignatorIndex(
+        [out, retval] short *ret
+    );
+    HRESULT GetUsagePage(
+        [out, retval] short *ret
+    );
+    HRESULT GetUsage(
+        [out, retval] short *ret
+    );
+    HRESULT GetDimension(
+        [out, retval] long *ret
+    );
+    HRESULT GetExponent(
+        [out, retval] short *ret
+    );
+};
+
+[
+    object,
+    uuid(9f76fa08-8e92-11d1-8808-00c04fc2c602),
+    helpstring("I_dxj_DIEnumDeviceObjects Interface"),
+    local
+]
+interface DirectInputEnumDeviceObjects : IUnknown {
+    HRESULT GetItem(
+        [in] long index,
+        [out, retval] DirectInputDeviceObjectInstance **info
+    );
+    HRESULT GetCount(
+        [out, retval] long *count
+    );
+};
+
+[
+    object,
+    uuid(819d20c2-8ad2-11d3-ac85-00c04fc2c602),
+    helpstring("I_dxj_DirectInputDeviceInstance8 Interface"),
+    local
+]
+interface DirectInputDeviceInstance8 : IUnknown {
+    HRESULT GetGuidInstance(
+        [out, retval] BSTR *ret
+    );
+    HRESULT GetGuidProduct(
+        [out, retval] BSTR *ret
+    );
+    HRESULT GetProductName(
+        [out, retval] BSTR *ret
+    );
+    HRESULT GetInstanceName(
+        [out, retval] BSTR *ret
+    );
+    HRESULT GetGuidFFDriver(
+        [out, retval] BSTR *ret
+    );
+    HRESULT GetUsagePage(
+        [out, retval] short *ret
+    );
+    HRESULT GetUsage(
+        [out, retval] short *ret
+    );
+    HRESULT GetDevType(
+        [out, retval] long *ret
+    );
+};
+
+[
+    object,
+    uuid(bcaa7da9-f7ef-11d2-93fd-00c04fc2c602),
+    helpstring("I_dxj_DirectInputEffect Interface"),
+    local
+]
+interface DirectInputEffect : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT Download(
+    );
+    HRESULT GetEffectGuid(
+        [out, retval] BSTR *guid
+    );
+    HRESULT GetEffectStatus(
+        [out, retval] long *ret
+    );
+    HRESULT start(
+        [in] long iterations,
+        [in] long flags
+    );
+    HRESULT Stop(
+    );
+    HRESULT Unload(
+    );
+    HRESULT SetParameters(
+        [in] DIEFFECT *effectinfo,
+        [in] CONST_DIEPFLAGS flags
+    );
+    HRESULT GetParameters(
+        [in, out] DIEFFECT *effectinfo
+    );
+};
+
+[
+    object,
+    uuid(bcaa7daa-f7ef-11d2-93fd-00c04fc2c602),
+    helpstring("I_dxj_DirectInputEnumEffects Interface"),
+    local
+]
+interface DirectInputEnumEffects : IUnknown {
+    HRESULT GetCount(
+        [out, retval] long *ret
+    );
+    HRESULT GetEffectGuid(
+        [in] long i,
+        [out, retval] BSTR *ret
+    );
+    HRESULT GetType(
+        [in] long i,
+        [out, retval] CONST_DIEFTFLAGS *ret
+    );
+    HRESULT GetStaticParams(
+        [in] long i,
+        [out, retval] CONST_DIEPFLAGS *ret
+    );
+    HRESULT GetDynamicParams(
+        [in] long i,
+        [out, retval] CONST_DIEPFLAGS *ret
+    );
+    HRESULT GetName(
+        [in] long i,
+        [out, retval] BSTR *ret
+    );
+};
+
+[
+    object,
+    uuid(819d20c3-8ad2-11d3-ac85-00c04fc2c602),
+    helpstring("I_dxj_DirectInputDevice8 Interface"),
+    local
+]
+interface DirectInputDevice8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT Acquire(
+    );
+    HRESULT GetDeviceObjectsEnum(
+        [in] CONST_DIDFTFLAGS flags,
+        [out, retval] DirectInputEnumDeviceObjects **ppret
+    );
+    HRESULT GetCapabilities(
+        [in, out] DIDEVCAPS *caps
+    );
+    HRESULT GetDeviceData(
+        [in, out] SAFEARRAY(DIDEVICEOBJECTDATA) *deviceObjectDataArray,
+        [in] CONST_DIDGDDFLAGS flags,
+        [out, retval] long *c
+    );
+    HRESULT GetDeviceInfo(
+        [out, retval] DirectInputDeviceInstance8 **deviceInstance
+    );
+    HRESULT GetDeviceStateKeyboard(
+        [in, out] DIKEYBOARDSTATE *state
+    );
+    HRESULT GetDeviceStateMouse(
+        [in, out] DIMOUSESTATE *state
+    );
+    HRESULT GetDeviceStateMouse2(
+        [in, out] DIMOUSESTATE2 *state
+    );
+    HRESULT GetDeviceStateJoystick(
+        [in, out] DIJOYSTATE *state
+    );
+    HRESULT GetDeviceStateJoystick2(
+        [in, out] DIJOYSTATE2 *state
+    );
+    HRESULT GetDeviceState(
+        [in] long cb,
+        [in] void *state
+    );
+    HRESULT GetObjectInfo(
+        [in] long obj,
+        [in] CONST_DIPHFLAGS how,
+        [out, retval] DirectInputDeviceObjectInstance **ret
+    );
+    HRESULT GetProperty(
+        [in] BSTR guid,
+        [out] void *propertyInfo
+    );
+    HRESULT RunControlPanel(
+        [in] long hwnd
+    );
+    HRESULT SetCooperativeLevel(
+        [in] long hwnd,
+        [in] CONST_DISCLFLAGS flags
+    );
+    HRESULT SetCommonDataFormat(
+        [in] CONST_DICOMMONDATAFORMATS format
+    );
+    HRESULT SetDataFormat(
+        [in] DIDATAFORMAT *format,
+        SAFEARRAY(DIOBJECTDATAFORMAT) *formatArray
+    );
+    HRESULT SetEventNotification(
+        [in] long hEvent
+    );
+    HRESULT SetProperty(
+        [in] BSTR guid,
+        [in] void *propertyInfo
+    );
+    HRESULT Unacquire(
+    );
+    HRESULT Poll(
+    );
+    HRESULT CreateEffect(
+        [in] BSTR effectGuid,
+        [in] DIEFFECT *effectinfo,
+        [out, retval] DirectInputEffect **ret
+    );
+    HRESULT CreateCustomEffect(
+        [in] DIEFFECT *effectinfo,
+        [in] long channels,
+        [in] long samplePeriod,
+        [in] long nSamples,
+        [in] SAFEARRAY(long) *sampledata,
+        [out, retval] DirectInputEffect **ret
+    );
+    HRESULT SendDeviceData(
+        [in] long count,
+        [in] SAFEARRAY(DIDEVICEOBJECTDATA) *data,
+        [in] CONST_DISDDFLAGS flags,
+        [out, retval] long *retcount
+    );
+    HRESULT SendForceFeedbackCommand(
+        [in] CONST_DISFFCFLAGS flags
+    );
+    HRESULT GetForceFeedbackState(
+        [out, retval] CONST_DIGFFSFLAGS *state
+    );
+    HRESULT GetEffectsEnum(
+        [in] CONST_DIEFTFLAGS effType,
+        [out, retval] DirectInputEnumEffects **ret
+    );
+    HRESULT BuildActionMap(
+        [in, out] DIACTIONFORMAT *format,
+        [in] BSTR username,
+        [in] long flags
+    );
+    HRESULT SetActionMap(
+        [in, out] DIACTIONFORMAT *format,
+        [in] BSTR username,
+        [in] long flags
+    );
+    HRESULT GetImageInfo(
+        [out] DIDEVICEIMAGEINFOHEADER *info
+    );
+    HRESULT GetImageInfoCount(
+        [out, retval] long *c
+    );
+    HRESULT WriteEffectToFile(
+        [in] BSTR filename,
+        [in] long flags,
+        [in] BSTR guid,
+        [in] BSTR name,
+        [in] DIEFFECT *coverEffect
+    );
+    HRESULT CreateEffectFromFile(
+        [in] BSTR filename,
+        [in] long flags,
+        [in] BSTR effectName,
+        [out, retval] DirectInputEffect **ret
+    );
+};
+
+[
+    object,
+    uuid(819d20c4-8ad2-11d3-ac85-00c04fc2c602),
+    helpstring("I_dxj_DIEnumDevices8 Interface"),
+    local
+]
+interface DirectInputEnumDevices8 : IUnknown {
+    HRESULT GetItem(
+        [in] long index,
+        [out, retval] DirectInputDeviceInstance8 **info
+    );
+    HRESULT GetCount(
+        [out, retval] long *count
+    );
+};
+
+[
+    object,
+    uuid(819d20c1-8ad2-11d3-ac85-00c04fc2c602),
+    helpstring("I_dxj_DirectInput8 Interface"),
+    local
+]
+interface DirectInput8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT CreateDevice(
+        [in] BSTR guid,
+        [out, retval] DirectInputDevice8 **dev
+    );
+    HRESULT GetDIDevices(
+        [in] CONST_DI8DEVICETYPE deviceType,
+        [in] CONST_DIENUMDEVICESFLAGS flags,
+        [out, retval] DirectInputEnumDevices8 **retVal
+    );
+    HRESULT GetDeviceStatus(
+        [in] BSTR guid,
+        [out, retval] VARIANT_BOOL *status
+    );
+    HRESULT RunControlPanel(
+        [in] long hwndOwner
+    );
+    HRESULT GetDevicesBySemantics(
+        [in] BSTR str1,
+        [in] DIACTIONFORMAT *format,
+        [in] long flags,
+        [out, retval] DirectInputEnumDevices8 **ret
+    );
+    HRESULT ConfigureDevices(
+        [in] long hEvent,
+        [in] DICONFIGUREDEVICESPARAMS *CDParams,
+        [in] long flags
+    );
+};
+
+[
+    object,
+    uuid(fafa35a5-8b72-11d2-90b2-00c04fc2c603),
+    helpstring("DirectMusicChordMap Interface"),
+    local
+]
+interface DirectMusicChordMap8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT GetScale(
+        [out, retval] long *scale
+    );
+};
+
+[
+    object,
+    uuid(fafa35a8-8b72-11d2-90b2-00c04fc2c603),
+    helpstring("DirectMusicCollection Interface"),
+    local
+]
+interface DirectMusicCollection8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+};
+
+[
+    object,
+    uuid(fafa35a4-8b72-11d2-90b2-00c04fc2c603),
+    helpstring("DirectMusicStyle Interface"),
+    local
+]
+interface DirectMusicStyle8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT GetBandName(
+        [in] long index,
+        [out, retval] BSTR *name
+    );
+    HRESULT GetBandCount(
+        [out, retval] long *count
+    );
+    HRESULT GetBand(
+        [in] BSTR name,
+        [out, retval] DirectMusicBand8 **ret
+    );
+    HRESULT GetDefaultBand(
+        [out, retval] DirectMusicBand8 **ret
+    );
+    HRESULT GetMotifName(
+        [in] long index,
+        [out, retval] BSTR *name
+    );
+    HRESULT GetMotifCount(
+        [out, retval] long *count
+    );
+    HRESULT GetMotif(
+        [in] BSTR name,
+        [out, retval] DirectMusicSegment8 **ret
+    );
+    HRESULT GetTimeSignature(
+        [in, out] DMUS_TIMESIGNATURE *pTimeSig
+    );
+    HRESULT GetTempo(
+        [out, retval] double *pTempo
+    );
+};
+
+[
+    object,
+    uuid(fafa35a1-8b72-11d2-90b2-00c04fc2c603),
+    helpstring("DirectMusicSegment Interface"),
+    local
+]
+interface DirectMusicSegment8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT Clone(
+        [in] long mtStart,
+        [in] long mtEnd,
+        [out, retval] DirectMusicSegment8 **ppSegment
+    );
+    HRESULT SetStartPoint(
+        [in] long mtStart
+    );
+    HRESULT GetStartPoint(
+        [out, retval] long *pmtStart
+    );
+    HRESULT SetLoopPoints(
+        [in] long mtStart,
+        [in] long mtEnd
+    );
+    HRESULT GetLoopPointStart(
+        [out, retval] long *pmtStart
+    );
+    HRESULT GetLoopPointEnd(
+        [out, retval] long *pmtEnd
+    );
+    HRESULT GetLength(
+        [out, retval] long *pmtLength
+    );
+    HRESULT SetLength(
+        [in] long mtLength
+    );
+    HRESULT GetRepeats(
+        [out, retval] long *lRepeats
+    );
+    HRESULT SetRepeats(
+        [in] long lRepeats
+    );
+    HRESULT Download(
+        [in] IUnknown *downloadpath
+    );
+    HRESULT Unload(
+        [in] IUnknown *downloadpath
+    );
+    HRESULT SetAutoDownloadEnable(
+        [in] VARIANT_BOOL b
+    );
+    HRESULT SetTempoEnable(
+        [in] VARIANT_BOOL b
+    );
+    HRESULT SetTimeSigEnable(
+        [in] VARIANT_BOOL b
+    );
+    HRESULT SetStandardMidiFile(
+    );
+    HRESULT ConnectToCollection(
+        [in] DirectMusicCollection8 *c
+    );
+    HRESULT GetAudioPathConfig(
+        [out, retval] IUnknown **ret
+    );
+    HRESULT GetStyle(
+        [in] long lTrack,
+        [out, retval] DirectMusicStyle8 **ret
+    );
+    HRESULT GetChordMap(
+        [in] long lTrack,
+        [in] long mtTime,
+        [in, out] long *mtUntil,
+        [out, retval] DirectMusicChordMap8 **ret
+    );
+    HRESULT GetName(
+        [out, retval] BSTR *ret
+    );
+};
+
+[
+    object,
+    uuid(fafa35a6-8b72-11d2-90b2-00c04fc2c603),
+    helpstring("DirectMusicSegmentState Interface"),
+    local
+]
+interface DirectMusicSegmentState8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT GetRepeats(
+        [out, retval] long *repeats
+    );
+    HRESULT GetSeek(
+        [out, retval] long *seek
+    );
+    HRESULT GetStartPoint(
+        [out, retval] long *seek
+    );
+    HRESULT GetStartTime(
+        [out, retval] long *seek
+    );
+    HRESULT GetSegment(
+        [out, retval] DirectMusicSegment8 **segment
+    );
+};
+
+[
+    object,
+    uuid(a4a8597a-ba7a-4648-b321-1701598844d8),
+    helpstring("DirectMusicAudioPath Interface"),
+    local
+]
+interface DirectMusicAudioPath8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT GetObjectinPath(
+        [in] long lPChannel,
+        [in] CONST_DMUSIC_PATH lStage,
+        [in] long lBuffer,
+        [in] BSTR guidObject,
+        [in] long lIndex,
+        [in] BSTR iidInterface,
+        [out, retval] IUnknown **ppObject
+    );
+    HRESULT Activate(
+        [in] VARIANT_BOOL fActive
+    );
+    HRESULT SetVolume(
+        [in] long lVolume,
+        [in] long lDuration
+    );
+};
+
+[
+    object,
+    uuid(fafa35a7-8b72-11d2-90b2-00c04fc2c603),
+    helpstring("DirectMusicPerformance Interface"),
+    local
+]
+interface DirectMusicPerformance8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT CloseDown(
+    );
+    HRESULT GetSegmentState(
+        [in] long mtTime,
+        [out, retval] DirectMusicSegmentState8 **ret
+    );
+    HRESULT Invalidate(
+        [in] long mtTime,
+        [in] long flags
+    );
+    HRESULT IsPlaying(
+        [in] DirectMusicSegment8 *segment,
+        [in] DirectMusicSegmentState8 *segmentState,
+        [out, retval] VARIANT_BOOL *b
+    );
+    HRESULT AddNotificationType(
+        [in] CONST_DMUS_NOTIFICATION_TYPE type
+    );
+    HRESULT RemoveNotificationType(
+        [in] CONST_DMUS_NOTIFICATION_TYPE type
+    );
+    HRESULT SetNotificationHandle(
+        [in] long hnd
+    );
+    HRESULT GetNotificationPMSG(
+        [in, out] DMUS_NOTIFICATION_PMSG *message,
+        [out, retval] VARIANT_BOOL *success
+    );
+    HRESULT MusicToClockTime(
+        [in] long mtTime,
+        [out, retval] long *ctTime
+    );
+    HRESULT ClockToMusicTime(
+        [in] long ctTime,
+        [out, retval] long *mtTime
+    );
+    HRESULT GetMusicTime(
+        [out, retval] long *ret
+    );
+    HRESULT GetClockTime(
+        [out, retval] long *ret
+    );
+    HRESULT GetPrepareTime(
+        [out, retval] long *lMilliSeconds
+    );
+    HRESULT GetBumperLength(
+        [out, retval] long *lMilliSeconds
+    );
+    HRESULT GetLatencyTime(
+        [out, retval] long *ctTime
+    );
+    HRESULT GetQueueTime(
+        [out, retval] long *ctTime
+    );
+    HRESULT GetResolvedTime(
+        [in] long ctTime,
+        [in] long flags,
+        [out, retval] long *ret
+    );
+    HRESULT SetPrepareTime(
+        [in] long lMilliSeconds
+    );
+    HRESULT SetBumperLength(
+        [in] long lMilliSeconds
+    );
+    HRESULT AdjustTime(
+        [in] long tAmount
+    );
+    HRESULT SetMasterAutoDownload(
+        [in] VARIANT_BOOL b
+    );
+    HRESULT GetMasterAutoDownload(
+        [out, retval] VARIANT_BOOL *b
+    );
+    HRESULT SetMasterTempo(
+        [in] float tempo
+    );
+    HRESULT GetMasterTempo(
+        [out, retval] float *tempo
+    );
+    HRESULT SetMasterVolume(
+        [in] long vol
+    );
+    HRESULT GetMasterVolume(
+        [out, retval] long *v
+    );
+    HRESULT SetMasterGrooveLevel(
+        [in] short level
+    );
+    HRESULT GetMasterGrooveLevel(
+        [out, retval] short *level
+    );
+    HRESULT Reset(
+        [in] long resetflags
+    );
+    HRESULT GetStyle(
+        [in] long mtTime,
+        [in, out] long *mtUntil,
+        [out, retval] DirectMusicStyle8 **ret
+    );
+    HRESULT GetChordMap(
+        [in] long mtTime,
+        [in, out] long *mtUntil,
+        [out, retval] DirectMusicChordMap8 **ret
+    );
+    HRESULT GetCommand(
+        [in] long mtTime,
+        [in, out] long *mtUntil,
+        [out, retval] unsigned char *command
+    );
+    HRESULT GetGrooveLevel(
+        [in] long mtTime,
+        [in, out] long *mtUntil,
+        [out, retval] unsigned char *level
+    );
+    HRESULT GetTempo(
+        [in] long mtTime,
+        [in, out] long *mtUntil,
+        [out, retval] double *tempo
+    );
+    HRESULT GetTimeSig(
+        [in] long mtTime,
+        [in, out] long *mtUntil,
+        [in, out] DMUS_TIMESIGNATURE *timeSig
+    );
+    HRESULT SendNotePMSG(
+        [in] long lTime,
+        [in] long flags,
+        [in] long channel,
+        [in] DMUS_NOTE_PMSG *msg
+    );
+    HRESULT SendCurvePMSG(
+        [in] long lTime,
+        [in] long flags,
+        [in] long channel,
+        [in] DMUS_CURVE_PMSG *msg
+    );
+    HRESULT SendMIDIPMSG(
+        [in] long lTime,
+        [in] long flags,
+        [in] long channel,
+        [in] unsigned char status,
+        [in] unsigned char byte1,
+        [in] unsigned char byte2
+    );
+    HRESULT SendPatchPMSG(
+        [in] long lTime,
+        [in] long flags,
+        [in] long channel,
+        [in] unsigned char instrument,
+        [in] unsigned char byte1,
+        [in] unsigned char byte2
+    );
+    HRESULT SendTempoPMSG(
+        [in] long lTime,
+        [in] long flags,
+        [in] double tempo
+    );
+    HRESULT SendTransposePMSG(
+        [in] long lTime,
+        [in] long flags,
+        [in] long channel,
+        [in] short transpose
+    );
+    HRESULT SendTimeSigPMSG(
+        [in] long lTime,
+        [in] long flags,
+        [in] DMUS_TIMESIGNATURE *timeSig
+    );
+    HRESULT InitAudio(
+        [in] long hwnd,
+        [in] CONST_DMUS_AUDIO lFlags,
+        [in, out] DMUS_AUDIOPARAMS *audioParams,
+        [in, out, optional] DirectSound8 **directSound,
+        [in, optional] CONST_DMUSIC_STANDARD_AUDIO_PATH lDefaultPathType,
+        [in, optional] long lPChannelCount
+    );
+    HRESULT PlaySegmentEx(
+        [in] IUnknown *source,
+        [in] CONST_DMUS_SEGF_FLAGS lFlags,
+        [in] long startTime,
+        [in, optional] IUnknown *from,
+        [in, optional] IUnknown *audioPath,
+        [out, retval] DirectMusicSegmentState8 **ppSegmentState
+    );
+    HRESULT StopEx(
+        [in] IUnknown *objectToStop,
+        [in] long lStopTime,
+        [in] CONST_DMUS_SEGF_FLAGS lFlags
+    );
+    HRESULT CreateAudioPath(
+        [in] IUnknown *sourceConfig,
+        [in] VARIANT_BOOL fActive,
+        [out, retval] DirectMusicAudioPath8 **ppNewPath
+    );
+    HRESULT CreateStandardAudioPath(
+        [in] CONST_DMUSIC_STANDARD_AUDIO_PATH lType,
+        [in] long lPChannelCount,
+        [in] VARIANT_BOOL fActive,
+        [out, retval] DirectMusicAudioPath8 **ppNewPath
+    );
+    HRESULT SetDefaultAudioPath(
+        [in, out] DirectMusicAudioPath8 *audioPath
+    );
+    HRESULT GetDefaultAudioPath(
+        [out, retval] DirectMusicAudioPath8 **ppAudioPath
+    );
+};
+
+[
+    object,
+    uuid(fafa35a3-8b72-11d2-90b2-00c04fc2c603),
+    helpstring("DirectMusicBand Interface"),
+    local
+]
+interface DirectMusicBand8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT CreateSegment(
+        [out, retval] DirectMusicSegment8 **ret
+    );
+    HRESULT Download(
+        [in] DirectMusicPerformance8 *downloadpath
+    );
+    HRESULT Unload(
+        [in] DirectMusicPerformance8 *downloadpath
+    );
+};
+
+[
+    object,
+    uuid(fafa35a0-8b72-11d2-90b2-00c04fc2c603),
+    helpstring("DirectMusicLoader Interface"),
+    local
+]
+interface DirectMusicLoader8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT LoadSegment(
+        [in] BSTR filename,
+        [out, retval] DirectMusicSegment8 **ret
+    );
+    HRESULT LoadStyle(
+        [in] BSTR filename,
+        [out, retval] DirectMusicStyle8 **ret
+    );
+    HRESULT LoadBand(
+        [in] BSTR filename,
+        [out, retval] DirectMusicBand8 **ret
+    );
+    HRESULT LoadCollection(
+        [in] BSTR filename,
+        [out, retval] DirectMusicCollection8 **ret
+    );
+    HRESULT LoadSegmentFromResource(
+        [in] BSTR moduleName,
+        [in] BSTR resourceName,
+        [out, retval] DirectMusicSegment8 **ret
+    );
+    HRESULT LoadStyleFromResource(
+        [in] BSTR moduleName,
+        [in] BSTR resourceName,
+        [out, retval] DirectMusicStyle8 **ret
+    );
+    HRESULT LoadBandFromResource(
+        [in] BSTR moduleName,
+        [in] BSTR resourceName,
+        [out, retval] DirectMusicBand8 **ret
+    );
+    HRESULT LoadCollectionFromResource(
+        [in] BSTR moduleName,
+        [in] BSTR resourceName,
+        [out, retval] DirectMusicCollection8 **ret
+    );
+    HRESULT SetSearchDirectory(
+        [in] BSTR dir
+    );
+    HRESULT LoadChordMap(
+        [in] BSTR filename,
+        [out, retval] DirectMusicChordMap8 **ret
+    );
+    HRESULT LoadChordMapFromResource(
+        [in] BSTR moduleName,
+        [in] BSTR resourceName,
+        [out, retval] DirectMusicChordMap8 **ret
+    );
+};
+
+[
+    object,
+    uuid(fafa35a2-8b72-11d2-90b2-00c04fc2c603),
+    helpstring("DirectMusicComposer Interface"),
+    local
+]
+interface DirectMusicComposer8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT AutoTransition(
+        [in] DirectMusicPerformance8 *performance,
+        [in] DirectMusicSegment8 *toSeg,
+        [in] long lCommand,
+        [in] long lFlags,
+        [in] DirectMusicChordMap8 *chordmap,
+        [out, retval] DirectMusicSegment8 **ppTransSeg
+    );
+    HRESULT ComposeSegmentFromTemplate(
+        [in] DirectMusicStyle8 *style,
+        [in] DirectMusicSegment8 *templateSeg,
+        [in] short activity,
+        [in] DirectMusicChordMap8 *chordmap,
+        [out, retval] DirectMusicSegment8 **sectionSeg
+    );
+    HRESULT ComposeSegmentFromShape(
+        [in] DirectMusicStyle8 *style,
+        [in] short numberOfMeasures,
+        [in] short shape,
+        [in] short activity,
+        [in] VARIANT_BOOL bIntro,
+        [in] VARIANT_BOOL bEnd,
+        [in] DirectMusicChordMap8 *chordmap,
+        [out, retval] DirectMusicSegment8 **sectionSeg
+    );
+    HRESULT ComposeTransition(
+        [in] DirectMusicSegment8 *fromSeg,
+        [in] DirectMusicSegment8 *toSeg,
+        [in] long mtTime,
+        [in] long lCommand,
+        [in] long lFlags,
+        [in] DirectMusicChordMap8 *chordmap,
+        [out, retval] DirectMusicSegment8 **sectionSeg
+    );
+    HRESULT ComposeTemplateFromShape(
+        [in] short numMeasures,
+        [in] short shape,
+        [in] VARIANT_BOOL bIntro,
+        [in] VARIANT_BOOL bEnd,
+        [in] short endLength,
+        [out, retval] DirectMusicSegment8 **tempSeg
+    );
+    HRESULT ChangeChordMap(
+        [in] DirectMusicSegment8 *segment,
+        [in] VARIANT_BOOL trackScale,
+        [in] DirectMusicChordMap8 *chordmap
+    );
+};
+
+[
+    object,
+    uuid(d1ca9b18-9ed2-43b5-8759-7a5c892d4c5c),
+    helpstring("I_dxj_DirectXEvent8 Interface"),
+    local,
+    oleautomation
+]
+interface DirectXEvent8 : IUnknown {
+    HRESULT DXCallback(
+        [in] long eventid
+    );
+};
+
+[
+    object,
+    uuid(26ae5141-8010-46ea-861c-f9fc0f8b61d9),
+    helpstring("DirectPlayVoice Event Interface"),
+    local,
+    oleautomation
+]
+interface DirectPlayVoiceEvent8 : IUnknown {
+    HRESULT SessionLost(
+        [in] long resultCode
+    );
+    HRESULT ConnectResult(
+        [in] long resultCode
+    );
+    HRESULT DisconnectResult(
+        [in] long resultCode
+    );
+    HRESULT CreateVoicePlayer(
+        [in] long playerID,
+        [in] long flags
+    );
+    HRESULT DeleteVoicePlayer(
+        [in] long playerID
+    );
+    HRESULT HostMigrated(
+        [in] long newHostID,
+        [in, out] DirectPlayVoiceServer8 *newServer
+    );
+    HRESULT InputLevel(
+        [in] long peakLevel,
+        [in] long recordVolume
+    );
+    HRESULT OutputLevel(
+        [in] long peakLevel,
+        [in] long outputVolume
+    );
+    HRESULT PlayerOutputLevel(
+        [in] long sourcePlayerID,
+        [in] long peakLevel
+    );
+    HRESULT PlayerVoiceStart(
+        [in] long sourcePlayerID
+    );
+    HRESULT PlayerVoiceStop(
+        [in] long sourcePlayerID
+    );
+    HRESULT RecordStart(
+        [in] long peakVolume
+    );
+    HRESULT RecordStop(
+        [in] long peakVolume
+    );
+};
+
+[
+    object,
+    uuid(9f76ff0f-8e92-11d1-1515-00c04fc2c313),
+    helpstring("IDirectPlayVoiceServer Interface"),
+    local,
+    oleautomation
+]
+interface DirectPlayVoiceServer8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT Initialize(
+        [in] IUnknown *DplayObj,
+        [in] long lFlags
+    );
+    HRESULT StartSession(
+        [in] DVSESSIONDESC *sessionDesc,
+        [in] long lFlags
+    );
+    HRESULT StopSession(
+        [in] long lFlags
+    );
+    HRESULT GetSessionDesc(
+        [out, retval] DVSESSIONDESC *sessionDesc
+    );
+    HRESULT SetSessionDesc(
+        [in] DVSESSIONDESC *clientConfig
+    );
+    HRESULT GetCaps(
+        [out, retval] DVCAPS *caps
+    );
+    HRESULT GetCompressionTypeCount(
+        [out, retval] long *v1
+    );
+    HRESULT GetCompressionType(
+        [in] long lIndex,
+        [in, out] DVCOMPRESSIONINFO *data,
+        [in] long lFlags
+    );
+    HRESULT SetTransmitTargets(
+        [in] long playerSourceID,
+        [in] SAFEARRAY(long) *playerTargetIDs,
+        [in] long lFlags
+    );
+    HRESULT GetTransmitTargets(
+        [in] long playerSourceID,
+        [in] long lFlags,
+        [out, retval] SAFEARRAY(long) *ret
+    );
+    HRESULT StartServerNotification(
+        [in] DirectPlayVoiceEvent8 *event
+    );
+    HRESULT UnRegisterMessageHandler(
+    );
+};
+
+[
+    object,
+    uuid(9f76ff0f-8e92-11d1-1515-00c04fc2c312),
+    helpstring("IDirectPlayVoiceClient Interface"),
+    local
+]
+interface DirectPlayVoiceClient8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT Initialize(
+        [in] IUnknown *DplayObj,
+        [in] long lFlags
+    );
+    HRESULT Connect(
+        [in] DVSOUNDDEVICECONFIG *soundDeviceConfig,
+        [in] DVCLIENTCONFIG *clientConfig,
+        [in] long lFlags
+    );
+    HRESULT Disconnect(
+        [in] long lFlags
+    );
+    HRESULT GetSessionDesc(
+        [out, retval] DVSESSIONDESC *sessionDesc
+    );
+    HRESULT GetClientConfig(
+        [out, retval] DVCLIENTCONFIG *clientConfig
+    );
+    HRESULT SetClientConfig(
+        [in] DVCLIENTCONFIG *clientConfig
+    );
+    HRESULT GetCaps(
+        [out, retval] DVCAPS *caps
+    );
+    HRESULT GetCompressionTypeCount(
+        [out, retval] long *v1
+    );
+    HRESULT GetCompressionType(
+        [in] long lIndex,
+        [in, out] DVCOMPRESSIONINFO *data,
+        [in] long lFlags
+    );
+    HRESULT SetTransmitTargets(
+        [in] SAFEARRAY(long) *playerIDs,
+        [in] long lFlags
+    );
+    HRESULT GetTransmitTargets(
+        [in] long lFlags,
+        [out, retval] SAFEARRAY(long) *ret
+    );
+    HRESULT SetCurrentSoundDevices(
+        [in] DirectSound8 *directSoundObj,
+        [in] DirectSoundCapture8 *directCaptureObj
+    );
+    HRESULT GetSoundDevices(
+        [in, out] DirectSound8 *directSoundObj,
+        [in, out] DirectSoundCapture8 *directCaptureObj
+    );
+    HRESULT Create3DSoundBuffer(
+        [in] long playerID,
+        [in, optional] DirectSoundSecondaryBuffer8 *buffer,
+        [in, optional] long lPriority,
+        [in, optional] CONST_DSBPLAYFLAGS lFlags,
+        [out, retval] DirectSound3DBuffer8 **userBuffer
+    );
+    HRESULT Delete3DSoundBuffer(
+        [in] long playerID,
+        [in] DirectSound3DBuffer8 *userBuffer
+    );
+    HRESULT GetSoundDeviceConfig(
+        [out, retval] DVSOUNDDEVICECONFIG *soundDeviceConfig
+    );
+    HRESULT StartClientNotification(
+        [in] DirectPlayVoiceEvent8 *event
+    );
+    HRESULT UnRegisterMessageHandler(
+    );
+};
+
+[
+    object,
+    uuid(9f76ff0f-8e92-11d1-1515-00c04fc2c314),
+    helpstring("DirectPlayVoiceTest Interface"),
+    local,
+    oleautomation
+]
+interface DirectPlayVoiceTest8 : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT CheckAudioSetup(
+        [in] BSTR guidPlaybackDevice,
+        [in] BSTR guidCaptureDevice,
+        [in] long hwndOwner,
+        [in] long lFlags,
+        [out, retval] long *v1
+    );
+};
+
+[
+    object,
+    uuid(e7ff12e6-96a5-11d3-ac85-00c04fc2c602),
+    helpstring("I_dxj_DirectXFileObject Interface"),
+    local
+]
+interface DirectXFileObject : IUnknown {
+    HRESULT GetName(
+        [out, retval] BSTR *name
+    );
+    HRESULT GetId(
+        [out, retval] BSTR *name
+    );
+};
+
+[
+    object,
+    uuid(e7ff12e7-96a5-11d3-ac85-00c04fc2c602),
+    helpstring("I_dxj_DirectXFileData Interface"),
+    local
+]
+interface DirectXFileData : IUnknown {
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **ret
+    );
+    HRESULT InternalSetObject(
+        [in] IUnknown *realinterface
+    );
+    HRESULT GetName(
+        [out, retval] BSTR *name
+    );
+    HRESULT GetId(
+        [out, retval] BSTR *name
+    );
+    HRESULT GetDataSize(
+        [in] BSTR name,
+        [out, retval] long *size
+    );
+    HRESULT GetData(
+        [in] BSTR name,
+        [in] void *data
+    );
+    HRESULT GetType(
+        [out, retval] BSTR *type
+    );
+    HRESULT GetNextObject(
+        [out, retval] DirectXFileObject **type
+    );
+    HRESULT AddDataObject(
+        [in] DirectXFileData *data
+    );
+    HRESULT AddDataReference(
+        [in] BSTR name,
+        [in] BSTR guid
+    );
+    HRESULT AddBinaryObject(
+        [in] BSTR name,
+        [in] BSTR guidObject,
+        [in] BSTR MimeType,
+        [in] void *data,
+        [in] long size
+    );
+    HRESULT GetDataFromOffset(
+        [in] BSTR name,
+        [in] long offset,
+        [in] long bytecount,
+        [in] void *data
+    );
+};
+
+[
+    object,
+    uuid(e7ff12e4-96a5-11d3-ac85-00c04fc2c602),
+    helpstring("I_dxj_DirectXFileEnum  Interface"),
+    local
+]
+interface DirectXFileEnum : IUnknown {
+    HRESULT GetNextDataObject(
+        [out, retval] DirectXFileData **ret
+    );
+    HRESULT GetDataObjectById(
+        [in] BSTR id,
+        DirectXFileData **ret
+    );
+    HRESULT GetDataObjectByName(
+        [in] BSTR id,
+        DirectXFileData **ret
+    );
+};
+
+[
+    object,
+    uuid(e7ff12e5-96a5-11d3-ac85-00c04fc2c602),
+    helpstring("I_dxj_DirectXFileSave Interface"),
+    local
+]
+interface DirectXFileSave : IUnknown {
+    HRESULT SaveTemplates(
+        [in] long count,
+        SAFEARRAY(BSTR) *templateGuids
+    );
+    HRESULT CreateDataObject(
+        [in] BSTR templateGuid,
+        [in] BSTR name,
+        [in] BSTR dataTypeGuid,
+        [in] long bytecount,
+        [in] void *data,
+        [out, retval] DirectXFileData **ret
+    );
+    HRESULT SaveData(
+        [in] DirectXFileData *dataObj
+    );
+};
+
+[
+    object,
+    uuid(e7ff12e3-96a5-11d3-ac85-00c04fc2c602),
+    helpstring("I_dxj_DirectXFile Interface"),
+    local
+]
+interface DirectXFile : IUnknown {
+    HRESULT CreateEnumObject(
+        [in] BSTR filename,
+        [out, retval] DirectXFileEnum **ret
+    );
+    HRESULT CreateSaveObject(
+        [in] BSTR filename,
+        [in] long flags,
+        [out, retval] DirectXFileSave **ret
+    );
+    HRESULT RegisterTemplates(
+        [in] void *templatedata,
+        [in] long size
+    );
+    HRESULT RegisterDefaultTemplates(
+    );
+};
+
+[
+    object,
+    uuid(eca8bd2a-7154-4b23-904b-61ff852a906b),
+    helpstring("DirectPlayAddress Interface"),
+    local
+]
+interface DirectPlay8Address : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT BuildFromURL(
+        [in] BSTR SourceURL
+    );
+    HRESULT Duplicate(
+        [out, retval] DirectPlay8Address **newAddress
+    );
+    HRESULT Clear(
+    );
+    HRESULT GetURL(
+        [out, retval] BSTR *url
+    );
+    HRESULT GetSP(
+        [out, retval] BSTR *guidSP
+    );
+    HRESULT GetUserData(
+        [in, out] void *userData,
+        [out, retval] long *lBufferSize
+    );
+    HRESULT SetSP(
+        [in] BSTR guidSP
+    );
+    HRESULT SetUserData(
+        [in] void *userData,
+        [in] long lDataSize
+    );
+    HRESULT GetNumComponents(
+        [out, retval] long *lNumComponents
+    );
+    HRESULT GetDevice(
+        [out, retval] BSTR *guidDevice
+    );
+    HRESULT SetDevice(
+        [in] BSTR guidDevice
+    );
+    HRESULT SetEqual(
+        [in] DirectPlay8Address *address
+    );
+    HRESULT AddComponentLong(
+        [in] BSTR sComponent,
+        [in] long lValue
+    );
+    HRESULT AddComponentString(
+        [in] BSTR sComponent,
+        [in] BSTR sValue
+    );
+    HRESULT GetComponentLong(
+        [in] BSTR sComponent,
+        [out, retval] long *lValue
+    );
+    HRESULT GetComponentString(
+        [in] BSTR sComponent,
+        [out, retval] BSTR *sValue
+    );
+};
+
+[
+    object,
+    uuid(f9dccd1d-e6b9-45ed-b3e2-c32414c71fa4),
+    helpstring("DirectPlay Event Interface"),
+    local,
+    oleautomation
+]
+interface DirectPlay8Event : IUnknown {
+    HRESULT AddRemovePlayerGroup(
+        [in] long lMsgID,
+        [in] long lPlayerID,
+        [in] long lGroupID,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT appDesc(
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT AsyncOpComplete(
+        [in, out] DPNMSG_ASYNC_OP_COMPLETE *dpnotify,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT CreateGroup(
+        [in] long lGroupID,
+        [in] long lOwnerID,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT CreatePlayer(
+        [in] long lPlayerID,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT ConnectComplete(
+        [in, out] DPNMSG_CONNECT_COMPLETE *dpnotify,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT DestroyGroup(
+        [in] long lGroupID,
+        [in] long lReason,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT DestroyPlayer(
+        [in] long lPlayerID,
+        [in] long lReason,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT EnumHostsQuery(
+        [in, out] DPNMSG_ENUM_HOSTS_QUERY *dpnotify,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT EnumHostsResponse(
+        [in, out] DPNMSG_ENUM_HOSTS_RESPONSE *dpnotify,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT HostMigrate(
+        [in] long lNewHostID,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT IndicateConnect(
+        [in, out] DPNMSG_INDICATE_CONNECT *dpnotify,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT IndicatedConnectAborted(
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT InfoNotify(
+        [in] long lMsgID,
+        [in] long lNotifyID,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT Receive(
+        [in, out] DPNMSG_RECEIVE *dpnotify,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT SendComplete(
+        [in, out] DPNMSG_SEND_COMPLETE *dpnotify,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT TerminateSession(
+        [in, out] DPNMSG_TERMINATE_SESSION *dpnotify,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+};
+
+[
+    object,
+    uuid(f794a01f-2a0d-46a8-9cef-d5678a413bef),
+    helpstring("DirectPlayLobby Event Interface"),
+    local,
+    oleautomation
+]
+interface DirectPlay8LobbyEvent : IUnknown {
+    HRESULT Receive(
+        [in, out] DPL_MESSAGE_RECEIVE *dlNotify,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT Connect(
+        [in, out] DPL_MESSAGE_CONNECT *dlNotify,
+        [in, out] VARIANT_BOOL *fRejectMsg
+    );
+    HRESULT Disconnect(
+        [in] long disconnectID,
+        [in] long lReason
+    );
+    HRESULT SessionStatus(
+        [in] long status,
+        [in] long lHandle
+    );
+    HRESULT connectionSettings(
+        [in, out] DPL_MESSAGE_CONNECTION_SETTINGS *connectionSettings
+    );
+};
+
+[
+    object,
+    uuid(ef390476-6ea0-4ad3-9ea3-768dcb68038d),
+    helpstring("DirectPlayLobbiedApplication Interface"),
+    local,
+    oleautomation
+]
+interface DirectPlay8LobbiedApplication : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT RegisterMessageHandler(
+        [in] DirectPlay8LobbyEvent *lobbyEvent,
+        [out, retval] long *lDPNHandle
+    );
+    HRESULT RegisterProgram(
+        [in] DPL_PROGRAM_DESC *programDesc,
+        [in] long lFlags
+    );
+    HRESULT UnRegisterProgram(
+        [in] BSTR guidApplication,
+        [in] long lFlags
+    );
+    HRESULT Send(
+        [in] long target,
+        [in] SAFEARRAY(unsigned char) *buffer,
+        [in] long lBufferSize,
+        [in] long lFlags
+    );
+    HRESULT SetAppAvailable(
+        [in] VARIANT_BOOL fAvailable,
+        [in] CONST_DPLAVAILABLE lFlags
+    );
+    HRESULT UpdateStatus(
+        [in] long lobbyClient,
+        [in] CONST_DPLSESSION lStatus
+    );
+    HRESULT Close(
+    );
+    HRESULT UnRegisterMessageHandler(
+    );
+    HRESULT GetConnectionSettings(
+        [in] long lobbyClient,
+        [in] long lFlags,
+        [out, retval] DPL_CONNECTION_SETTINGS *connectionSettings
+    );
+    HRESULT SetConnectionSettings(
+        [in] long hTarget,
+        [in] long lFlags,
+        [in, out] DPL_CONNECTION_SETTINGS *connectionSettings,
+        [in] DirectPlay8Address *hostAddress,
+        [in] DirectPlay8Address *device
+    );
+};
+
+[
+    object,
+    uuid(7c34602a-7b81-4c6d-9533-658f2d471efc),
+    helpstring("DirectPlay Peer Interface"),
+    local
+]
+interface DirectPlay8Peer : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT SendTo(
+        [in] long idSend,
+        [in] SAFEARRAY(unsigned char) *bufferData,
+        [in] long lTimeOut,
+        [in, optional] CONST_DPNSENDFLAGS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT CreateGroup(
+        [in, out] DPN_GROUP_INFO *groupInfo,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT AddPlayerToGroup(
+        [in] long idGroup,
+        [in] long idClient,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT GetSendQueueInfo(
+        [in] long idPlayer,
+        [in, out] long *lNumMsgs,
+        [in, out] long *lNumBytes,
+        [in, optional] CONST_DPNGETSENDQUEUEINFO lFlags
+    );
+    HRESULT SetGroupInfo(
+        [in] long idGroup,
+        [in, out] DPN_GROUP_INFO *playerInfo,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT GetGroupInfo(
+        [in] long idGroup,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] DPN_GROUP_INFO *layerInfo
+    );
+    HRESULT SetPeerInfo(
+        [in] DPN_PLAYER_INFO *playerInfo,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT GetPeerInfo(
+        [in] long idPeer,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] DPN_PLAYER_INFO *layerInfo
+    );
+    HRESULT DestroyGroup(
+        [in] long idGroup,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT RemovePlayerFromGroup(
+        [in] long idGroup,
+        [in] long idClient,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT DestroyPeer(
+        [in] long idClient,
+        [in] long lFlags,
+        [in] void *userData,
+        [in] long userDataSize
+    );
+    HRESULT Connect(
+        [in] DPN_APPLICATION_DESC *appDesc,
+        [in] DirectPlay8Address *address,
+        [in] DirectPlay8Address *deviceInfo,
+        [in] CONST_DPNOPERATIONS lFlags,
+        [in] void *userData,
+        [in] long userDataSize,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT RegisterMessageHandler(
+        [in] DirectPlay8Event *event
+    );
+    HRESULT EnumHosts(
+        [in] DPN_APPLICATION_DESC *applicationDesc,
+        [in] DirectPlay8Address *addrHost,
+        [in] DirectPlay8Address *deviceInfo,
+        [in] long lEnumCount,
+        [in] long lRetryInterval,
+        [in] long lTimeOut,
+        [in] CONST_DPNOPERATIONS lFlags,
+        [in] void *userData,
+        [in] long userDataSize,
+        [out, retval] long *lAsync
+    );
+    HRESULT GetCountServiceProviders(
+        [in, optional] long lFlags,
+        [out, retval] long *ret
+    );
+    HRESULT GetServiceProvider(
+        [in] long lIndex,
+        [out, retval] DPN_SERVICE_PROVIDER_INFO *ret
+    );
+    HRESULT GetCountPlayersAndGroups(
+        [in, optional] CONST_DPNENUMCLIENTGROUPFLAGS lFlags,
+        [out, retval] long *ret
+    );
+    HRESULT GetPlayerOrGroup(
+        [in] long lIndex,
+        [out, retval] long *ret
+    );
+    HRESULT GetCountGroupMembers(
+        [in] long dpid,
+        [in, optional] long lFlags,
+        [out, retval] long *ret
+    );
+    HRESULT GetGroupMember(
+        [in] long lIndex,
+        [in] long dpid,
+        [out, retval] long *ret
+    );
+    HRESULT ReturnBuffer(
+        [in] long lBufferHandle
+    );
+    HRESULT Host(
+        [in] DPN_APPLICATION_DESC *appDesc,
+        [in] DirectPlay8Address *address,
+        [in, optional] long lFlags
+    );
+    HRESULT CancelAsyncOperation(
+        [in] long lAsyncHandle,
+        [in, optional] CONST_DPNCANCELFLAGS lFlags
+    );
+    HRESULT GetApplicationDesc(
+        [in, optional] long lFlags,
+        [out, retval] DPN_APPLICATION_DESC *ret
+    );
+    HRESULT SetApplicationDesc(
+        [in, out] DPN_APPLICATION_DESC *appDesc,
+        [in, optional] long lFlags
+    );
+    HRESULT Close(
+        [in, optional] long lFlags
+    );
+    HRESULT GetCaps(
+        [in, optional] long lFlags,
+        [out, retval] DPN_CAPS *ret
+    );
+    HRESULT SetCaps(
+        [in, out] DPN_CAPS *caps,
+        [in, optional] long lFlags
+    );
+    HRESULT RegisterLobby(
+        [in] long dpnHandle,
+        [in] DirectPlay8LobbiedApplication *lobbyApp,
+        [in, optional] long lFlags
+    );
+    HRESULT GetConnectionInfo(
+        [in] long idPlayer,
+        [in, optional] long lFlags,
+        [out, retval] DPN_CONNECTION_INFO *pdpConnectionInfo
+    );
+    HRESULT GetPeerAddress(
+        [in] long idPlayer,
+        [in, optional] long lFlags,
+        [out, retval] DirectPlay8Address **pAddress
+    );
+    HRESULT GetLocalHostAddress(
+        [in, optional] long lFlags,
+        [out, retval] DirectPlay8Address **pAddress
+    );
+    HRESULT SetSPCaps(
+        [in] BSTR guidSP,
+        [in] DPN_SP_CAPS *spCaps,
+        [in, optional] long lFlags
+    );
+    HRESULT GetSPCaps(
+        [in] BSTR guidSP,
+        [in, optional] long lFlags,
+        [out, retval] DPN_SP_CAPS *spCaps
+    );
+    HRESULT TerminateSession(
+        [in] long lFlags,
+        [in] void *userData,
+        [in] long userDataSize
+    );
+    HRESULT UnRegisterMessageHandler(
+    );
+};
+
+[
+    object,
+    uuid(7584bba4-1b39-4dcd-a334-d168cbb5a915),
+    helpstring("DirectPlay Server Interface"),
+    local
+]
+interface DirectPlay8Server : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT RegisterMessageHandler(
+        [in] DirectPlay8Event *event
+    );
+    HRESULT GetCountPlayersAndGroups(
+        [in, optional] CONST_DPNENUMCLIENTGROUPFLAGS lFlags,
+        [out, retval] long *ret
+    );
+    HRESULT GetPlayerOrGroup(
+        [in] long lIndex,
+        [out, retval] long *ret
+    );
+    HRESULT GetCountGroupMembers(
+        [in] long dpid,
+        [in, optional] long lFlags,
+        [out, retval] long *ret
+    );
+    HRESULT GetGroupMember(
+        [in] long lIndex,
+        [in] long dpid,
+        [out, retval] long *ret
+    );
+    HRESULT GetCountServiceProviders(
+        [in, optional] long lFlags,
+        [out, retval] long *ret
+    );
+    HRESULT GetServiceProvider(
+        [in] long lIndex,
+        [out, retval] DPN_SERVICE_PROVIDER_INFO *ret
+    );
+    HRESULT CancelAsyncOperation(
+        [in] long lAsyncHandle,
+        [in, optional] CONST_DPNCANCELFLAGS lFlags
+    );
+    HRESULT SendTo(
+        [in] long idSend,
+        [in] SAFEARRAY(unsigned char) *bufferData,
+        [in] long lTimeOut,
+        [in, optional] CONST_DPNSENDFLAGS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT CreateGroup(
+        [in] DPN_GROUP_INFO *groupInfo,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT AddPlayerToGroup(
+        [in] long idGroup,
+        [in] long idClient,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT GetSendQueueInfo(
+        [in] long idPlayer,
+        [in, out] long *lNumMsgs,
+        [in, out] long *lNumBytes,
+        [in, optional] CONST_DPNGETSENDQUEUEINFO lFlags
+    );
+    HRESULT SetGroupInfo(
+        [in] long idGroup,
+        [in] DPN_GROUP_INFO *playerInfo,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT GetGroupInfo(
+        [in] long idGroup,
+        [in, optional] long lFlags,
+        [out, retval] DPN_GROUP_INFO *layerInfo
+    );
+    HRESULT SetServerInfo(
+        [in] DPN_PLAYER_INFO *playerInfo,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT GetClientInfo(
+        [in] long idPeer,
+        [in, optional] long lFlags,
+        [out, retval] DPN_PLAYER_INFO *layerInfo
+    );
+    HRESULT GetApplicationDesc(
+        [in, optional] long lFlags,
+        [out, retval] DPN_APPLICATION_DESC *ret
+    );
+    HRESULT SetApplicationDesc(
+        [in, out] DPN_APPLICATION_DESC *appDesc,
+        [in, optional] long lFlags
+    );
+    HRESULT Host(
+        [in] DPN_APPLICATION_DESC *appDesc,
+        [in] DirectPlay8Address *address,
+        [in, optional] long lFlags
+    );
+    HRESULT Close(
+        [in, optional] long lFlags
+    );
+    HRESULT GetCaps(
+        [in, optional] long lFlags,
+        [out, retval] DPN_CAPS *ret
+    );
+    HRESULT SetCaps(
+        [in, out] DPN_CAPS *caps,
+        [in, optional] long lFlags
+    );
+    HRESULT RemovePlayerFromGroup(
+        [in] long idGroup,
+        [in] long idClient,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT ReturnBuffer(
+        [in] long lBufferHandle
+    );
+    HRESULT DestroyClient(
+        [in] long idClient,
+        [in] long lFlags,
+        [in] void *userData,
+        [in] long userDataSize
+    );
+    HRESULT DestroyGroup(
+        [in] long idGroup,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT RegisterLobby(
+        [in] long dpnHandle,
+        [in] DirectPlay8LobbiedApplication *lobbyApp,
+        [in, optional] long lFlags
+    );
+    HRESULT GetConnectionInfo(
+        [in] long idPlayer,
+        [in, optional] long lFlags,
+        [out, retval] DPN_CONNECTION_INFO *pdpConnectionInfo
+    );
+    HRESULT GetClientAddress(
+        [in] long idPlayer,
+        [in, optional] long lFlags,
+        [out, retval] DirectPlay8Address **pAddress
+    );
+    HRESULT GetLocalHostAddress(
+        [in, optional] long lFlags,
+        [out, retval] DirectPlay8Address **pAddress
+    );
+    HRESULT SetSPCaps(
+        [in] BSTR guidSP,
+        [in] DPN_SP_CAPS *spCaps,
+        [in, optional] long lFlags
+    );
+    HRESULT GetSPCaps(
+        [in] BSTR guidSP,
+        [in, optional] long lFlags,
+        [out, retval] DPN_SP_CAPS *spCaps
+    );
+    HRESULT UnRegisterMessageHandler(
+    );
+};
+
+[
+    object,
+    uuid(3f6521e5-94bc-4a7a-a049-3d199eb59e72),
+    helpstring("DirectPlay Client Interface"),
+    local
+]
+interface DirectPlay8Client : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT RegisterMessageHandler(
+        [in] DirectPlay8Event *event
+    );
+    HRESULT EnumHosts(
+        [in] DPN_APPLICATION_DESC *applicationDesc,
+        [in] DirectPlay8Address *addrHost,
+        [in] DirectPlay8Address *deviceInfo,
+        [in] long lRetryCount,
+        [in] long lRetryInterval,
+        [in] long lTimeOut,
+        [in] CONST_DPNOPERATIONS lFlags,
+        [in] void *userData,
+        [in] long userDataSize,
+        [out, retval] long *lAsync
+    );
+    HRESULT GetCountServiceProviders(
+        [in, optional] long lFlags,
+        [out, retval] long *ret
+    );
+    HRESULT GetServiceProvider(
+        [in] long lIndex,
+        [out, retval] DPN_SERVICE_PROVIDER_INFO *ret
+    );
+    HRESULT CancelAsyncOperation(
+        [in] long lAsyncHandle,
+        [in, optional] CONST_DPNCANCELFLAGS lFlags
+    );
+    HRESULT Connect(
+        [in] DPN_APPLICATION_DESC *appDesc,
+        [in] DirectPlay8Address *address,
+        [in] DirectPlay8Address *deviceInfo,
+        [in] CONST_DPNOPERATIONS lFlags,
+        [in] void *userData,
+        [in] long userDataSize,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT Send(
+        [in] SAFEARRAY(unsigned char) *bufferData,
+        [in] long lTimeOut,
+        [in, optional] CONST_DPNSENDFLAGS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT GetSendQueueInfo(
+        [in, out] long *lNumMsgs,
+        [in, out] long *lNumBytes,
+        [in, optional] CONST_DPNGETSENDQUEUEINFO lFlags
+    );
+    HRESULT GetApplicationDesc(
+        [in, optional] long lFlags,
+        [out, retval] DPN_APPLICATION_DESC *ret
+    );
+    HRESULT SetClientInfo(
+        [in] DPN_PLAYER_INFO *playerInfo,
+        [in, optional] CONST_DPNOPERATIONS lFlags,
+        [out, retval] long *hAsyncHandle
+    );
+    HRESULT GetServerInfo(
+        [in, optional] long lFlags,
+        [out, retval] DPN_PLAYER_INFO *layerInfo
+    );
+    HRESULT Close(
+        [in, optional] long lFlags
+    );
+    HRESULT ReturnBuffer(
+        [in] long lBufferHandle
+    );
+    HRESULT GetCaps(
+        [in, optional] long lFlags,
+        [out, retval] DPN_CAPS *ret
+    );
+    HRESULT SetCaps(
+        [in, out] DPN_CAPS *caps,
+        [in, optional] long lFlags
+    );
+    HRESULT RegisterLobby(
+        [in] long dpnHandle,
+        [in] DirectPlay8LobbiedApplication *lobbyApp,
+        [in, optional] long lFlags
+    );
+    HRESULT GetConnectionInfo(
+        [in, optional] long lFlags,
+        [out, retval] DPN_CONNECTION_INFO *pdpConnectionInfo
+    );
+    HRESULT GetServerAddress(
+        [in, optional] long lFlags,
+        [out, retval] DirectPlay8Address **pAddress
+    );
+    HRESULT SetSPCaps(
+        [in] BSTR guidSP,
+        [in] DPN_SP_CAPS *spCaps,
+        [in, optional] long lFlags
+    );
+    HRESULT GetSPCaps(
+        [in] BSTR guidSP,
+        [in, optional] long lFlags,
+        [out, retval] DPN_SP_CAPS *spCaps
+    );
+    HRESULT UnRegisterMessageHandler(
+    );
+};
+
+[
+    object,
+    uuid(14716737-3005-4758-896f-b48d001929a5),
+    helpstring("DirectPlayLobbyClient Interface"),
+    local,
+    oleautomation
+]
+interface DirectPlay8LobbyClient : IUnknown {
+    HRESULT InternalSetObject(
+        [in] IUnknown *lpdd
+    );
+    HRESULT InternalGetObject(
+        [out, retval] IUnknown **lpdd
+    );
+    HRESULT RegisterMessageHandler(
+        [in] DirectPlay8LobbyEvent *lobbyEvent
+    );
+    HRESULT GetCountLocalPrograms(
+        [in] BSTR guidApplication,
+        [out, retval] long *lCount
+    );
+    HRESULT GetLocalProgram(
+        [in] long lProgID,
+        [out, retval] DPL_APPLICATION_INFO *app
+    );
+    HRESULT ConnectApplication(
+        [in] DPL_CONNECT_INFO *connectionInfo,
+        [in] long lTimeOut,
+        [in] CONST_DPLCONNECT lFlags,
+        [out, retval] long *hApplication
+    );
+    HRESULT Send(
+        [in] long target,
+        [in] SAFEARRAY(unsigned char) *buffer,
+        [in] long lBufferSize,
+        [in] long lFlags
+    );
+    HRESULT ReleaseApplication(
+        [in] long application
+    );
+    HRESULT Close(
+    );
+    HRESULT UnRegisterMessageHandler(
+    );
+    HRESULT GetConnectionSettings(
+        [in] long hLobbyClient,
+        [in] long lFlags,
+        [out, retval] DPL_CONNECTION_SETTINGS *connectionSettings
+    );
+    HRESULT SetConnectionSettings(
+        [in] long hTarget,
+        [in] long lFlags,
+        [in, out] DPL_CONNECTION_SETTINGS *connectionSettings,
+        [in] DirectPlay8Address *hostAddress,
+        [in] DirectPlay8Address *device
+    );
+};
+
+[
+    object,
+    uuid(e7ff1301-96a5-11d3-ac85-00c04fc2c602),
+    helpstring("DirectX8 root object functions"),
+    local
+]
+interface IDirectX8 : IUnknown {
+    HRESULT DirectSoundCreate(
+        [in] BSTR guid,
+        [out, retval] DirectSound8 **ret
+    );
+    HRESULT DirectSoundCaptureCreate(
+        [in] BSTR guid,
+        [out, retval] DirectSoundCapture8 **ret
+    );
+    HRESULT GetDSEnum(
+        [out, retval] DirectSoundEnum8 **retVal
+    );
+    HRESULT GetDSCaptureEnum(
+        [out, retval] DirectSoundEnum8 **retVal
+    );
+    HRESULT DirectInputCreate(
+        [out, retval] DirectInput8 **ret
+    );
+    HRESULT DirectMusicLoaderCreate(
+        [out, retval] DirectMusicLoader8 **ret
+    );
+    HRESULT DirectMusicComposerCreate(
+        [out, retval] DirectMusicComposer8 **ret
+    );
+    HRESULT DirectMusicPerformanceCreate(
+        [out, retval] DirectMusicPerformance8 **ret
+    );
+    HRESULT CreateEvent(
+        [in] DirectXEvent8 *event,
+        [out, retval] long *h
+    );
+    HRESULT SetEvent(
+        [in] long eventid
+    );
+    HRESULT DestroyEvent(
+        [in] long eventid
+    );
+    HRESULT CreateNewGuid(
+        [out, retval] BSTR *retGuid
+    );
+    HRESULT DirectPlayVoiceClientCreate(
+        [out, retval] DirectPlayVoiceClient8 **ret
+    );
+    HRESULT DirectPlayVoiceServerCreate(
+        [out, retval] DirectPlayVoiceServer8 **ret
+    );
+    HRESULT DirectPlayVoiceTestCreate(
+        [out, retval] DirectPlayVoiceTest8 **ret
+    );
+    HRESULT DirectXFileCreate(
+        [out, retval] DirectXFile **ret
+    );
+    HRESULT DirectPlayPeerCreate(
+        [out, retval] DirectPlay8Peer **ret
+    );
+    HRESULT DirectPlayServerCreate(
+        [out, retval] DirectPlay8Server **ret
+    );
+    HRESULT DirectPlayClientCreate(
+        [out, retval] DirectPlay8Client **ret
+    );
+    HRESULT DirectPlayAddressCreate(
+        [out, retval] DirectPlay8Address **ret
+    );
+    HRESULT Direct3DCreate(
+        [out, retval] Direct3D8 **ret
+    );
+    HRESULT DirectPlayLobbyClientCreate(
+        [out, retval] DirectPlay8LobbyClient **ret
+    );
+    HRESULT DirectPlayLobbiedApplicationCreate(
+        [out, retval] DirectPlay8LobbiedApplication **ret
+    );
+};
+
+//Coclasses
+
+[
+    uuid(58356c5d-0bfd-48ed-93c5-f4520b6233de),
+    helpstring("D3DX8"),
+    threading(both)
+]
+coclass D3DX8 { interface ID3DX8; };
+
+[
+    uuid(e7ff1300-96a5-11d3-ac85-00c04fc2c602),
+    helpstring("DirectX8"),
+    threading(both)
+]
+coclass DirectX8 { interface IDirectX8; };
-- 
2.14.2




More information about the wine-patches mailing list