]> git.proxmox.com Git - rustc.git/blame - vendor/winapi/src/um/shlobj.rs
New upstream version 1.70.0+dfsg2
[rustc.git] / vendor / winapi / src / um / shlobj.rs
CommitLineData
ff7c6d11
XL
1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use ctypes::{c_int, c_void};
7use shared::guiddef::REFIID;
8use shared::minwindef::{BOOL, DWORD, UINT};
9use shared::windef::HWND;
10use um::minwinbase::SECURITY_ATTRIBUTES;
11use um::shtypes::{PCIDLIST_ABSOLUTE, PCUITEMID_CHILD_ARRAY, PIDLIST_ABSOLUTE, REFKNOWNFOLDERID};
12use um::winnt::{HANDLE, HRESULT, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, PWSTR};
13pub const IDO_SHGIOI_SHARE: c_int = 0x0FFFFFFF;
14pub const IDO_SHGIOI_LINK: c_int = 0x0FFFFFFE;
15// Yes, these values are supposed to be 9 digits
16pub const IDO_SHGIOI_SLOWFILE: c_int = 0x0FFFFFFFD;
17pub const IDO_SHGIOI_DEFAULT: c_int = 0x0FFFFFFFC;
18extern "system" {
19 pub fn SHGetIconOverlayIndexA(
20 pszIconPath: LPCSTR,
21 iIconIndex: c_int,
22 ) -> c_int;
23 pub fn SHGetIconOverlayIndexW(
24 pszIconPath: LPCWSTR,
25 iIconIndex: c_int,
26 ) -> c_int;
27}
28pub const GPFIDL_DEFAULT: GPFIDL_FLAGS = 0x0000;
29pub const GPFIDL_ALTNAME: GPFIDL_FLAGS = 0x0001;
30pub const GPFIDL_UNCPRINTER: GPFIDL_FLAGS = 0x0002;
31pub type GPFIDL_FLAGS = c_int;
32extern "system" {
33 pub fn SHGetPathFromIDListEx(
34 pidl: PCIDLIST_ABSOLUTE,
35 pszPath: PWSTR,
36 cchPath: DWORD,
37 uOpts: GPFIDL_FLAGS,
38 ) -> BOOL;
39 pub fn SHGetPathFromIDListA(
40 pidl: PCIDLIST_ABSOLUTE,
41 pszPath: LPSTR,
42 ) -> BOOL;
43 pub fn SHGetPathFromIDListW(
44 pidl: PCIDLIST_ABSOLUTE,
45 pszPath: LPWSTR,
46 ) -> BOOL;
47 pub fn SHCreateDirectory(
48 hwnd: HWND,
49 pszPath: PCWSTR,
50 ) -> c_int;
51 pub fn SHCreateDirectoryExA(
52 hwnd: HWND,
53 pszPath: LPCSTR,
54 psa: *const SECURITY_ATTRIBUTES,
55 ) -> c_int;
56 pub fn SHCreateDirectoryExW(
57 hwnd: HWND,
58 pszPath: LPCWSTR,
59 psa: *const SECURITY_ATTRIBUTES,
60 ) -> c_int;
61}
62pub const OFASI_EDIT: DWORD = 0x0001;
63pub const OFASI_OPENDESKTOP: DWORD = 0x0002;
64extern "system" {
65 pub fn SHOpenFolderAndSelectItems(
66 pidlFolder: PCIDLIST_ABSOLUTE,
67 cidl: UINT,
68 apidl: PCUITEMID_CHILD_ARRAY,
69 dwFlags: DWORD,
70 ) -> HRESULT;
71 //pub fn SHCreateShellItem(
72 // pidlParent: PCIDLIST_ABSOLUTE,
73 // psfParent: *mut IShellFolder,
74 // pidl: PCUITEMID_CHILD,
75 // ppsi: *mut *mut IShellItem,
76 //) -> HRESULT;
77}
78pub const CSIDL_DESKTOP: c_int = 0x0000;
79pub const CSIDL_INTERNET: c_int = 0x0001;
80pub const CSIDL_PROGRAMS: c_int = 0x0002;
81pub const CSIDL_CONTROLS: c_int = 0x0003;
82pub const CSIDL_PRINTERS: c_int = 0x0004;
83pub const CSIDL_PERSONAL: c_int = 0x0005;
84pub const CSIDL_FAVORITES: c_int = 0x0006;
85pub const CSIDL_STARTUP: c_int = 0x0007;
86pub const CSIDL_RECENT: c_int = 0x0008;
87pub const CSIDL_SENDTO: c_int = 0x0009;
88pub const CSIDL_BITBUCKET: c_int = 0x000a;
89pub const CSIDL_STARTMENU: c_int = 0x000b;
90pub const CSIDL_MYDOCUMENTS: c_int = CSIDL_PERSONAL;
91pub const CSIDL_MYMUSIC: c_int = 0x000d;
92pub const CSIDL_MYVIDEO: c_int = 0x000e;
93pub const CSIDL_DESKTOPDIRECTORY: c_int = 0x0010;
94pub const CSIDL_DRIVES: c_int = 0x0011;
95pub const CSIDL_NETWORK: c_int = 0x0012;
96pub const CSIDL_NETHOOD: c_int = 0x0013;
97pub const CSIDL_FONTS: c_int = 0x0014;
98pub const CSIDL_TEMPLATES: c_int = 0x0015;
99pub const CSIDL_COMMON_STARTMENU: c_int = 0x0016;
100pub const CSIDL_COMMON_PROGRAMS: c_int = 0x0017;
101pub const CSIDL_COMMON_STARTUP: c_int = 0x0018;
102pub const CSIDL_COMMON_DESKTOPDIRECTORY: c_int = 0x0019;
103pub const CSIDL_APPDATA: c_int = 0x001a;
104pub const CSIDL_PRINTHOOD: c_int = 0x001b;
105pub const CSIDL_LOCAL_APPDATA: c_int = 0x001c;
106pub const CSIDL_ALTSTARTUP: c_int = 0x001d;
107pub const CSIDL_COMMON_ALTSTARTUP: c_int = 0x001e;
108pub const CSIDL_COMMON_FAVORITES: c_int = 0x001f;
109pub const CSIDL_INTERNET_CACHE: c_int = 0x0020;
110pub const CSIDL_COOKIES: c_int = 0x0021;
111pub const CSIDL_HISTORY: c_int = 0x0022;
112pub const CSIDL_COMMON_APPDATA: c_int = 0x0023;
113pub const CSIDL_WINDOWS: c_int = 0x0024;
114pub const CSIDL_SYSTEM: c_int = 0x0025;
115pub const CSIDL_PROGRAM_FILES: c_int = 0x0026;
116pub const CSIDL_MYPICTURES: c_int = 0x0027;
117pub const CSIDL_PROFILE: c_int = 0x0028;
118pub const CSIDL_SYSTEMX86: c_int = 0x0029;
119pub const CSIDL_PROGRAM_FILESX86: c_int = 0x002a;
120pub const CSIDL_PROGRAM_FILES_COMMON: c_int = 0x002b;
121pub const CSIDL_PROGRAM_FILES_COMMONX86: c_int = 0x002c;
122pub const CSIDL_COMMON_TEMPLATES: c_int = 0x002d;
123pub const CSIDL_COMMON_DOCUMENTS: c_int = 0x002e;
124pub const CSIDL_COMMON_ADMINTOOLS: c_int = 0x002f;
125pub const CSIDL_ADMINTOOLS: c_int = 0x0030;
126pub const CSIDL_CONNECTIONS: c_int = 0x0031;
127pub const CSIDL_COMMON_MUSIC: c_int = 0x0035;
128pub const CSIDL_COMMON_PICTURES: c_int = 0x0036;
129pub const CSIDL_COMMON_VIDEO: c_int = 0x0037;
130pub const CSIDL_RESOURCES: c_int = 0x0038;
131pub const CSIDL_RESOURCES_LOCALIZED: c_int = 0x0039;
132pub const CSIDL_COMMON_OEM_LINKS: c_int = 0x003a;
133pub const CSIDL_CDBURN_AREA: c_int = 0x003b;
134pub const CSIDL_COMPUTERSNEARME: c_int = 0x003d;
135pub const CSIDL_FLAG_CREATE: c_int = 0x8000;
136pub const CSIDL_FLAG_DONT_VERIFY: c_int = 0x4000;
137pub const CSIDL_FLAG_DONT_UNEXPAND: c_int = 0x2000;
138pub const CSIDL_FLAG_NO_ALIAS: c_int = 0x1000;
139pub const CSIDL_FLAG_PER_USER_INIT: c_int = 0x0800;
140pub const CSIDL_FLAG_MASK: c_int = 0xff00;
141extern "system" {
142 pub fn SHGetSpecialFolderLocation(
143 hwnd: HWND,
144 csidl: c_int,
145 ppidl: *mut PIDLIST_ABSOLUTE,
146 ) -> HRESULT;
147 pub fn SHCloneSpecialIDList(
148 hwnd: HWND,
149 csidl: c_int,
150 fCreate: BOOL,
151 ) -> PIDLIST_ABSOLUTE;
152 pub fn SHGetSpecialFolderPathA(
153 hwnd: HWND,
154 pszPath: LPSTR,
155 csidl: c_int,
156 fCreate: BOOL,
157 ) -> BOOL;
158 pub fn SHGetSpecialFolderPathW(
159 hwnd: HWND,
160 pszPath: LPWSTR,
161 csidl: c_int,
162 fCreate: BOOL,
163 ) -> BOOL;
164 pub fn SHFlushSFCache();
165}
166ENUM!{enum SHGFP_TYPE {
167 SHGFP_TYPE_CURRENT = 0,
168 SHGFP_TYPE_DEFAULT = 1,
169}}
170extern "system" {
171 pub fn SHGetFolderPathA(
172 hwnd: HWND,
173 csidl: c_int,
174 hToken: HANDLE,
175 dwFlags: DWORD,
176 pszPath: LPSTR,
177 ) -> HRESULT;
178 pub fn SHGetFolderPathW(
179 hwnd: HWND,
180 csidl: c_int,
181 hToken: HANDLE,
182 dwFlags: DWORD,
183 pszPath: LPWSTR,
184 ) -> HRESULT;
185 pub fn SHGetFolderLocation(
186 hwnd: HWND,
187 csidl: c_int,
188 hToken: HANDLE,
189 dwFlags: DWORD,
190 ppidl: *mut PIDLIST_ABSOLUTE,
191 ) -> HRESULT;
192 pub fn SHSetFolderPathA(
193 csidl: c_int,
194 hToken: HANDLE,
195 dwFlags: DWORD,
196 pszPath: LPCSTR,
197 ) -> HRESULT;
198 pub fn SHSetFolderPathW(
199 csidl: c_int,
200 hToken: HANDLE,
201 dwFlags: DWORD,
202 pszPath: LPCWSTR,
203 ) -> HRESULT;
204 pub fn SHGetFolderPathAndSubDirA(
205 hwnd: HWND,
206 csidl: c_int,
207 hToken: HANDLE,
208 dwFlags: DWORD,
209 pszSubDir: LPCSTR,
210 pszPath: LPSTR,
211 ) -> HRESULT;
212 pub fn SHGetFolderPathAndSubDirW(
213 hwnd: HWND,
214 csidl: c_int,
215 hToken: HANDLE,
216 dwFlags: DWORD,
217 pszSubDir: LPCWSTR,
218 pszPath: LPWSTR,
219 ) -> HRESULT;
220}
221ENUM!{enum KNOWN_FOLDER_FLAG {
222 KF_FLAG_DEFAULT = 0x00000000,
223 KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000,
224 KF_FLAG_CREATE = 0x00008000,
225 KF_FLAG_DONT_VERIFY = 0x00004000,
226 KF_FLAG_DONT_UNEXPAND = 0x00002000,
227 KF_FLAG_NO_ALIAS = 0x00001000,
228 KF_FLAG_INIT = 0x00000800,
229 KF_FLAG_DEFAULT_PATH = 0x00000400,
230 KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200,
231 KF_FLAG_SIMPLE_IDLIST = 0x00000100,
232 KF_FLAG_ALIAS_ONLY = 0x80000000,
233}}
234extern "system" {
235 pub fn SHGetKnownFolderIDList(
236 rfid: REFKNOWNFOLDERID,
237 dwFlags: DWORD,
238 hToken: HANDLE,
239 ppidl: *mut PIDLIST_ABSOLUTE,
240 ) -> HRESULT;
241 pub fn SHSetKnownFolderPath(
242 rfid: REFKNOWNFOLDERID,
243 dwFlags: DWORD,
244 hToken: HANDLE,
245 pszPath: PCWSTR,
246 ) -> HRESULT;
247 pub fn SHGetKnownFolderPath(
248 rfid: REFKNOWNFOLDERID,
249 dwFlags: DWORD,
250 hToken: HANDLE,
251 pszPath: *mut PWSTR,
252 ) -> HRESULT;
253 pub fn SHGetKnownFolderItem(
254 rfid: REFKNOWNFOLDERID,
255 flags: KNOWN_FOLDER_FLAG,
256 hToken: HANDLE,
257 riid: REFIID,
258 ppv: *mut *mut c_void,
259 ) -> HRESULT;
260}