dinput: Avoid deadlock when CS are acquired in different order.
[wine.git] / include / sapi.idl
blobe13843227e29bb461d116913528d7a1e9cd97f93
1 /*
2 * Speech API (SAPI) IDL file.
4 * Copyright (C) 2017 Huw Davies
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 import "oaidl.idl";
22 import "ocidl.idl";
24 #ifndef __WIDL__
25 #define threading(model)
26 #define progid(str)
27 #define vi_progid(str)
28 #endif
30 typedef [hidden] enum SPDATAKEYLOCATION
32 SPDKL_DefaultLocation = 0,
33 SPDKL_CurrentUser = 1,
34 SPDKL_LocalMachine = 2,
35 SPDKL_CurrentConfig = 5
36 } SPDATAKEYLOCATION;
38 cpp_quote("#if defined(__GNUC__)")
40 cpp_quote("#define SPCAT_AUDIOOUT (const WCHAR []){ 'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','A','u','d','i','o','O','u','t','p','u','t',0 }")
41 cpp_quote("#define SPCAT_AUDIOIN (const WCHAR []){ 'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','A','u','d','i','o','I','n','p','u','t',0 }")
42 cpp_quote("#define SPCAT_VOICES (const WCHAR []){ 'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','V','o','i','c','e','s',0 }")
44 cpp_quote("#elif defined(_MSC_VER)")
46 cpp_quote("#define SPCAT_AUDIOOUT L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AudioOutput\"")
47 cpp_quote("#define SPCAT_AUDIOIN L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\AudioInput\"")
48 cpp_quote("#define SPCAT_VOICES L\"HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Speech\\\\Voices\"")
50 cpp_quote("#else")
52 cpp_quote("static const WCHAR SPCAT_AUDIOOUT[] = {'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','A','u','d','i','o','O','u','t','p','u','t',0};")
53 cpp_quote("static const WCHAR SPCAT_AUDIOIN[] = {'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','A','u','d','i','o','I','n','p','u','t',0};")
54 cpp_quote("static const WCHAR SPCAT_VOICES[] = {'H','K','E','Y','_','L','O','C','A','L','_','M','A','C','H','I','N','E','\\\\','S','O','F','T','W','A','R','E','\\\\','M','i','c','r','o','s','o','f','t','\\\\','S','p','e','e','c','h','\\\\','V','o','i','c','e','s',0};")
56 cpp_quote("#endif")
58 interface IEnumSpObjectTokens;
61 object,
62 uuid(14056581-e16c-11d2-bb90-00c04f8ee6c0),
63 helpstring("ISpDataKey"),
64 pointer_default(unique),
65 local,
66 restricted
68 interface ISpDataKey : IUnknown
70 HRESULT SetData([in] LPCWSTR pszValueName,
71 [in] ULONG cbData,
72 [in] const BYTE *pData);
73 HRESULT GetData([in] LPCWSTR pszValueName,
74 [in] ULONG *pcbData,
75 [out] BYTE *pData);
76 HRESULT SetStringValue([in] LPCWSTR pszValueName,
77 [in] LPCWSTR pszValue);
78 HRESULT GetStringValue([in] LPCWSTR pszValueName,
79 [out] LPWSTR *ppszValue);
80 HRESULT SetDWORD([in] LPCWSTR pszValueName,
81 [in] DWORD dwValue);
82 HRESULT GetDWORD([in] LPCWSTR pszValueName,
83 [out] DWORD *pdwValue);
84 HRESULT OpenKey([in] LPCWSTR pszSubKeyName,
85 [out] ISpDataKey **ppSubKey);
86 HRESULT CreateKey([in] LPCWSTR pszSubKey,
87 [out] ISpDataKey **ppSubKey);
88 HRESULT DeleteKey([in] LPCWSTR pszSubKey);
89 HRESULT DeleteValue([in] LPCWSTR pszValueName);
90 HRESULT EnumKeys([in] ULONG Index,
91 [out] LPWSTR *ppszSubKeyName);
92 HRESULT EnumValues([in] ULONG Index,
93 [out] LPWSTR *ppszValueName);
96 object,
97 uuid(92a66e2b-c830-4149-83df-6fc2ba1e7a5b),
98 helpstring("ISpRegDataKey"),
99 pointer_default(unique),
100 restricted
102 interface ISpRegDataKey : ISpDataKey
104 [local] HRESULT SetKey([in] HKEY hkey, [in] BOOL fReadOnly);
108 object,
109 uuid(2d3d3845-39af-4850-bbf9-40b49780011d),
110 helpstring("ISpObjectTokenCategory"),
111 pointer_default(unique),
112 local,
113 restricted
115 interface ISpObjectTokenCategory : ISpDataKey
117 HRESULT SetId([in] LPCWSTR pszCategoryId,
118 [in] BOOL fCreateIfNotExist);
119 HRESULT GetId([out] LPWSTR *ppszCoMemCategoryId);
120 HRESULT GetDataKey([in] SPDATAKEYLOCATION spdkl,
121 [out] ISpDataKey **ppDataKey);
122 HRESULT EnumTokens([in, string] LPCWSTR pszReqAttribs,
123 [in, string] LPCWSTR pszOptAttribs,
124 [out] IEnumSpObjectTokens **ppEnum);
125 HRESULT SetDefaultTokenId([in] LPCWSTR pszTokenId);
126 HRESULT GetDefaultTokenId([out] LPWSTR *ppszCoMemTokenId);
130 object,
131 uuid(14056589-e16c-11d2-bb90-00c04f8ee6c0),
132 helpstring("ISpObjectToken"),
133 pointer_default(unique),
134 local,
135 restricted
137 interface ISpObjectToken : ISpDataKey
139 HRESULT SetId(/*[in]*/ LPCWSTR pszCategoryId,
140 [in] LPCWSTR pszTokenId,
141 [in] BOOL fCreateIfNotExist);
142 HRESULT GetId([out] LPWSTR *ppszCoMemTokenId);
143 HRESULT GetCategory([out] ISpObjectTokenCategory **ppTokenCategory);
144 HRESULT CreateInstance([in] IUnknown *pUnkOuter,
145 [in] DWORD dwClsContext,
146 [in] REFIID riid,
147 [out, iid_is(riid)] void **ppvObject);
148 HRESULT GetStorageFileName([in] REFCLSID clsidCaller,
149 [in] LPCWSTR pszValueName,
150 [in, string] LPCWSTR pszFileNameSpecifier,
151 [in] ULONG nFolder,
152 [out] LPWSTR *ppszFilePath);
153 HRESULT RemoveStorageFileName([in] REFCLSID clsidCaller,
154 [in] LPCWSTR pszKeyName,
155 [in] BOOL fDeleteFile);
156 HRESULT Remove(/*[in]*/ const CLSID *pclsidCaller);
157 [local] HRESULT IsUISupported([in] LPCWSTR pszTypeOfUI,
158 [in] void *pvExtraData,
159 [in] ULONG cbExtraData,
160 [in] IUnknown *punkObject,
161 [out] BOOL *pfSupported);
162 [local] HRESULT DisplayUI([in] HWND hwndParent,
163 [in] LPCWSTR pszTitle,
164 [in] LPCWSTR pszTypeOfUI,
165 [in] void *pvExtraData,
166 [in] ULONG cbExtraData,
167 [in] IUnknown *punkObject);
168 HRESULT MatchesAttributes([in] LPCWSTR pszAttributes,
169 [out] BOOL *pfMatches);
173 object,
174 uuid(06b64f9e-7fda-11d2-b4f2-00c04f797396),
175 helpstring("IEnumSpObjectTokens"),
176 pointer_default(unique),
177 local,
178 restricted
180 interface IEnumSpObjectTokens : IUnknown
182 HRESULT Next([in] ULONG celt,
183 [out, size_is(celt), length_is(*pceltFetched)] ISpObjectToken **pelt,
184 [out] ULONG *pceltFetched);
185 HRESULT Skip([in] ULONG celt);
186 HRESULT Reset(void);
187 HRESULT Clone([out] IEnumSpObjectTokens **ppEnum);
188 HRESULT Item([in] ULONG Index,
189 [out] ISpObjectToken **ppToken);
190 HRESULT GetCount([out] ULONG *pCount);
194 helpstring("Speech Object Library"),
195 uuid(c866ca3a-32f7-11d2-9602-00c04f8ee628),
196 version(5.4)
198 library SpeechLib
200 importlib("stdole2.tlb");
203 uuid(a910187f-0c7a-45ac-92cc-59edafb77b53),
204 helpstring("SpObjectTokenCategory Class"),
205 progid("SAPI.SpObjectTokenCategory.1"),
206 vi_progid("SAPI.SpObjectTokenCategory"),
207 threading(both)
209 coclass SpObjectTokenCategory
211 interface ISpObjectTokenCategory;