camellia 2.7.0-x86-linux
Sign up to get free protection for your applications and to get access to all the features.
- data/CamelliaLib-2.7.0.tar.gz +0 -0
- data/README +59 -0
- data/doc/README +58 -0
- data/doc/camellia.dox +205 -0
- data/doc/html/annotated.html +52 -0
- data/doc/html/camellia_8h-source.html +1618 -0
- data/doc/html/camellia_8h.html +4583 -0
- data/doc/html/doxygen.css +358 -0
- data/doc/html/doxygen.png +0 -0
- data/doc/html/files.html +29 -0
- data/doc/html/ftv2blank.png +0 -0
- data/doc/html/ftv2doc.png +0 -0
- data/doc/html/ftv2folderclosed.png +0 -0
- data/doc/html/ftv2folderopen.png +0 -0
- data/doc/html/ftv2lastnode.png +0 -0
- data/doc/html/ftv2link.png +0 -0
- data/doc/html/ftv2mlastnode.png +0 -0
- data/doc/html/ftv2mnode.png +0 -0
- data/doc/html/ftv2node.png +0 -0
- data/doc/html/ftv2plastnode.png +0 -0
- data/doc/html/ftv2pnode.png +0 -0
- data/doc/html/ftv2vertline.png +0 -0
- data/doc/html/functions.html +108 -0
- data/doc/html/functions_0x62.html +78 -0
- data/doc/html/functions_0x63.html +112 -0
- data/doc/html/functions_0x64.html +113 -0
- data/doc/html/functions_0x65.html +102 -0
- data/doc/html/functions_0x66.html +82 -0
- data/doc/html/functions_0x67.html +76 -0
- data/doc/html/functions_0x68.html +88 -0
- data/doc/html/functions_0x69.html +90 -0
- data/doc/html/functions_0x6b.html +70 -0
- data/doc/html/functions_0x6c.html +88 -0
- data/doc/html/functions_0x6d.html +93 -0
- data/doc/html/functions_0x6e.html +79 -0
- data/doc/html/functions_0x6f.html +74 -0
- data/doc/html/functions_0x70.html +72 -0
- data/doc/html/functions_0x72.html +73 -0
- data/doc/html/functions_0x73.html +130 -0
- data/doc/html/functions_0x74.html +82 -0
- data/doc/html/functions_0x76.html +74 -0
- data/doc/html/functions_0x77.html +75 -0
- data/doc/html/functions_0x78.html +72 -0
- data/doc/html/functions_0x79.html +77 -0
- data/doc/html/functions_0x7e.html +76 -0
- data/doc/html/functions_func.html +93 -0
- data/doc/html/functions_func_0x62.html +64 -0
- data/doc/html/functions_func_0x63.html +83 -0
- data/doc/html/functions_func_0x64.html +99 -0
- data/doc/html/functions_func_0x65.html +95 -0
- data/doc/html/functions_func_0x66.html +74 -0
- data/doc/html/functions_func_0x67.html +72 -0
- data/doc/html/functions_func_0x68.html +76 -0
- data/doc/html/functions_func_0x69.html +70 -0
- data/doc/html/functions_func_0x6c.html +76 -0
- data/doc/html/functions_func_0x6d.html +78 -0
- data/doc/html/functions_func_0x6f.html +65 -0
- data/doc/html/functions_func_0x70.html +64 -0
- data/doc/html/functions_func_0x72.html +65 -0
- data/doc/html/functions_func_0x73.html +113 -0
- data/doc/html/functions_func_0x74.html +74 -0
- data/doc/html/functions_func_0x76.html +64 -0
- data/doc/html/functions_func_0x77.html +64 -0
- data/doc/html/functions_func_0x7e.html +72 -0
- data/doc/html/functions_vars.html +290 -0
- data/doc/html/globals.html +368 -0
- data/doc/html/globals_defs.html +41 -0
- data/doc/html/globals_func.html +364 -0
- data/doc/html/index.html +11 -0
- data/doc/html/main.html +22 -0
- data/doc/html/pages.html +24 -0
- data/doc/html/structCamAffineTransform.html +37 -0
- data/doc/html/structCamArithmParams.html +60 -0
- data/doc/html/structCamBasin.html +62 -0
- data/doc/html/structCamBitmapFont.html +37 -0
- data/doc/html/structCamBlobInfo.html +90 -0
- data/doc/html/structCamBlobs.html +51 -0
- data/doc/html/structCamImage.html +853 -0
- data/doc/html/structCamKeypoint.html +79 -0
- data/doc/html/structCamKeypoints.html +99 -0
- data/doc/html/structCamKeypointsKdTree.html +42 -0
- data/doc/html/structCamKeypointsMatches.html +54 -0
- data/doc/html/structCamLabelingResults.html +46 -0
- data/doc/html/structCamLinearFilterKernel.html +63 -0
- data/doc/html/structCamMeasuresResults.html +54 -0
- data/doc/html/structCamMorphoMathsKernel.html +81 -0
- data/doc/html/structCamPoint.html +46 -0
- data/doc/html/structCamRLEImage.html +183 -0
- data/doc/html/structCamROI.html +80 -0
- data/doc/html/structCamRun.html +56 -0
- data/doc/html/structCamSepFilterKernel.html +67 -0
- data/doc/html/structCamTable.html +46 -0
- data/doc/html/structCamTableOfBasins.html +37 -0
- data/doc/html/structCamVolbergFwdParams.html +46 -0
- data/doc/html/structCamWarpingParams.html +70 -0
- data/doc/html/tab_b.gif +0 -0
- data/doc/html/tab_l.gif +0 -0
- data/doc/html/tab_r.gif +0 -0
- data/doc/html/tabs.css +102 -0
- data/doc/html/todo.html +29 -0
- data/doc/html/tree.html +106 -0
- data/doc/rtf/refman.rtf +7866 -0
- data/ext/Makefile +149 -0
- data/ext/README +12 -0
- data/ext/camellia_ruby.i +493 -0
- data/ext/camellia_ruby_wrap.cxx +21103 -0
- data/ext/extconf.rb +12 -0
- data/ext/install.rb +11 -0
- data/ext/swig_ruby.dsp +159 -0
- data/ext/swig_ruby.vcproj +290 -0
- data/ext/test.rb +31 -0
- data/inc/SHLWAPI.H +661 -0
- data/inc/cam_capture.h +202 -0
- data/inc/camellia.h +2651 -0
- data/inc/camellia_internals.h +205 -0
- data/inc/config.h +62 -0
- data/inc/config.h.in +61 -0
- data/inc/stamp-h1 +1 -0
- data/lib/camellia-fox.rb +39 -0
- data/test/test_arithm.rb +13 -0
- data/test/test_capture.rb +15 -0
- data/test/test_color_labeling.rb +45 -0
- data/test/test_copy.rb +13 -0
- data/test/test_draw.rb +15 -0
- data/test/test_fixed_filters.rb +23 -0
- data/test/test_fox.rb +106 -0
- data/test/test_fox2.rb +108 -0
- data/test/test_histogram.rb +18 -0
- data/test/test_hough.rb +29 -0
- data/test/test_keypoints.rb +106 -0
- data/test/test_labeling.rb +30 -0
- data/test/test_mask.rb +34 -0
- data/test/test_warping.rb +46 -0
- data/test/test_watershed.rb +35 -0
- data/test/ts_camellia.rb +12 -0
- metadata +204 -0
data/ext/test.rb
ADDED
@@ -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
|
+
|
data/inc/SHLWAPI.H
ADDED
@@ -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
|
+
|