main
h 320 lines 8.47 KB
Raw
1 #pragma once
2 // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
3
4
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 #define ReleaseStr(pwz) if (pwz) { StrFree(pwz); }
10 #define ReleaseNullStr(pwz) if (pwz) { StrFree(pwz); pwz = NULL; }
11 #define ReleaseBSTR(bstr) if (bstr) { ::SysFreeString(bstr); }
12 #define ReleaseNullBSTR(bstr) if (bstr) { ::SysFreeString(bstr); bstr = NULL; }
13 #define ReleaseStrArray(rg, c) { if (rg) { StrArrayFree(rg, c); } }
14 #define ReleaseNullStrArray(rg, c) { if (rg) { StrArrayFree(rg, c); c = 0; rg = NULL; } }
15 #define ReleaseNullStrSecure(pwz) if (pwz) { StrSecureZeroFreeString(pwz); pwz = NULL; }
16
17 #define DeclareConstBSTR(bstr_const, wz) const WCHAR bstr_const[] = { 0x00, 0x00, sizeof(wz)-sizeof(WCHAR), 0x00, wz }
18 #define UseConstBSTR(bstr_const) const_cast<BSTR>(bstr_const + 4)
19
20 HRESULT DAPI StrAlloc(
21 __deref_out_ecount_part(cch, 0) LPWSTR* ppwz,
22 __in SIZE_T cch
23 );
24 HRESULT DAPI StrAllocSecure(
25 __deref_out_ecount_part(cch, 0) LPWSTR* ppwz,
26 __in SIZE_T cch
27 );
28 HRESULT DAPI StrTrimCapacity(
29 __deref_out_z LPWSTR* ppwz
30 );
31 HRESULT DAPI StrTrimWhitespace(
32 __deref_out_z LPWSTR* ppwz,
33 __in_z LPCWSTR wzSource
34 );
35 HRESULT DAPI StrAnsiAlloc(
36 __deref_out_ecount_part(cch, 0) LPSTR* ppz,
37 __in SIZE_T cch
38 );
39 HRESULT DAPI StrAnsiTrimCapacity(
40 __deref_out_z LPSTR* ppz
41 );
42 HRESULT DAPI StrAnsiTrimWhitespace(
43 __deref_out_z LPSTR* ppz,
44 __in_z LPCSTR szSource
45 );
46 HRESULT DAPI StrAllocString(
47 __deref_out_ecount_z(cchSource+1) LPWSTR* ppwz,
48 __in_z LPCWSTR wzSource,
49 __in SIZE_T cchSource
50 );
51 HRESULT DAPI StrAllocStringSecure(
52 __deref_out_ecount_z(cchSource + 1) LPWSTR* ppwz,
53 __in_z LPCWSTR wzSource,
54 __in SIZE_T cchSource
55 );
56 HRESULT DAPI StrAnsiAllocString(
57 __deref_out_ecount_z(cchSource+1) LPSTR* ppsz,
58 __in_z LPCWSTR wzSource,
59 __in SIZE_T cchSource,
60 __in UINT uiCodepage
61 );
62 HRESULT DAPI StrAllocStringAnsi(
63 __deref_out_ecount_z(cchSource+1) LPWSTR* ppwz,
64 __in_z LPCSTR szSource,
65 __in SIZE_T cchSource,
66 __in UINT uiCodepage
67 );
68 HRESULT DAPI StrAnsiAllocStringAnsi(
69 __deref_out_ecount_z(cchSource+1) LPSTR* ppsz,
70 __in_z LPCSTR szSource,
71 __in SIZE_T cchSource
72 );
73 HRESULT DAPI StrAllocPrefix(
74 __deref_out_z LPWSTR* ppwz,
75 __in_z LPCWSTR wzPrefix,
76 __in SIZE_T cchPrefix
77 );
78 HRESULT DAPI StrAllocConcat(
79 __deref_out_z LPWSTR* ppwz,
80 __in_z LPCWSTR wzSource,
81 __in SIZE_T cchSource
82 );
83 HRESULT DAPI StrAllocConcatSecure(
84 __deref_out_z LPWSTR* ppwz,
85 __in_z LPCWSTR wzSource,
86 __in SIZE_T cchSource
87 );
88 HRESULT DAPI StrAnsiAllocConcat(
89 __deref_out_z LPSTR* ppz,
90 __in_z LPCSTR pzSource,
91 __in SIZE_T cchSource
92 );
93 HRESULT __cdecl StrAllocFormatted(
94 __deref_out_z LPWSTR* ppwz,
95 __in __format_string LPCWSTR wzFormat,
96 ...
97 );
98 HRESULT __cdecl StrAllocConcatFormatted(
99 __deref_out_z LPWSTR* ppwz,
100 __in __format_string LPCWSTR wzFormat,
101 ...
102 );
103 HRESULT __cdecl StrAllocConcatFormattedSecure(
104 __deref_out_z LPWSTR* ppwz,
105 __in __format_string LPCWSTR wzFormat,
106 ...
107 );
108 HRESULT __cdecl StrAllocFormattedSecure(
109 __deref_out_z LPWSTR* ppwz,
110 __in __format_string LPCWSTR wzFormat,
111 ...
112 );
113 HRESULT __cdecl StrAnsiAllocFormatted(
114 __deref_out_z LPSTR* ppsz,
115 __in __format_string LPCSTR szFormat,
116 ...
117 );
118 HRESULT DAPI StrAllocFormattedArgs(
119 __deref_out_z LPWSTR* ppwz,
120 __in __format_string LPCWSTR wzFormat,
121 __in va_list args
122 );
123 HRESULT DAPI StrAllocFormattedArgsSecure(
124 __deref_out_z LPWSTR* ppwz,
125 __in __format_string LPCWSTR wzFormat,
126 __in va_list args
127 );
128 HRESULT DAPI StrAnsiAllocFormattedArgs(
129 __deref_out_z LPSTR* ppsz,
130 __in __format_string LPCSTR szFormat,
131 __in va_list args
132 );
133 HRESULT DAPI StrAllocFromError(
134 __inout LPWSTR *ppwzMessage,
135 __in HRESULT hrError,
136 __in_opt HMODULE hModule,
137 ...
138 );
139
140 HRESULT DAPI StrMaxLength(
141 __in LPCVOID p,
142 __out SIZE_T* pcch
143 );
144 HRESULT DAPI StrMaxLengthAnsi(
145 __in LPCVOID p,
146 __out SIZE_T* pcch
147 );
148 HRESULT DAPI StrSize(
149 __in LPCVOID p,
150 __out SIZE_T* pcb
151 );
152
153 HRESULT DAPI StrFree(
154 __in LPVOID p
155 );
156
157
158 HRESULT DAPI StrReplaceStringAll(
159 __inout LPWSTR* ppwzOriginal,
160 __in_z LPCWSTR wzOldSubString,
161 __in_z LPCWSTR wzNewSubString
162 );
163 HRESULT DAPI StrReplaceString(
164 __inout LPWSTR* ppwzOriginal,
165 __inout DWORD* pdwStartIndex,
166 __in_z LPCWSTR wzOldSubString,
167 __in_z LPCWSTR wzNewSubString
168 );
169
170 HRESULT DAPI StrHexEncode(
171 __in_ecount(cbSource) const BYTE* pbSource,
172 __in SIZE_T cbSource,
173 __out_ecount(cchDest) LPWSTR wzDest,
174 __in SIZE_T cchDest
175 );
176 HRESULT DAPI StrAllocHexEncode(
177 __in_ecount(cbSource) const BYTE* pbSource,
178 __in SIZE_T cbSource,
179 __deref_out_ecount_z(2*(cbSource+1)) LPWSTR* ppwzDest
180 );
181 HRESULT DAPI StrHexDecode(
182 __in_z LPCWSTR wzSource,
183 __out_bcount(cbDest) BYTE* pbDest,
184 __in SIZE_T cbDest
185 );
186 HRESULT DAPI StrAllocHexDecode(
187 __in_z LPCWSTR wzSource,
188 __out_bcount(*pcbDest) BYTE** ppbDest,
189 __out_opt DWORD* pcbDest
190 );
191
192 HRESULT DAPI StrAllocBase85Encode(
193 __in_bcount_opt(cbSource) const BYTE* pbSource,
194 __in SIZE_T cbSource,
195 __deref_out_z LPWSTR* pwzDest
196 );
197 HRESULT DAPI StrAllocBase85Decode(
198 __in_z LPCWSTR wzSource,
199 __deref_out_bcount(*pcbDest) BYTE** ppbDest,
200 __out SIZE_T* pcbDest
201 );
202
203 HRESULT DAPI MultiSzLen(
204 __in_ecount(*pcch) __nullnullterminated LPCWSTR pwzMultiSz,
205 __out SIZE_T* pcch
206 );
207 HRESULT DAPI MultiSzPrepend(
208 __deref_inout_ecount(*pcchMultiSz) __nullnullterminated LPWSTR* ppwzMultiSz,
209 __inout_opt SIZE_T* pcchMultiSz,
210 __in __nullnullterminated LPCWSTR pwzInsert
211 );
212 HRESULT DAPI MultiSzFindSubstring(
213 __in __nullnullterminated LPCWSTR pwzMultiSz,
214 __in __nullnullterminated LPCWSTR pwzSubstring,
215 __out_opt DWORD_PTR* pdwIndex,
216 __deref_opt_out __nullnullterminated LPCWSTR* ppwzFoundIn
217 );
218 HRESULT DAPI MultiSzFindString(
219 __in __nullnullterminated LPCWSTR pwzMultiSz,
220 __in __nullnullterminated LPCWSTR pwzString,
221 __out_opt DWORD_PTR* pdwIndex,
222 __deref_opt_out __nullnullterminated LPCWSTR* ppwzFound
223 );
224 HRESULT DAPI MultiSzRemoveString(
225 __deref_inout __nullnullterminated LPWSTR* ppwzMultiSz,
226 __in DWORD_PTR dwIndex
227 );
228 HRESULT DAPI MultiSzInsertString(
229 __deref_inout __nullnullterminated LPWSTR* ppwzMultiSz,
230 __inout_opt SIZE_T* pcchMultiSz,
231 __in DWORD_PTR dwIndex,
232 __in_z LPCWSTR pwzInsert
233 );
234 HRESULT DAPI MultiSzReplaceString(
235 __deref_inout __nullnullterminated LPWSTR* ppwzMultiSz,
236 __in DWORD_PTR dwIndex,
237 __in_z LPCWSTR pwzString
238 );
239
240 LPCWSTR DAPI wcsistr(
241 __in_z LPCWSTR wzString,
242 __in_z LPCWSTR wzCharSet
243 );
244
245 HRESULT DAPI StrStringToInt16(
246 __in_z LPCWSTR wzIn,
247 __in DWORD cchIn,
248 __out SHORT* psOut
249 );
250 HRESULT DAPI StrStringToUInt16(
251 __in_z LPCWSTR wzIn,
252 __in DWORD cchIn,
253 __out USHORT* pusOut
254 );
255 HRESULT DAPI StrStringToInt32(
256 __in_z LPCWSTR wzIn,
257 __in DWORD cchIn,
258 __out INT* piOut
259 );
260 HRESULT DAPI StrStringToUInt32(
261 __in_z LPCWSTR wzIn,
262 __in DWORD cchIn,
263 __out UINT* puiOut
264 );
265 HRESULT DAPI StrStringToInt64(
266 __in_z LPCWSTR wzIn,
267 __in DWORD cchIn,
268 __out LONGLONG* pllOut
269 );
270 HRESULT DAPI StrStringToUInt64(
271 __in_z LPCWSTR wzIn,
272 __in DWORD cchIn,
273 __out ULONGLONG* pullOut
274 );
275 void DAPI StrStringToUpper(
276 __inout_z LPWSTR wzIn
277 );
278 void DAPI StrStringToLower(
279 __inout_z LPWSTR wzIn
280 );
281 HRESULT DAPI StrAllocStringToUpperInvariant(
282 __deref_out_z LPWSTR* pscz,
283 __in_z LPCWSTR wzSource,
284 __in SIZE_T cchSource
285 );
286 HRESULT DAPI StrAllocStringToLowerInvariant(
287 __deref_out_z LPWSTR* pscz,
288 __in_z LPCWSTR wzSource,
289 __in SIZE_T cchSource
290 );
291
292 HRESULT DAPI StrArrayAllocString(
293 __deref_inout_ecount_opt(*pcStrArray) LPWSTR **prgsczStrArray,
294 __inout LPUINT pcStrArray,
295 __in_z LPCWSTR wzSource,
296 __in SIZE_T cchSource
297 );
298
299 HRESULT DAPI StrArrayFree(
300 __in_ecount(cStrArray) LPWSTR *rgsczStrArray,
301 __in UINT cStrArray
302 );
303
304 HRESULT DAPI StrSplitAllocArray(
305 __deref_inout_ecount_opt(*pcStrArray) LPWSTR **prgsczStrArray,
306 __inout LPUINT pcStrArray,
307 __in_z LPCWSTR wzSource,
308 __in_z LPCWSTR wzDelim
309 );
310
311 HRESULT DAPI StrSecureZeroString(
312 __in LPWSTR pwz
313 );
314 HRESULT DAPI StrSecureZeroFreeString(
315 __in LPWSTR pwz
316 );
317
318 #ifdef __cplusplus
319 }
320 #endif