#if VB_ONLY
	#define I_dxj_DirectXEvent8	DirectXEvent8
#endif



 [helpcontext(87111)]
typedef enum CONST_DSETUPFLAGS {


	// DSETUP flags. DirectX 5.0 apps should use these flags only.
	DSETUP_DDRAWDRV        = 0x00000008,
	DSETUP_DSOUNDDRV       = 0x00000010,
	DSETUP_DXCORE          = 0x00010000,
	DSETUP_DIRECTX  		=0x00010018,
	DSETUP_TESTINSTALL      =0x00020000    
} DSETUPFLAGS;


 [helpcontext(87112)]
typedef enum CONST_DSETUPCALLBACKFLAGS {

	// DSETUP Message Info Codes, passed to callback as Reason parameter.
	DSETUP_CB_MSG_NOMESSAGE                 =    0,
	DSETUP_CB_MSG_CANTINSTALL_UNKNOWNOS     =    1,
	DSETUP_CB_MSG_CANTINSTALL_NT            =    2,
	DSETUP_CB_MSG_CANTINSTALL_BETA          =    3,
	DSETUP_CB_MSG_CANTINSTALL_NOTWIN32      =    4,
	DSETUP_CB_MSG_CANTINSTALL_WRONGLANGUAGE =    5,
	DSETUP_CB_MSG_CANTINSTALL_WRONGPLATFORM =    6,
	DSETUP_CB_MSG_PREINSTALL_NT             =    7,
	DSETUP_CB_MSG_NOTPREINSTALLEDONNT       =    8,
	DSETUP_CB_MSG_SETUP_INIT_FAILED         =    9,
	DSETUP_CB_MSG_INTERNAL_ERROR            =    10,
	DSETUP_CB_MSG_CHECK_DRIVER_UPGRADE      =    11,
	DSETUP_CB_MSG_OUTOFDISKSPACE            =    12,
	DSETUP_CB_MSG_BEGIN_INSTALL             =    13,
	DSETUP_CB_MSG_BEGIN_INSTALL_RUNTIME     =    14,
	DSETUP_CB_MSG_BEGIN_INSTALL_DRIVERS     =    15,
	DSETUP_CB_MSG_BEGIN_RESTORE_DRIVERS     =    16,
	DSETUP_CB_MSG_FILECOPYERROR             =    17,

	DSETUP_CB_UPGRADE_TYPE_MASK             =0x000F,
	DSETUP_CB_UPGRADE_KEEP                  =0x0001,
	DSETUP_CB_UPGRADE_SAFE                  =0x0002,
	DSETUP_CB_UPGRADE_FORCE                 =0x0004,
	DSETUP_CB_UPGRADE_UNKNOWN               =0x0008,

	DSETUP_CB_UPGRADE_HASWARNINGS           =0x0100,
	DSETUP_CB_UPGRADE_CANTBACKUP            =0x0200,

	DSETUP_CB_UPGRADE_DEVICE_ACTIVE         =0x0800,

	DSETUP_CB_UPGRADE_DEVICE_DISPLAY        =0x1000,
	DSETUP_CB_UPGRADE_DEVICE_MEDIA          =0x2000

} DSETUPCALLBACKFLAGS;

 [helpcontext(87113)]
typedef enum CONST_DSETUPERR {
    DSETUPERR_SUCCESS_RESTART = 1,
    DSETUPERR_SUCCESS = 0,
    DSETUPERR_BADWINDOWSVERSION = -1,
    DSETUPERR_SOURCEFILENOTFOUND = -2,
    DSETUPERR_BADSOURCESIZE = -3,
    DSETUPERR_BADSOURCETIME = -4,
    DSETUPERR_NOCOPY = -5,
    DSETUPERR_OUTOFDISKSPACE = -6,
    DSETUPERR_CANTFINDINF = -7,
    DSETUPERR_CANTFINDDIR = -8,
    DSETUPERR_INTERNAL = -9,
    DSETUPERR_NTWITHNO3D = -10,
    DSETUPERR_UNKNOWNOS = -11,
    DSETUPERR_USERHITCANCEL = -12,
    DSETUPERR_NOTPREINSTALLEDONNT = -13
} DSETUPERR;



#ifdef VB_ONLY
	#define D3DVECTOR_CDESC 	D3DVECTOR
	#define RECT_CDESC		RECT
	#define DXGUID_CDESC		DXGUID
	#define PALETTEENTRY_CDESC	PALETTEENTRY
	#define D3PALETTEENTRY_CDESC	PALETTEENTRY
	#define D3DCOLORVALUE_CDESC	D3DCOLORVALUE
	#define D3DMATERIAL8_CDESC	D3DMATERIAL8
	#define POINT_CDESC		POINT
	#define D3DVECTOR2_CDESC	D3DVECTOR2
	#define D3DVECTOR4_CDESC	D3DVECTOR4
	#define D3DMATRIX_CDESC 	D3DMATRIX
	#define D3DVIEWPORT8_CDESC	D3DVIEWPORT8
	#define D3DPLANE_CDESC  	D3DPLANE
#endif

#ifdef C_ONLY
 [helpcontext(88888)]
    	typedef struct DXDRIVERINFO_CDESC
    	{
    		BSTR strGuid;
    		BSTR strDescription;
    		BSTR strName;
    	
    	} DXDRIVERINFO_CDESC;
#endif

 [helpcontext(86231)]
	typedef struct D3DVECTOR_CDESC 
	{
		FLOAT x;
		FLOAT y;
		FLOAT z;
	} D3DVECTOR_CDESC;

 [helpcontext(86232)]
    	typedef struct D3DVECTOR2_CDESC {
    		FLOAT x;	
    		FLOAT y;    		
    	} D3DVECTOR2_CDESC;

 [helpcontext(86233)]
    	typedef struct D3DVECTOR4_CDESC {
    		FLOAT x;	
    		FLOAT y;    		
			FLOAT z;    		
			FLOAT w;    		
    	} D3DVECTOR4_CDESC;


 [helpcontext(87114)]
    	typedef struct RECT_CDESC
    	{
    		LONG left;
    		LONG top;
    		LONG right;
    		LONG bottom;
    	} RECT_CDESC;	
     
    
 [helpcontext(87115)]
        typedef struct DXGUID_CDESC {
    		LONG data1;
    		SHORT data2;
    		SHORT data3;
    		BYTE  data4[8];
    	} DXGUID_CDESC;
    
    	[helpcontext(400400)]
    	typedef struct PALETTEENTRY_CDESC
    	{
    		BYTE red;
    		BYTE green;
    		BYTE blue;
    		BYTE flags;
    	} PALETTEENTRY_CDESC;


 [helpcontext(86207)]
	typedef struct D3DCOLORVALUE_CDESC {
	    FLOAT r;
	    FLOAT g;
	    FLOAT b;
	    FLOAT a;
	} D3DCOLORVALUE_CDESC;


 [helpcontext(87116)]
	typedef struct POINT_CDESC {
	    LONG x;
	    LONG y;
	} POINT_CDESC;


 [helpcontext(86218)]
	typedef struct D3DMATERIAL8_CDESC {

	    D3DCOLORVALUE_CDESC   diffuse;        /* Diffuse color RGBA */
	    D3DCOLORVALUE_CDESC   ambient;        /* Ambient color RGB */
	    D3DCOLORVALUE_CDESC   specular;       /* Specular 'shininess' */
	    D3DCOLORVALUE_CDESC   emissive;       /* Emissive color RGB */
	    FLOAT        power;          /* Sharpness if specular highlight */
	} D3DMATERIAL8_CDESC;


 [helpcontext(86220)]
    	typedef struct D3DPLANE_CDESC {
    		FLOAT a;	
    		FLOAT b;    		
		FLOAT c;    		
		FLOAT d;    		
    	} D3DPLANE_CDESC;
    

    	[
    		object,
    		uuid(D1CA9B18-9ED2-43b5-8759-7A5C892D4C5C),	
    		helpstring("I_dxj_DirectXEvent8 Interface"),
    		pointer_default(unique),
    		oleautomation,
    		helpcontext(318600)
    	]
    	interface I_dxj_DirectXEvent8 : IUnknown	
    	{
#ifdef _WIN64
    		[helpcontext(86026)]		HRESULT DXCallback([in] HANDLE eventid);
#else
    		[helpcontext(86026)]		HRESULT DXCallback([in] LONG eventid);
#endif
    	};


 [helpcontext(86219)]
typedef struct D3DMATRIX_CDESC 
{
            FLOAT        m11, m12, m13, m14;
            FLOAT        m21, m22, m23, m24;
            FLOAT        m31, m32, m33, m34;
            FLOAT        m41, m42, m43, m44;

} D3DMATRIX_CDESC;

 [helpcontext(86237)]
typedef struct D3DVIEWPORT8_CDESC
{
    LONG       X;
    LONG       Y;            /* Viewport Top left */
    LONG       Width;
    LONG       Height;       /* Viewport Dimensions */
    FLOAT    MinZ;         /* Min/max of clip Volume */
    FLOAT    MaxZ;
} D3DVIEWPORT8_CDESC;

