d3d8/tests: Merge volume.c into device.c.
[wine] / dlls / gameux / gameux_private.h
1 /*
2  *    Gameux library private header
3  *
4  * Copyright (C) 2010 Mariusz PluciƄski
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 extern HRESULT GameExplorer_create(IUnknown* pUnkOuter, IUnknown **ppObj) DECLSPEC_HIDDEN;
22 extern HRESULT GameStatistics_create(IUnknown* pUnkOuter, IUnknown **ppObj) DECLSPEC_HIDDEN;
23
24 /*******************************************************************************
25  * Helper functions and structures
26  *
27  * These are helper function and structures, which  are used widely in gameux
28  * implementation. Details about usage and place of implementation is
29  * in description of each function/structure.
30  */
31
32 /*******************************************************************************
33  * struct GAMEUX_GAME_DATA
34  *
35  * Structure which contains data about single game. It is used to transfer
36  * data inside of gameux module in various places.
37  */
38 struct GAMEUX_GAME_DATA
39 {
40     LPWSTR sGDFBinaryPath;          /* path to binary containing GDF */
41     LPWSTR sGameInstallDirectory;   /* directory passed to AddGame/InstallGame methods */
42     GAME_INSTALL_SCOPE installScope;/* game's installation scope */
43     GUID guidInstanceId;            /* game installation instance identifier */
44     GUID guidApplicationId;         /* game's application identifier */
45     BSTR bstrName;                  /* game's title */
46     BSTR bstrDescription;           /* game's description */
47 };
48 /*******************************************************************************
49  * GAMEUX_FindGameInstanceId
50  *
51  * Helper function. Searches for instance identifier of given game in given
52  * installation scope. Implemented in gameexplorer.c
53  *
54  * Parameters:
55  *  sGDFBinaryPath                          [I]     path to binary containing GDF
56  *  installScope                            [I]     game install scope to search in
57  *  pInstanceId                             [O]     instance identifier of given game
58  *
59  * Returns:
60  *  S_OK                    id was returned properly
61  *  S_FALSE                 id was not found in the registry
62  *  E_OUTOFMEMORY           problem while memory allocation
63  */
64 HRESULT GAMEUX_FindGameInstanceId(
65         LPCWSTR sGDFBinaryPath,
66         GAME_INSTALL_SCOPE installScope,
67         GUID* pInstanceId) DECLSPEC_HIDDEN;
68 /*******************************************************************************
69  * GAMEUX_buildGameRegistryPath
70  *
71  * Helper function, builds registry path to key, where game's data are stored.
72  * Implemented in gameexplorer.c
73  *
74  * Parameters:
75  *  installScope                [I]     the scope which was used in AddGame/InstallGame call
76  *  gameInstanceId              [I]     game instance GUID. If NULL, then only
77  *                                      path to scope will be returned
78  *  lpRegistryPath              [O]     pointer which will receive address to string
79  *                                      containing expected registry path. Path
80  *                                      is relative to HKLM registry key. It
81  *                                      must be freed by calling HeapFree(GetProcessHeap(), 0, ...)
82  *
83  * Name of game's registry key always follows patterns below:
84  *  When game is installed for current user only (installScope is GIS_CURRENT_USER):
85  *      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
86  *          GameUX\[user's security ID]\[game instance ID]
87  *
88  *  When game is installed for all users (installScope is GIS_ALL_USERS):
89  *      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\
90  *          GameUX\Games\[game instance ID]
91  *
92  *
93  */
94 HRESULT GAMEUX_buildGameRegistryPath(GAME_INSTALL_SCOPE installScope,
95         LPCGUID gameInstanceId,
96         LPWSTR* lpRegistryPath) DECLSPEC_HIDDEN;