1 /* 2 * DXDiag private include file 3 * 4 * Copyright 2004 Raphael Junqueira 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21 #ifndef __WINE_DXDIAG_PRIVATE_H 22 #define __WINE_DXDIAG_PRIVATE_H 23 24 #include <stdarg.h> 25 26 #include "windef.h" 27 #include "winbase.h" 28 #include "wingdi.h" 29 30 #include "wine/list.h" 31 #include "dxdiag.h" 32 #include "resource.h" 33 34 /* DXDiag Interfaces: */ 35 typedef struct IDxDiagProviderImpl IDxDiagProviderImpl; 36 typedef struct IDxDiagContainerImpl IDxDiagContainerImpl; 37 typedef struct IDxDiagContainerImpl_Container IDxDiagContainerImpl_Container; 38 39 /* ---------------- */ 40 /* IDxDiagContainer */ 41 /* ---------------- */ 42 43 struct IDxDiagContainerImpl_Container { 44 struct list entry; 45 WCHAR *contName; 46 47 struct list subContainers; 48 DWORD nSubContainers; 49 struct list properties; 50 DWORD nProperties; 51 }; 52 53 typedef struct IDxDiagContainerImpl_Property { 54 struct list entry; 55 WCHAR *propName; 56 VARIANT vProp; 57 } IDxDiagContainerImpl_Property; 58 59 60 /***************************************************************************** 61 * IDxDiagContainer implementation structure 62 */ 63 struct IDxDiagContainerImpl { 64 IDxDiagContainer IDxDiagContainer_iface; 65 LONG ref; 66 IDxDiagContainerImpl_Container *cont; 67 IDxDiagProvider *pProv; 68 }; 69 70 /** 71 * factories 72 */ 73 extern HRESULT DXDiag_CreateDXDiagProvider(LPCLASSFACTORY iface, LPUNKNOWN punkOuter, REFIID riid, LPVOID *ppobj) DECLSPEC_HIDDEN; 74 75 /** internal factory */ 76 extern HRESULT DXDiag_CreateDXDiagContainer(REFIID riid, IDxDiagContainerImpl_Container *cont, IDxDiagProvider *pProv, LPVOID *ppobj) DECLSPEC_HIDDEN; 77 78 /********************************************************************** 79 * Dll lifetime tracking declaration for dxdiagn.dll 80 */ 81 extern LONG DXDIAGN_refCount DECLSPEC_HIDDEN; 82 static inline void DXDIAGN_LockModule(void) { InterlockedIncrement( &DXDIAGN_refCount ); } 83 static inline void DXDIAGN_UnlockModule(void) { InterlockedDecrement( &DXDIAGN_refCount ); } 84 85 extern HINSTANCE dxdiagn_instance DECLSPEC_HIDDEN; 86 87 #endif 88