camellia 2.7.0-x86-linux

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. data/CamelliaLib-2.7.0.tar.gz +0 -0
  2. data/README +59 -0
  3. data/doc/README +58 -0
  4. data/doc/camellia.dox +205 -0
  5. data/doc/html/annotated.html +52 -0
  6. data/doc/html/camellia_8h-source.html +1618 -0
  7. data/doc/html/camellia_8h.html +4583 -0
  8. data/doc/html/doxygen.css +358 -0
  9. data/doc/html/doxygen.png +0 -0
  10. data/doc/html/files.html +29 -0
  11. data/doc/html/ftv2blank.png +0 -0
  12. data/doc/html/ftv2doc.png +0 -0
  13. data/doc/html/ftv2folderclosed.png +0 -0
  14. data/doc/html/ftv2folderopen.png +0 -0
  15. data/doc/html/ftv2lastnode.png +0 -0
  16. data/doc/html/ftv2link.png +0 -0
  17. data/doc/html/ftv2mlastnode.png +0 -0
  18. data/doc/html/ftv2mnode.png +0 -0
  19. data/doc/html/ftv2node.png +0 -0
  20. data/doc/html/ftv2plastnode.png +0 -0
  21. data/doc/html/ftv2pnode.png +0 -0
  22. data/doc/html/ftv2vertline.png +0 -0
  23. data/doc/html/functions.html +108 -0
  24. data/doc/html/functions_0x62.html +78 -0
  25. data/doc/html/functions_0x63.html +112 -0
  26. data/doc/html/functions_0x64.html +113 -0
  27. data/doc/html/functions_0x65.html +102 -0
  28. data/doc/html/functions_0x66.html +82 -0
  29. data/doc/html/functions_0x67.html +76 -0
  30. data/doc/html/functions_0x68.html +88 -0
  31. data/doc/html/functions_0x69.html +90 -0
  32. data/doc/html/functions_0x6b.html +70 -0
  33. data/doc/html/functions_0x6c.html +88 -0
  34. data/doc/html/functions_0x6d.html +93 -0
  35. data/doc/html/functions_0x6e.html +79 -0
  36. data/doc/html/functions_0x6f.html +74 -0
  37. data/doc/html/functions_0x70.html +72 -0
  38. data/doc/html/functions_0x72.html +73 -0
  39. data/doc/html/functions_0x73.html +130 -0
  40. data/doc/html/functions_0x74.html +82 -0
  41. data/doc/html/functions_0x76.html +74 -0
  42. data/doc/html/functions_0x77.html +75 -0
  43. data/doc/html/functions_0x78.html +72 -0
  44. data/doc/html/functions_0x79.html +77 -0
  45. data/doc/html/functions_0x7e.html +76 -0
  46. data/doc/html/functions_func.html +93 -0
  47. data/doc/html/functions_func_0x62.html +64 -0
  48. data/doc/html/functions_func_0x63.html +83 -0
  49. data/doc/html/functions_func_0x64.html +99 -0
  50. data/doc/html/functions_func_0x65.html +95 -0
  51. data/doc/html/functions_func_0x66.html +74 -0
  52. data/doc/html/functions_func_0x67.html +72 -0
  53. data/doc/html/functions_func_0x68.html +76 -0
  54. data/doc/html/functions_func_0x69.html +70 -0
  55. data/doc/html/functions_func_0x6c.html +76 -0
  56. data/doc/html/functions_func_0x6d.html +78 -0
  57. data/doc/html/functions_func_0x6f.html +65 -0
  58. data/doc/html/functions_func_0x70.html +64 -0
  59. data/doc/html/functions_func_0x72.html +65 -0
  60. data/doc/html/functions_func_0x73.html +113 -0
  61. data/doc/html/functions_func_0x74.html +74 -0
  62. data/doc/html/functions_func_0x76.html +64 -0
  63. data/doc/html/functions_func_0x77.html +64 -0
  64. data/doc/html/functions_func_0x7e.html +72 -0
  65. data/doc/html/functions_vars.html +290 -0
  66. data/doc/html/globals.html +368 -0
  67. data/doc/html/globals_defs.html +41 -0
  68. data/doc/html/globals_func.html +364 -0
  69. data/doc/html/index.html +11 -0
  70. data/doc/html/main.html +22 -0
  71. data/doc/html/pages.html +24 -0
  72. data/doc/html/structCamAffineTransform.html +37 -0
  73. data/doc/html/structCamArithmParams.html +60 -0
  74. data/doc/html/structCamBasin.html +62 -0
  75. data/doc/html/structCamBitmapFont.html +37 -0
  76. data/doc/html/structCamBlobInfo.html +90 -0
  77. data/doc/html/structCamBlobs.html +51 -0
  78. data/doc/html/structCamImage.html +853 -0
  79. data/doc/html/structCamKeypoint.html +79 -0
  80. data/doc/html/structCamKeypoints.html +99 -0
  81. data/doc/html/structCamKeypointsKdTree.html +42 -0
  82. data/doc/html/structCamKeypointsMatches.html +54 -0
  83. data/doc/html/structCamLabelingResults.html +46 -0
  84. data/doc/html/structCamLinearFilterKernel.html +63 -0
  85. data/doc/html/structCamMeasuresResults.html +54 -0
  86. data/doc/html/structCamMorphoMathsKernel.html +81 -0
  87. data/doc/html/structCamPoint.html +46 -0
  88. data/doc/html/structCamRLEImage.html +183 -0
  89. data/doc/html/structCamROI.html +80 -0
  90. data/doc/html/structCamRun.html +56 -0
  91. data/doc/html/structCamSepFilterKernel.html +67 -0
  92. data/doc/html/structCamTable.html +46 -0
  93. data/doc/html/structCamTableOfBasins.html +37 -0
  94. data/doc/html/structCamVolbergFwdParams.html +46 -0
  95. data/doc/html/structCamWarpingParams.html +70 -0
  96. data/doc/html/tab_b.gif +0 -0
  97. data/doc/html/tab_l.gif +0 -0
  98. data/doc/html/tab_r.gif +0 -0
  99. data/doc/html/tabs.css +102 -0
  100. data/doc/html/todo.html +29 -0
  101. data/doc/html/tree.html +106 -0
  102. data/doc/rtf/refman.rtf +7866 -0
  103. data/ext/Makefile +149 -0
  104. data/ext/README +12 -0
  105. data/ext/camellia_ruby.i +493 -0
  106. data/ext/camellia_ruby_wrap.cxx +21103 -0
  107. data/ext/extconf.rb +12 -0
  108. data/ext/install.rb +11 -0
  109. data/ext/swig_ruby.dsp +159 -0
  110. data/ext/swig_ruby.vcproj +290 -0
  111. data/ext/test.rb +31 -0
  112. data/inc/SHLWAPI.H +661 -0
  113. data/inc/cam_capture.h +202 -0
  114. data/inc/camellia.h +2651 -0
  115. data/inc/camellia_internals.h +205 -0
  116. data/inc/config.h +62 -0
  117. data/inc/config.h.in +61 -0
  118. data/inc/stamp-h1 +1 -0
  119. data/lib/camellia-fox.rb +39 -0
  120. data/test/test_arithm.rb +13 -0
  121. data/test/test_capture.rb +15 -0
  122. data/test/test_color_labeling.rb +45 -0
  123. data/test/test_copy.rb +13 -0
  124. data/test/test_draw.rb +15 -0
  125. data/test/test_fixed_filters.rb +23 -0
  126. data/test/test_fox.rb +106 -0
  127. data/test/test_fox2.rb +108 -0
  128. data/test/test_histogram.rb +18 -0
  129. data/test/test_hough.rb +29 -0
  130. data/test/test_keypoints.rb +106 -0
  131. data/test/test_labeling.rb +30 -0
  132. data/test/test_mask.rb +34 -0
  133. data/test/test_warping.rb +46 -0
  134. data/test/test_watershed.rb +35 -0
  135. data/test/ts_camellia.rb +12 -0
  136. metadata +204 -0
@@ -0,0 +1,31 @@
1
+ require 'camellia'
2
+ include Camellia
3
+
4
+ j=0
5
+ Thread.new do
6
+ loop do
7
+ sleep 0.01
8
+ puts "#{j}..."
9
+ j+=1
10
+ end
11
+ end
12
+
13
+ # CamCapture2 is the original version from the C library
14
+ # It is not Ruby-threads compatible
15
+ image=CamImage.new
16
+ capture=CamCapture2.new(0)
17
+ for i in 1..10 do
18
+ capture.capture image
19
+ puts "Grabbed image #{i}...#{image.width}*#{image.height}"
20
+ end
21
+
22
+ # CamCapture is the Ruby specific version
23
+ # It is fully Ruby-threads compatible
24
+ capture=CamCapture.new(0)
25
+ puts "#{capture.width}*#{capture.height}"
26
+ image=CamImage.new
27
+ for i in 1..10 do
28
+ capture.capture image
29
+ puts "Grabbed image #{i}...#{image.width}*#{image.height}"
30
+ end
31
+
@@ -0,0 +1,661 @@
1
+
2
+ /*****************************************************************************\
3
+ * *
4
+ * shlwapi.h - Interface for the Windows light-weight utility APIs *
5
+ * *
6
+ * Version 1.0 *
7
+ * *
8
+ * Copyright 1991-1998, Microsoft Corp. All rights reserved. *
9
+ * *
10
+ \*****************************************************************************/
11
+
12
+
13
+ #ifndef _INC_SHLWAPI
14
+ #define _INC_SHLWAPI
15
+
16
+ #ifndef NOSHLWAPI
17
+
18
+
19
+ //
20
+ // Define API decoration for direct importing of DLL references.
21
+ //
22
+ #ifndef WINSHLWAPI
23
+ #if !defined(_SHLWAPI_)
24
+ #define LWSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
25
+ #define LWSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
26
+ #else
27
+ #define LWSTDAPI STDAPI
28
+ #define LWSTDAPI_(type) STDAPI_(type)
29
+ #endif
30
+ #endif // WINSHLWAPI
31
+
32
+ #ifdef _WIN32
33
+ #include <pshpack1.h>
34
+ #endif
35
+
36
+ #ifdef __cplusplus
37
+ extern "C" {
38
+ #endif
39
+
40
+ //
41
+ // Users of this header may define any number of these constants to avoid
42
+ // the definitions of each functional group.
43
+ //
44
+ // NO_SHLWAPI_STRFCNS String functions
45
+ // NO_SHLWAPI_PATH Path functions
46
+ // NO_SHLWAPI_REG Registry functions
47
+ // NO_SHLWAPI_STREAM Stream functions
48
+ // NO_SHLWAPI_GDI GDI helper functions
49
+
50
+
51
+ #ifndef NO_SHLWAPI_STRFCNS
52
+ //
53
+ //=============== String Routines ===================================
54
+ //
55
+
56
+ LWSTDAPI_(LPSTR) StrChrA(LPCSTR lpStart, WORD wMatch);
57
+ LWSTDAPI_(LPWSTR) StrChrW(LPCWSTR lpStart, WORD wMatch);
58
+ LWSTDAPI_(LPSTR) StrChrIA(LPCSTR lpStart, WORD wMatch);
59
+ LWSTDAPI_(LPWSTR) StrChrIW(LPCWSTR lpStart, WORD wMatch);
60
+ LWSTDAPI_(int) StrCmpNA(LPCSTR lpStr1, LPCSTR lpStr2, int nChar);
61
+ LWSTDAPI_(int) StrCmpNW(LPCWSTR lpStr1, LPCWSTR lpStr2, int nChar);
62
+ LWSTDAPI_(int) StrCmpNIA(LPCSTR lpStr1, LPCSTR lpStr2, int nChar);
63
+ LWSTDAPI_(int) StrCmpNIW(LPCWSTR lpStr1, LPCWSTR lpStr2, int nChar);
64
+ LWSTDAPI_(int) StrCSpnA(LPCSTR lpStr, LPCSTR lpSet);
65
+ LWSTDAPI_(int) StrCSpnW(LPCWSTR lpStr, LPCWSTR lpSet);
66
+ LWSTDAPI_(int) StrCSpnIA(LPCSTR lpStr, LPCSTR lpSet);
67
+ LWSTDAPI_(int) StrCSpnIW(LPCWSTR lpStr, LPCWSTR lpSet);
68
+ LWSTDAPI_(LPSTR) StrDupA(LPCSTR lpSrch);
69
+ LWSTDAPI_(LPWSTR) StrDupW(LPCWSTR lpSrch);
70
+ LWSTDAPI_(LPSTR) StrFormatByteSizeA(DWORD dw, LPSTR szBuf, UINT uiBufSize);
71
+ LWSTDAPI_(LPWSTR) StrFormatByteSizeW(LONGLONG qdw, LPWSTR szBuf, UINT uiBufSize);
72
+ LWSTDAPI_(int) StrFromTimeIntervalA(LPSTR pszOut, UINT cchMax, DWORD dwTimeMS, int digits);
73
+ LWSTDAPI_(int) StrFromTimeIntervalW(LPWSTR pszOut, UINT cchMax, DWORD dwTimeMS, int digits);
74
+ LWSTDAPI_(BOOL) StrIsIntlEqualA(BOOL fCaseSens, LPCSTR lpString1, LPCSTR lpString2, int nChar);
75
+ LWSTDAPI_(BOOL) StrIsIntlEqualW(BOOL fCaseSens, LPCWSTR lpString1, LPCWSTR lpString2, int nChar);
76
+ LWSTDAPI_(LPSTR) StrNCatA(LPSTR psz1, LPCSTR psz2, int cchMax);
77
+ LWSTDAPI_(LPWSTR) StrNCatW(LPWSTR psz1, LPCWSTR psz2, int cchMax);
78
+ LWSTDAPI_(LPSTR) StrPBrkA(LPCSTR psz, LPCSTR pszSet);
79
+ LWSTDAPI_(LPWSTR) StrPBrkW(LPCWSTR psz, LPCWSTR pszSet);
80
+ LWSTDAPI_(LPSTR) StrRChrA(LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch);
81
+ LWSTDAPI_(LPWSTR) StrRChrW(LPCWSTR lpStart, LPCWSTR lpEnd, WORD wMatch);
82
+ LWSTDAPI_(LPSTR) StrRChrIA(LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch);
83
+ LWSTDAPI_(LPWSTR) StrRChrIW(LPCWSTR lpStart, LPCWSTR lpEnd, WORD wMatch);
84
+ LWSTDAPI_(LPSTR) StrRStrIA(LPCSTR lpSource, LPCSTR lpLast, LPCSTR lpSrch);
85
+ LWSTDAPI_(LPWSTR) StrRStrIW(LPCWSTR lpSource, LPCWSTR lpLast, LPCWSTR lpSrch);
86
+ LWSTDAPI_(int) StrSpnA(LPCSTR psz, LPCSTR pszSet);
87
+ LWSTDAPI_(int) StrSpnW(LPCWSTR psz, LPCWSTR pszSet);
88
+ LWSTDAPI_(LPSTR) StrStrA(LPCSTR lpFirst, LPCSTR lpSrch);
89
+ LWSTDAPI_(LPWSTR) StrStrW(LPCWSTR lpFirst, LPCWSTR lpSrch);
90
+ LWSTDAPI_(LPSTR) StrStrIA(LPCSTR lpFirst, LPCSTR lpSrch);
91
+ LWSTDAPI_(LPWSTR) StrStrIW(LPCWSTR lpFirst, LPCWSTR lpSrch);
92
+ LWSTDAPI_(int) StrToIntA(LPCSTR lpSrc);
93
+ LWSTDAPI_(int) StrToIntW(LPCWSTR lpSrc);
94
+ LWSTDAPI_(BOOL) StrToIntExA(LPCSTR pszString, DWORD dwFlags, int FAR * piRet);
95
+ LWSTDAPI_(BOOL) StrToIntExW(LPCWSTR pszString, DWORD dwFlags, int FAR * piRet);
96
+ LWSTDAPI_(BOOL) StrTrimA(LPSTR psz, LPCSTR pszTrimChars);
97
+ LWSTDAPI_(BOOL) StrTrimW(LPWSTR psz, LPCWSTR pszTrimChars);
98
+
99
+ LWSTDAPI_(LPWSTR) StrCatW(LPWSTR psz1, LPCWSTR psz2);
100
+ LWSTDAPI_(int) StrCmpW(LPCWSTR psz1, LPCWSTR psz2);
101
+ LWSTDAPI_(int) StrCmpIW(LPCWSTR psz1, LPCWSTR psz2);
102
+ LWSTDAPI_(LPWSTR) StrCpyW(LPWSTR psz1, LPCWSTR psz2);
103
+ LWSTDAPI_(LPWSTR) StrCpyNW(LPWSTR psz1, LPCWSTR psz2, int cchMax);
104
+
105
+ LWSTDAPI_(BOOL) ChrCmpIA(WORD w1, WORD w2);
106
+ LWSTDAPI_(BOOL) ChrCmpIW(WORD w1, WORD w2);
107
+
108
+ #define StrIntlEqNA( s1, s2, nChar) StrIsIntlEqualA( TRUE, s1, s2, nChar)
109
+ #define StrIntlEqNW( s1, s2, nChar) StrIsIntlEqualW( TRUE, s1, s2, nChar)
110
+ #define StrIntlEqNIA(s1, s2, nChar) StrIsIntlEqualA(FALSE, s1, s2, nChar)
111
+ #define StrIntlEqNIW(s1, s2, nChar) StrIsIntlEqualW(FALSE, s1, s2, nChar)
112
+
113
+
114
+ #ifdef UNICODE
115
+ #define StrChr StrChrW
116
+ #define StrRChr StrRChrW
117
+ #define StrChrI StrChrIW
118
+ #define StrRChrI StrRChrIW
119
+ #define StrCmpN StrCmpNW
120
+ #define StrCmpNI StrCmpNIW
121
+ #define StrStr StrStrW
122
+ #define StrStrI StrStrIW
123
+ #define StrDup StrDupW
124
+ #define StrRStrI StrRStrIW
125
+ #define StrCSpn StrCSpnW
126
+ #define StrCSpnI StrCSpnIW
127
+ #define StrSpn StrSpnW
128
+ #define StrToInt StrToIntW
129
+ #define StrPBrk StrPBrkW
130
+ #define StrToIntEx StrToIntExW
131
+ #define StrFromTimeInterval StrFromTimeIntervalW
132
+ #define StrIntlEqN StrIntlEqNW
133
+ #define StrIntlEqNI StrIntlEqNIW
134
+ #define StrFormatByteSize StrFormatByteSizeW
135
+ #define StrNCat StrNCatW
136
+ #define StrTrim StrTrimW
137
+ #define ChrCmpI ChrCmpIW
138
+
139
+
140
+ #else
141
+ #define StrChr StrChrA
142
+ #define StrRChr StrRChrA
143
+ #define StrChrI StrChrIA
144
+ #define StrRChrI StrRChrIA
145
+ #define StrCmpN StrCmpNA
146
+ #define StrCmpNI StrCmpNIA
147
+ #define StrStr StrStrA
148
+ #define StrStrI StrStrIA
149
+ #define StrDup StrDupA
150
+ #define StrRStrI StrRStrIA
151
+ #define StrCSpn StrCSpnA
152
+ #define StrCSpnI StrCSpnIA
153
+ #define StrSpn StrSpnA
154
+ #define StrToInt StrToIntA
155
+ #define StrPBrk StrPBrkA
156
+ #define StrToIntEx StrToIntExA
157
+ #define StrFromTimeInterval StrFromTimeIntervalA
158
+ #define StrIntlEqN StrIntlEqNA
159
+ #define StrIntlEqNI StrIntlEqNIA
160
+ #define StrFormatByteSize StrFormatByteSizeA
161
+ #define StrNCat StrNCatA
162
+ #define StrTrim StrTrimA
163
+ #define ChrCmpI ChrCmpIA
164
+ #endif
165
+
166
+
167
+ // Flags for StrToIntEx
168
+ #define STIF_DEFAULT 0x00000000L
169
+ #define STIF_SUPPORT_HEX 0x00000001L
170
+
171
+
172
+ #define StrCatA lstrcatA
173
+ #define StrCmpA lstrcmpA
174
+ #define StrCmpIA lstrcmpiA
175
+ #define StrCpyA lstrcpyA
176
+ #define StrCpyNA lstrcpynA
177
+
178
+
179
+ #define StrToLong StrToInt
180
+ #define StrNCmp StrCmpN
181
+ #define StrNCmpI StrCmpNI
182
+ #define StrNCpy StrCpyN
183
+ #define StrCatN StrNCat
184
+
185
+ #ifdef UNICODE
186
+ #define StrCat StrCatW
187
+ #define StrCmp StrCmpW
188
+ #define StrCmpI StrCmpIW
189
+ #define StrCpy StrCpyW
190
+ #define StrCpyN StrCpyNW
191
+ #else
192
+ #define StrCat lstrcatA
193
+ #define StrCmp lstrcmpA
194
+ #define StrCmpI lstrcmpiA
195
+ #define StrCpy lstrcpyA
196
+ #define StrCpyN lstrcpynA
197
+ #endif
198
+
199
+
200
+
201
+ #endif // NO_SHLWAPI_STRFCNS
202
+
203
+
204
+ #ifndef NO_SHLWAPI_PATH
205
+
206
+ //
207
+ //=============== Path Routines ===================================
208
+ //
209
+
210
+ LWSTDAPI_(LPSTR) PathAddBackslashA(LPSTR pszPath);
211
+ LWSTDAPI_(LPWSTR) PathAddBackslashW(LPWSTR pszPath);
212
+ LWSTDAPI_(BOOL) PathAddExtensionA(LPSTR pszPath, LPCSTR pszExt);
213
+ LWSTDAPI_(BOOL) PathAddExtensionW(LPWSTR pszPath, LPCWSTR pszExt);
214
+ LWSTDAPI_(BOOL) PathAppendA(LPSTR pszPath, LPCSTR pMore);
215
+ LWSTDAPI_(BOOL) PathAppendW(LPWSTR pszPath, LPCWSTR pMore);
216
+ LWSTDAPI_(LPSTR) PathBuildRootA(LPSTR szRoot, int iDrive);
217
+ LWSTDAPI_(LPWSTR) PathBuildRootW(LPWSTR szRoot, int iDrive);
218
+ LWSTDAPI_(BOOL) PathCanonicalizeA(LPSTR pszBuf, LPCSTR pszPath);
219
+ LWSTDAPI_(BOOL) PathCanonicalizeW(LPWSTR pszBuf, LPCWSTR pszPath);
220
+ LWSTDAPI_(LPSTR) PathCombineA(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile);
221
+ LWSTDAPI_(LPWSTR) PathCombineW(LPWSTR szDest, LPCWSTR lpszDir, LPCWSTR lpszFile);
222
+ LWSTDAPI_(BOOL) PathCompactPathA(HDC hDC, LPSTR pszPath, UINT dx);
223
+ LWSTDAPI_(BOOL) PathCompactPathW(HDC hDC, LPWSTR pszPath, UINT dx);
224
+ LWSTDAPI_(BOOL) PathCompactPathExA(LPSTR pszOut, LPCSTR pszSrc, UINT cchMax, DWORD dwFlags);
225
+ LWSTDAPI_(BOOL) PathCompactPathExW(LPWSTR pszOut, LPCWSTR pszSrc, UINT cchMax, DWORD dwFlags);
226
+ LWSTDAPI_(int) PathCommonPrefixA(LPCSTR pszFile1, LPCSTR pszFile2, LPSTR achPath);
227
+ LWSTDAPI_(int) PathCommonPrefixW(LPCWSTR pszFile1, LPCWSTR pszFile2, LPWSTR achPath);
228
+ LWSTDAPI_(BOOL) PathFileExistsA(LPCSTR pszPath);
229
+ LWSTDAPI_(BOOL) PathFileExistsW(LPCWSTR pszPath);
230
+ LWSTDAPI_(LPSTR) PathFindExtensionA(LPCSTR pszPath);
231
+ LWSTDAPI_(LPWSTR) PathFindExtensionW(LPCWSTR pszPath);
232
+ LWSTDAPI_(LPSTR) PathFindFileNameA(LPCSTR pszPath);
233
+ LWSTDAPI_(LPWSTR) PathFindFileNameW(LPCWSTR pszPath);
234
+ LWSTDAPI_(LPSTR) PathFindNextComponentA(LPCSTR pszPath);
235
+ LWSTDAPI_(LPWSTR) PathFindNextComponentW(LPCWSTR pszPath);
236
+ LWSTDAPI_(BOOL) PathFindOnPathA(LPSTR pszPath, LPCSTR * ppszOtherDirs);
237
+ LWSTDAPI_(BOOL) PathFindOnPathW(LPWSTR pszPath, LPCWSTR * ppszOtherDirs);
238
+ LWSTDAPI_(LPSTR) PathGetArgsA(LPCSTR pszPath);
239
+ LWSTDAPI_(LPWSTR) PathGetArgsW(LPCWSTR pszPath);
240
+
241
+ LWSTDAPI_(UINT) PathGetCharTypeA(UCHAR ch);
242
+ LWSTDAPI_(UINT) PathGetCharTypeW(WCHAR ch);
243
+
244
+ // Return flags for PathGetCharType
245
+ #define GCT_INVALID 0x0000
246
+ #define GCT_LFNCHAR 0x0001
247
+ #define GCT_SHORTCHAR 0x0002
248
+ #define GCT_WILD 0x0004
249
+ #define GCT_SEPARATOR 0x0008
250
+
251
+ LWSTDAPI_(int) PathGetDriveNumberA(LPCSTR pszPath);
252
+ LWSTDAPI_(int) PathGetDriveNumberW(LPCWSTR pszPath);
253
+ LWSTDAPI_(BOOL) PathIsDirectoryA(LPCSTR pszPath);
254
+ LWSTDAPI_(BOOL) PathIsDirectoryW(LPCWSTR pszPath);
255
+ LWSTDAPI_(BOOL) PathIsFileSpecA(LPCSTR pszPath);
256
+ LWSTDAPI_(BOOL) PathIsFileSpecW(LPCWSTR pszPath);
257
+ LWSTDAPI_(BOOL) PathIsPrefixA(LPCSTR pszPrefix, LPCSTR pszPath);
258
+ LWSTDAPI_(BOOL) PathIsPrefixW(LPCWSTR pszPrefix, LPCWSTR pszPath);
259
+ LWSTDAPI_(BOOL) PathIsRelativeA(LPCSTR pszPath);
260
+ LWSTDAPI_(BOOL) PathIsRelativeW(LPCWSTR pszPath);
261
+ LWSTDAPI_(BOOL) PathIsRootA(LPCSTR pszPath);
262
+ LWSTDAPI_(BOOL) PathIsRootW(LPCWSTR pszPath);
263
+ LWSTDAPI_(BOOL) PathIsSameRootA(LPCSTR pszPath1, LPCSTR pszPath2);
264
+ LWSTDAPI_(BOOL) PathIsSameRootW(LPCWSTR pszPath1, LPCWSTR pszPath2);
265
+ LWSTDAPI_(BOOL) PathIsUNCA(LPCSTR pszPath);
266
+ LWSTDAPI_(BOOL) PathIsUNCW(LPCWSTR pszPath);
267
+ LWSTDAPI_(BOOL) PathIsUNCServerA(LPCSTR pszPath);
268
+ LWSTDAPI_(BOOL) PathIsUNCServerW(LPCWSTR pszPath);
269
+ LWSTDAPI_(BOOL) PathIsUNCServerShareA(LPCSTR pszPath);
270
+ LWSTDAPI_(BOOL) PathIsUNCServerShareW(LPCWSTR pszPath);
271
+ LWSTDAPI_(BOOL) PathIsContentTypeA(LPCSTR pszPath, LPCSTR pszContentType);
272
+ LWSTDAPI_(BOOL) PathIsContentTypeW(LPCWSTR pszPath, LPCWSTR pszContentType);
273
+ LWSTDAPI_(BOOL) PathIsURLA(LPCSTR pszPath);
274
+ LWSTDAPI_(BOOL) PathIsURLW(LPCWSTR pszPath);
275
+ LWSTDAPI_(BOOL) PathMakePrettyA(LPSTR pszPath);
276
+ LWSTDAPI_(BOOL) PathMakePrettyW(LPWSTR pszPath);
277
+ LWSTDAPI_(BOOL) PathMatchSpecA(LPCSTR pszFile, LPCSTR pszSpec);
278
+ LWSTDAPI_(BOOL) PathMatchSpecW(LPCWSTR pszFile, LPCWSTR pszSpec);
279
+ LWSTDAPI_(int) PathParseIconLocationA(LPSTR pszIconFile);
280
+ LWSTDAPI_(int) PathParseIconLocationW(LPWSTR pszIconFile);
281
+ LWSTDAPI_(void) PathQuoteSpacesA(LPSTR lpsz);
282
+ LWSTDAPI_(void) PathQuoteSpacesW(LPWSTR lpsz);
283
+ LWSTDAPI_(BOOL) PathRelativePathToA(LPSTR pszPath, LPCSTR pszFrom, DWORD dwAttrFrom, LPCSTR pszTo, DWORD dwAttrTo);
284
+ LWSTDAPI_(BOOL) PathRelativePathToW(LPWSTR pszPath, LPCWSTR pszFrom, DWORD dwAttrFrom, LPCWSTR pszTo, DWORD dwAttrTo);
285
+ LWSTDAPI_(void) PathRemoveArgsA(LPSTR pszPath);
286
+ LWSTDAPI_(void) PathRemoveArgsW(LPWSTR pszPath);
287
+ LWSTDAPI_(LPSTR) PathRemoveBackslashA(LPSTR pszPath);
288
+ LWSTDAPI_(LPWSTR) PathRemoveBackslashW(LPWSTR pszPath);
289
+ LWSTDAPI_(void) PathRemoveBlanksA(LPSTR pszPath);
290
+ LWSTDAPI_(void) PathRemoveBlanksW(LPWSTR pszPath);
291
+ LWSTDAPI_(void) PathRemoveExtensionA(LPSTR pszPath);
292
+ LWSTDAPI_(void) PathRemoveExtensionW(LPWSTR pszPath);
293
+ LWSTDAPI_(BOOL) PathRemoveFileSpecA(LPSTR pszPath);
294
+ LWSTDAPI_(BOOL) PathRemoveFileSpecW(LPWSTR pszPath);
295
+ LWSTDAPI_(BOOL) PathRenameExtensionA(LPSTR pszPath, LPCSTR pszExt);
296
+ LWSTDAPI_(BOOL) PathRenameExtensionW(LPWSTR pszPath, LPCWSTR pszExt);
297
+ LWSTDAPI_(BOOL) PathSearchAndQualifyA(LPCSTR pszPath, LPSTR pszBuf, UINT cchBuf);
298
+ LWSTDAPI_(BOOL) PathSearchAndQualifyW(LPCWSTR pszPath, LPWSTR pszBuf, UINT cchBuf);
299
+ LWSTDAPI_(void) PathSetDlgItemPathA(HWND hDlg, int id, LPCSTR pszPath);
300
+ LWSTDAPI_(void) PathSetDlgItemPathW(HWND hDlg, int id, LPCWSTR pszPath);
301
+ LWSTDAPI_(LPSTR) PathSkipRootA(LPCSTR pszPath);
302
+ LWSTDAPI_(LPWSTR) PathSkipRootW(LPCWSTR pszPath);
303
+ LWSTDAPI_(void) PathStripPathA(LPSTR pszPath);
304
+ LWSTDAPI_(void) PathStripPathW(LPWSTR pszPath);
305
+ LWSTDAPI_(BOOL) PathStripToRootA(LPSTR pszPath);
306
+ LWSTDAPI_(BOOL) PathStripToRootW(LPWSTR pszPath);
307
+ LWSTDAPI_(void) PathUnquoteSpacesA(LPSTR lpsz);
308
+ LWSTDAPI_(void) PathUnquoteSpacesW(LPWSTR lpsz);
309
+ LWSTDAPI_(BOOL) PathMakeSystemFolderA(LPCSTR pszPath);
310
+ LWSTDAPI_(BOOL) PathMakeSystemFolderW(LPCWSTR pszPath);
311
+ LWSTDAPI_(BOOL) PathUnmakeSystemFolderA(LPCSTR pszPath);
312
+ LWSTDAPI_(BOOL) PathUnmakeSystemFolderW(LPCWSTR pszPath);
313
+ LWSTDAPI_(BOOL) PathIsSystemFolderA(LPCSTR pszPath, DWORD dwAttrb);
314
+ LWSTDAPI_(BOOL) PathIsSystemFolderW(LPCWSTR pszPath, DWORD dwAttrb);
315
+
316
+
317
+ #ifdef UNICODE
318
+ #define PathAddBackslash PathAddBackslashW
319
+ #define PathAddExtension PathAddExtensionW
320
+ #define PathAppend PathAppendW
321
+ #define PathBuildRoot PathBuildRootW
322
+ #define PathCanonicalize PathCanonicalizeW
323
+ #define PathCombine PathCombineW
324
+ #define PathCompactPath PathCompactPathW
325
+ #define PathCompactPathEx PathCompactPathExW
326
+ #define PathCommonPrefix PathCommonPrefixW
327
+ #define PathFileExists PathFileExistsW
328
+ #define PathFindExtension PathFindExtensionW
329
+ #define PathFindFileName PathFindFileNameW
330
+ #define PathFindNextComponent PathFindNextComponentW
331
+ #define PathFindOnPath PathFindOnPathW
332
+ #define PathGetArgs PathGetArgsW
333
+ #define PathGetCharType PathGetCharTypeW
334
+ #define PathGetDriveNumber PathGetDriveNumberW
335
+ #define PathIsDirectory PathIsDirectoryW
336
+ #define PathIsFileSpec PathIsFileSpecW
337
+ #define PathIsPrefix PathIsPrefixW
338
+ #define PathIsRelative PathIsRelativeW
339
+ #define PathIsRoot PathIsRootW
340
+ #define PathIsSameRoot PathIsSameRootW
341
+ #define PathIsUNC PathIsUNCW
342
+ #define PathIsUNCServer PathIsUNCServerW
343
+ #define PathIsUNCServerShare PathIsUNCServerShareW
344
+ #define PathIsContentType PathIsContentTypeW
345
+ #define PathIsHTMLFile PathIsHTMLFileW
346
+ #define PathIsURL PathIsURLW
347
+ #define PathMakePretty PathMakePrettyW
348
+ #define PathMatchSpec PathMatchSpecW
349
+ #define PathParseIconLocation PathParseIconLocationW
350
+ #define PathQuoteSpaces PathQuoteSpacesW
351
+ #define PathRelativePathTo PathRelativePathToW
352
+ #define PathRemoveArgs PathRemoveArgsW
353
+ #define PathRemoveBackslash PathRemoveBackslashW
354
+ #define PathRemoveBlanks PathRemoveBlanksW
355
+ #define PathRemoveExtension PathRemoveExtensionW
356
+ #define PathRemoveFileSpec PathRemoveFileSpecW
357
+ #define PathRenameExtension PathRenameExtensionW
358
+ #define PathSearchAndQualify PathSearchAndQualifyW
359
+ #define PathSetDlgItemPath PathSetDlgItemPathW
360
+ #define PathSkipRoot PathSkipRootW
361
+ #define PathStripPath PathStripPathW
362
+ #define PathStripToRoot PathStripToRootW
363
+ #define PathUnquoteSpaces PathUnquoteSpacesW
364
+ #define PathMakeSystemFolder PathMakeSystemFolderW
365
+ #define PathUnmakeSystemFolder PathUnmakeSystemFolderW
366
+ #define PathIsSystemFolder PathIsSystemFolderW
367
+ #else
368
+ #define PathAddBackslash PathAddBackslashA
369
+ #define PathAddExtension PathAddExtensionA
370
+ #define PathAppend PathAppendA
371
+ #define PathBuildRoot PathBuildRootA
372
+ #define PathCanonicalize PathCanonicalizeA
373
+ #define PathCombine PathCombineA
374
+ #define PathCompactPath PathCompactPathA
375
+ #define PathCompactPathEx PathCompactPathExA
376
+ #define PathCommonPrefix PathCommonPrefixA
377
+ #define PathFileExists PathFileExistsA
378
+ #define PathFindExtension PathFindExtensionA
379
+ #define PathFindFileName PathFindFileNameA
380
+ #define PathFindNextComponent PathFindNextComponentA
381
+ #define PathFindOnPath PathFindOnPathA
382
+ #define PathGetArgs PathGetArgsA
383
+ #define PathGetCharType PathGetCharTypeA
384
+ #define PathGetDriveNumber PathGetDriveNumberA
385
+ #define PathIsDirectory PathIsDirectoryA
386
+ #define PathIsFileSpec PathIsFileSpecA
387
+ #define PathIsPrefix PathIsPrefixA
388
+ #define PathIsRelative PathIsRelativeA
389
+ #define PathIsRoot PathIsRootA
390
+ #define PathIsSameRoot PathIsSameRootA
391
+ #define PathIsUNC PathIsUNCA
392
+ #define PathIsUNCServer PathIsUNCServerA
393
+ #define PathIsUNCServerShare PathIsUNCServerShareA
394
+ #define PathIsContentType PathIsContentTypeA
395
+ #define PathIsHTMLFile PathIsHTMLFileA
396
+ #define PathIsURL PathIsURLA
397
+ #define PathMakePretty PathMakePrettyA
398
+ #define PathMatchSpec PathMatchSpecA
399
+ #define PathParseIconLocation PathParseIconLocationA
400
+ #define PathQuoteSpaces PathQuoteSpacesA
401
+ #define PathRelativePathTo PathRelativePathToA
402
+ #define PathRemoveArgs PathRemoveArgsA
403
+ #define PathRemoveBackslash PathRemoveBackslashA
404
+ #define PathRemoveBlanks PathRemoveBlanksA
405
+ #define PathRemoveExtension PathRemoveExtensionA
406
+ #define PathRemoveFileSpec PathRemoveFileSpecA
407
+ #define PathRenameExtension PathRenameExtensionA
408
+ #define PathSearchAndQualify PathSearchAndQualifyA
409
+ #define PathSetDlgItemPath PathSetDlgItemPathA
410
+ #define PathSkipRoot PathSkipRootA
411
+ #define PathStripPath PathStripPathA
412
+ #define PathStripToRoot PathStripToRootA
413
+ #define PathUnquoteSpaces PathUnquoteSpacesA
414
+ #define PathMakeSystemFolder PathMakeSystemFolderA
415
+ #define PathUnmakeSystemFolder PathUnmakeSystemFolderA
416
+ #define PathIsSystemFolder PathIsSystemFolderA
417
+ #endif
418
+
419
+
420
+
421
+ #endif // NO_SHLWAPI_PATH
422
+
423
+
424
+ #ifndef NO_SHLWAPI_REG
425
+ //
426
+ //=============== Registry Routines ===================================
427
+ //
428
+
429
+ // SHDeleteEmptyKey mimics RegDeleteKey as it behaves on NT.
430
+ // SHDeleteKey mimics RegDeleteKey as it behaves on Win95.
431
+
432
+ LWSTDAPI_(DWORD) SHDeleteEmptyKeyA(HKEY hkey, LPCSTR pszSubKey);
433
+ LWSTDAPI_(DWORD) SHDeleteEmptyKeyW(HKEY hkey, LPCWSTR pszSubKey);
434
+ LWSTDAPI_(DWORD) SHDeleteKeyA(HKEY hkey, LPCSTR pszSubKey);
435
+ LWSTDAPI_(DWORD) SHDeleteKeyW(HKEY hkey, LPCWSTR pszSubKey);
436
+
437
+
438
+ // These functions open the key, get/set/delete the value, then close
439
+ // the key.
440
+
441
+ LWSTDAPI_(DWORD) SHDeleteValueA(HKEY hkey, LPCSTR pszSubKey, LPCSTR pszValue);
442
+ LWSTDAPI_(DWORD) SHDeleteValueW(HKEY hkey, LPCWSTR pszSubKey, LPCWSTR pszValue);
443
+ LWSTDAPI_(DWORD) SHGetValueA(HKEY hkey, LPCSTR pszSubKey, LPCSTR pszValue, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData);
444
+ LWSTDAPI_(DWORD) SHGetValueW(HKEY hkey, LPCWSTR pszSubKey, LPCWSTR pszValue, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData);
445
+ LWSTDAPI_(DWORD) SHSetValueA(HKEY hkey, LPCSTR pszSubKey, LPCSTR pszValue, DWORD dwType, LPCVOID pvData, DWORD cbData);
446
+ LWSTDAPI_(DWORD) SHSetValueW(HKEY hkey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwType, LPCVOID pvData, DWORD cbData);
447
+
448
+ // These functions work just like RegQueryValueEx, except if the
449
+ // data type is REG_EXPAND_SZ, then these will go ahead and expand
450
+ // out the string. *pdwType will always be massaged to REG_SZ
451
+ // if this happens. REG_SZ values are also guaranteed to be null
452
+ // terminated.
453
+
454
+ LWSTDAPI_(DWORD) SHQueryValueExA(HKEY hkey, LPCSTR pszValue, LPDWORD pdwReserved, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData);
455
+ LWSTDAPI_(DWORD) SHQueryValueExW(HKEY hkey, LPCWSTR pszValue, LPDWORD pdwReserved, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData);
456
+
457
+ // Enumeration functions support.
458
+
459
+ LWSTDAPI_(LONG) SHEnumKeyExA(HKEY hkey, DWORD dwIndex, LPSTR pszName, LPDWORD pcchName);
460
+ LWSTDAPI_(LONG) SHEnumKeyExW(HKEY hkey, DWORD dwIndex, LPWSTR pszName, LPDWORD pcchName);
461
+ LWSTDAPI_(LONG) SHEnumValueA(HKEY hkey, DWORD dwIndex, LPSTR pszValueName, LPDWORD pcchValueName, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData);
462
+ LWSTDAPI_(LONG) SHEnumValueW(HKEY hkey, DWORD dwIndex, LPWSTR pszValueName, LPDWORD pcchValueName, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData);
463
+ LWSTDAPI_(LONG) SHQueryInfoKeyA(HKEY hkey, LPDWORD pcSubKeys, LPDWORD pcchMaxSubKeyLen, LPDWORD pcValues, LPDWORD pcchMaxValueNameLen);
464
+ LWSTDAPI_(LONG) SHQueryInfoKeyW(HKEY hkey, LPDWORD pcSubKeys, LPDWORD pcchMaxSubKeyLen, LPDWORD pcValues, LPDWORD pcchMaxValueNameLen);
465
+
466
+ #ifdef UNICODE
467
+ #define SHDeleteEmptyKey SHDeleteEmptyKeyW
468
+ #define SHDeleteKey SHDeleteKeyW
469
+ #define SHDeleteValue SHDeleteValueW
470
+ #define SHGetValue SHGetValueW
471
+ #define SHSetValue SHSetValueW
472
+ #define SHQueryValueEx SHQueryValueExW
473
+ #define SHEnumKeyEx SHEnumKeyExW
474
+ #define SHEnumValue SHEnumValueW
475
+ #define SHQueryInfoKey SHQueryInfoKeyW
476
+ #else
477
+ #define SHDeleteEmptyKey SHDeleteEmptyKeyA
478
+ #define SHDeleteKey SHDeleteKeyA
479
+ #define SHDeleteValue SHDeleteValueA
480
+ #define SHGetValue SHGetValueA
481
+ #define SHSetValue SHSetValueA
482
+ #define SHQueryValueEx SHQueryValueExA
483
+ #define SHEnumKeyEx SHEnumKeyExA
484
+ #define SHEnumValue SHEnumValueA
485
+ #define SHQueryInfoKey SHQueryInfoKeyA
486
+ #endif
487
+
488
+
489
+ //////////////////////////////////////////////
490
+ // User Specific Registry Access Functions
491
+ //////////////////////////////////////////////
492
+
493
+ //
494
+ // Type definitions.
495
+ //
496
+
497
+ typedef enum
498
+ {
499
+ SHREGDEL_DEFAULT = 0x00000000, // Delete's HKCU, or HKLM if HKCU is not found.
500
+ SHREGDEL_HKCU = 0x00000001, // Delete HKCU only
501
+ SHREGDEL_HKLM = 0x00000010, // Delete HKLM only.
502
+ SHREGDEL_BOTH = 0x00000011, // Delete both HKCU and HKLM.
503
+ } SHREGDEL_FLAGS;
504
+
505
+ typedef enum
506
+ {
507
+ SHREGENUM_DEFAULT = 0x00000000, // Enumerates HKCU or HKLM if not found.
508
+ SHREGENUM_HKCU = 0x00000001, // Enumerates HKCU only
509
+ SHREGENUM_HKLM = 0x00000010, // Enumerates HKLM only.
510
+ SHREGENUM_BOTH = 0x00000011, // Enumerates both HKCU and HKLM without duplicates.
511
+ // This option is NYI.
512
+ } SHREGENUM_FLAGS;
513
+
514
+ #define SHREGSET_HKCU 0x00000001 // Write to HKCU if empty.
515
+ #define SHREGSET_FORCE_HKCU 0x00000002 // Write to HKCU.
516
+ #define SHREGSET_HKLM 0x00000004 // Write to HKLM if empty.
517
+ #define SHREGSET_FORCE_HKLM 0x00000008 // Write to HKLM.
518
+ #define SHREGSET_DEFAULT (SHREGSET_FORCE_HKCU | SHREGSET_HKLM) // Default is SHREGSET_FORCE_HKCU | SHREGSET_HKLM.
519
+
520
+ typedef HANDLE HUSKEY; // HUSKEY is a Handle to a User Specific KEY.
521
+ typedef HUSKEY *PHUSKEY;
522
+
523
+ LWSTDAPI_(LONG) SHRegCreateUSKeyA(LPCSTR pszPath, REGSAM samDesired, HUSKEY hRelativeUSKey, PHUSKEY phNewUSKey, DWORD dwFlags);
524
+ LWSTDAPI_(LONG) SHRegCreateUSKeyW(LPCWSTR pwzPath, REGSAM samDesired, HUSKEY hRelativeUSKey, PHUSKEY phNewUSKey, DWORD dwFlags);
525
+ LWSTDAPI_(LONG) SHRegOpenUSKeyA(LPCSTR pszPath, REGSAM samDesired, HUSKEY hRelativeUSKey, PHUSKEY phNewUSKey, BOOL fIgnoreHKCU);
526
+ LWSTDAPI_(LONG) SHRegOpenUSKeyW(LPCWSTR pwzPath, REGSAM samDesired, HUSKEY hRelativeUSKey, PHUSKEY phNewUSKey, BOOL fIgnoreHKCU);
527
+ LWSTDAPI_(LONG) SHRegQueryUSValueA(HUSKEY hUSKey, LPCSTR pszValue, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData, BOOL fIgnoreHKCU, LPVOID pvDefaultData, DWORD dwDefaultDataSize);
528
+ LWSTDAPI_(LONG) SHRegQueryUSValueW(HUSKEY hUSKey, LPCWSTR pwzValue, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData, BOOL fIgnoreHKCU, LPVOID pvDefaultData, DWORD dwDefaultDataSize);
529
+ LWSTDAPI_(LONG) SHRegWriteUSValueA(HUSKEY hUSKey, LPCSTR pszValue, DWORD dwType, LPVOID pvData, DWORD cbData, DWORD dwFlags);
530
+ LWSTDAPI_(LONG) SHRegWriteUSValueW(HUSKEY hUSKey, LPCWSTR pwzValue, DWORD dwType, LPVOID pvData, DWORD cbData, DWORD dwFlags);
531
+ LWSTDAPI_(LONG) SHRegDeleteUSValueA(HUSKEY hUSKey, LPCSTR pszValue, SHREGDEL_FLAGS delRegFlags);
532
+ LWSTDAPI_(LONG) SHRegDeleteEmptyUSKeyW(HUSKEY hUSKey, LPCWSTR pwzSubKey, SHREGDEL_FLAGS delRegFlags);
533
+ LWSTDAPI_(LONG) SHRegDeleteEmptyUSKeyA(HUSKEY hUSKey, LPCSTR pszSubKey, SHREGDEL_FLAGS delRegFlags);
534
+ LWSTDAPI_(LONG) SHRegDeleteUSValueW(HUSKEY hUSKey, LPCWSTR pwzValue, SHREGDEL_FLAGS delRegFlags);
535
+ LWSTDAPI_(LONG) SHRegEnumUSKeyA(HUSKEY hUSKey, DWORD dwIndex, LPSTR pszName, LPDWORD pcchName, SHREGENUM_FLAGS enumRegFlags);
536
+ LWSTDAPI_(LONG) SHRegEnumUSKeyW(HUSKEY hUSKey, DWORD dwIndex, LPWSTR pwzName, LPDWORD pcchName, SHREGENUM_FLAGS enumRegFlags);
537
+ LWSTDAPI_(LONG) SHRegEnumUSValueA(HUSKEY hUSkey, DWORD dwIndex, LPSTR pszValueName, LPDWORD pcchValueName, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData, SHREGENUM_FLAGS enumRegFlags);
538
+ LWSTDAPI_(LONG) SHRegEnumUSValueW(HUSKEY hUSkey, DWORD dwIndex, LPWSTR pszValueName, LPDWORD pcchValueName, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData, SHREGENUM_FLAGS enumRegFlags);
539
+ LWSTDAPI_(LONG) SHRegQueryInfoUSKeyA(HUSKEY hUSKey, LPDWORD pcSubKeys, LPDWORD pcchMaxSubKeyLen, LPDWORD pcValues, LPDWORD pcchMaxValueNameLen, SHREGENUM_FLAGS enumRegFlags);
540
+ LWSTDAPI_(LONG) SHRegQueryInfoUSKeyW(HUSKEY hUSKey, LPDWORD pcSubKeys, LPDWORD pcchMaxSubKeyLen, LPDWORD pcValues, LPDWORD pcchMaxValueNameLen, SHREGENUM_FLAGS enumRegFlags);
541
+ LWSTDAPI_(LONG) SHRegCloseUSKey(HUSKEY hUSKey);
542
+
543
+
544
+ // These calls are equal to an SHRegOpenUSKey, SHRegQueryUSValue, and then a SHRegCloseUSKey.
545
+ LWSTDAPI_(LONG) SHRegGetUSValueA(LPCSTR pszSubKey, LPCSTR pszValue, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData, BOOL fIgnoreHKCU, LPVOID pvDefaultData, DWORD dwDefaultDataSize);
546
+ LWSTDAPI_(LONG) SHRegGetUSValueW(LPCWSTR pwzSubKey, LPCWSTR pwzValue, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData, BOOL fIgnoreHKCU, LPVOID pvDefaultData, DWORD dwDefaultDataSize);
547
+ LWSTDAPI_(LONG) SHRegSetUSValueA(LPCSTR pszSubKey, LPCSTR pszValue, DWORD dwType, LPVOID pvData, DWORD cbData, DWORD dwFlags);
548
+ LWSTDAPI_(LONG) SHRegSetUSValueW(LPCWSTR pwzSubKey, LPCWSTR pwzValue, DWORD dwType, LPVOID pvData, DWORD cbData, DWORD dwFlags);
549
+
550
+ #ifdef UNICODE
551
+ #define SHRegCreateUSKey SHRegCreateUSKeyW
552
+ #define SHRegOpenUSKey SHRegOpenUSKeyW
553
+ #define SHRegQueryUSValue SHRegQueryUSValueW
554
+ #define SHRegWriteUSValue SHRegWriteUSValueW
555
+ #define SHRegDeleteUSValue SHRegDeleteUSValueW
556
+ #define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyW
557
+ #define SHRegEnumUSKey SHRegEnumUSKeyW
558
+ #define SHRegEnumUSValue SHRegEnumUSValueW
559
+ #define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyW
560
+ #define SHRegGetUSValue SHRegGetUSValueW
561
+ #define SHRegSetUSValue SHRegSetUSValueW
562
+ #else
563
+ #define SHRegCreateUSKey SHRegCreateUSKeyA
564
+ #define SHRegOpenUSKey SHRegOpenUSKeyA
565
+ #define SHRegQueryUSValue SHRegQueryUSValueA
566
+ #define SHRegWriteUSValue SHRegWriteUSValueA
567
+ #define SHRegDeleteUSValue SHRegDeleteUSValueA
568
+ #define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyA
569
+ #define SHRegEnumUSKey SHRegEnumUSKeyA
570
+ #define SHRegEnumUSValue SHRegEnumUSValueA
571
+ #define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyA
572
+ #define SHRegGetUSValue SHRegGetUSValueA
573
+ #define SHRegSetUSValue SHRegSetUSValueA
574
+ #endif
575
+
576
+ LWSTDAPI_(BOOL) SHRegGetBoolUSValueA(LPCSTR pszSubKey, LPCSTR pszValue, BOOL fIgnoreHKCU, BOOL fDefault);
577
+ LWSTDAPI_(BOOL) SHRegGetBoolUSValueW(LPCWSTR pszSubKey, LPCWSTR pszValue, BOOL fIgnoreHKCU, BOOL fDefault);
578
+
579
+ #ifdef UNICODE
580
+ #define SHRegGetBoolUSValue SHRegGetBoolUSValueW
581
+ #else
582
+ #define SHRegGetBoolUSValue SHRegGetBoolUSValueA
583
+ #endif
584
+
585
+
586
+ #endif // NO_SHLWAPI_REG
587
+
588
+
589
+
590
+ #ifndef NO_SHLWAPI_STREAM
591
+ //
592
+ //=============== Stream Routines ===================================
593
+ //
594
+
595
+ #ifdef __IStream_INTERFACE_DEFINED__
596
+ LWSTDAPI_(IStream *) SHOpenRegStreamA(HKEY hkey, LPCSTR pszSubkey, LPCSTR pszValue, DWORD grfMode);
597
+ LWSTDAPI_(IStream *) SHOpenRegStreamW(HKEY hkey, LPCWSTR pszSubkey, LPCWSTR pszValue, DWORD grfMode);
598
+ #ifdef UNICODE
599
+ #define SHOpenRegStream SHOpenRegStreamW
600
+ #else
601
+ #define SHOpenRegStream SHOpenRegStreamA
602
+ #endif // !UNICODE
603
+
604
+
605
+ #endif
606
+
607
+ #endif // NO_SHLWAPI_STREAM
608
+
609
+
610
+
611
+ #ifndef NO_SHLWAPI_GDI
612
+ //
613
+ //====== GDI helper functions ================================================
614
+ //
615
+
616
+ LWSTDAPI_(HPALETTE) SHCreateShellPalette(HDC hdc);
617
+
618
+ #endif // NO_SHLWAPI_GDI
619
+
620
+
621
+ //
622
+ //====== DllGetVersion =======================================================
623
+ //
624
+
625
+ typedef struct _DllVersionInfo
626
+ {
627
+ DWORD cbSize;
628
+ DWORD dwMajorVersion; // Major version
629
+ DWORD dwMinorVersion; // Minor version
630
+ DWORD dwBuildNumber; // Build number
631
+ DWORD dwPlatformID; // DLLVER_PLATFORM_*
632
+ } DLLVERSIONINFO;
633
+
634
+ // Platform IDs for DLLVERSIONINFO
635
+ #define DLLVER_PLATFORM_WINDOWS 0x00000001 // Windows 95
636
+ #define DLLVER_PLATFORM_NT 0x00000002 // Windows NT
637
+
638
+ //
639
+ // The caller should always GetProcAddress("DllGetVersion"), not
640
+ // implicitly link to it.
641
+ //
642
+
643
+ typedef HRESULT (CALLBACK* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
644
+
645
+ // DllInstall (to be implemented by self-installing DLLs)
646
+ STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine);
647
+
648
+
649
+ #ifdef __cplusplus
650
+ }
651
+ #endif
652
+
653
+ #ifdef _WIN32
654
+ #include <poppack.h>
655
+ #endif
656
+
657
+ #endif
658
+
659
+
660
+ #endif // _INC_SHLWAPI
661
+