camellia 2.7.0-x86-linux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+