regedit: Allow importing strings with escaped NULL.
[wine.git] / dlls / gameux / gameux_private.h
blob64ccec831189efb9fff9452afa4e5b108ffe9f2b
1 /*
2 * Gameux library private header
4 * Copyright (C) 2010 Mariusz PluciƄski
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.
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.
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
21 extern HRESULT GameExplorer_create(IUnknown* pUnkOuter, IUnknown **ppObj) DECLSPEC_HIDDEN;
22 extern HRESULT GameStatistics_create(IUnknown* pUnkOuter, IUnknown **ppObj) DECLSPEC_HIDDEN;
24 /*******************************************************************************
25 * Helper functions and structures
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.
32 /*******************************************************************************
33 * struct GAMEUX_GAME_DATA
35 * Structure which contains data about single game. It is used to transfer
36 * data inside of gameux module in various places.
38 struct GAMEUX_GAME_DATA
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 */
48 /*******************************************************************************
49 * GAMEUX_FindGameInstanceId
51 * Helper function. Searches for instance identifier of given game in given
52 * installation scope. Implemented in gameexplorer.c
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
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
64 HRESULT GAMEUX_FindGameInstanceId(
65 LPCWSTR sGDFBinaryPath,
66 GAME_INSTALL_SCOPE installScope,
67 GUID* pInstanceId) DECLSPEC_HIDDEN;
68 /*******************************************************************************
69 * GAMEUX_buildGameRegistryPath
71 * Helper function, builds registry path to key, where game's data are stored.
72 * Implemented in gameexplorer.c
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, ...)
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]
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]
94 HRESULT GAMEUX_buildGameRegistryPath(GAME_INSTALL_SCOPE installScope,
95 LPCGUID gameInstanceId,
96 LPWSTR* lpRegistryPath) DECLSPEC_HIDDEN;