[PSDK]
[reactos.git] / reactos / include / psdk / shellapi.h
index 05330ab..ff7b94e 100644 (file)
@@ -4,6 +4,10 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4201)
+#endif
 #define WINSHELLAPI DECLSPEC_IMPORT
 #define ABE_LEFT       0
 #define ABE_TOP        1
@@ -124,6 +128,36 @@ extern "C" {
 #define SHGFI_PIDL     8
 #define SHGFI_USEFILEATTRIBUTES        16
 
+#if (NTDDI_VERSION >= NTDDI_WINXP)
+#define SHIL_LARGE        0x0
+#define SHIL_SMALL        0x1
+#define SHIL_EXTRALARGE   0x2
+#define SHIL_SYSSMALL     0x3
+#if (NTDDI_VERSION >= NTDDI_VISTA)
+#define SHIL_JUMBO        0x4
+#define SHIL_LAST         SHIL_JUMBO
+#else
+#define SHIL_LAST         SHIL_SYSSMALL
+#endif
+#endif
+
+typedef struct _SHCREATEPROCESSINFOW
+{
+    DWORD cbSize;
+    ULONG fMask;
+    HWND hwnd;
+    LPCWSTR pszFile;
+    LPCWSTR pszParameters;
+    LPCWSTR pszCurrentDirectory;
+    IN HANDLE hUserToken;
+    IN LPSECURITY_ATTRIBUTES lpProcessAttributes;
+    IN LPSECURITY_ATTRIBUTES lpThreadAttributes;
+    IN BOOL bInheritHandles;
+    IN DWORD dwCreationFlags;
+    IN LPSTARTUPINFOW lpStartupInfo;
+    OUT LPPROCESS_INFORMATION lpProcessInformation;
+} SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;
+
 typedef WORD FILEOP_FLAGS;
 typedef WORD PRINTEROP_FLAGS;
 #include <pshpack1.h>
@@ -302,6 +336,18 @@ typedef struct _SHNAMEMAPPINGW {
 #define SHERB_NOPROGRESSUI   0x2
 #define SHERB_NOSOUND        0x4
 
+/******************************************
+ * Links
+ */
+
+#define SHGNLI_PIDL        0x01
+#define SHGNLI_PREFIXNAME  0x02
+#define SHGNLI_NOUNIQUE    0x04
+#define SHGNLI_NOLNK       0x08
+
+BOOL WINAPI SHGetNewLinkInfoA(LPCSTR,LPCSTR,LPSTR,BOOL*,UINT);
+BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR,LPCWSTR,LPWSTR,BOOL*,UINT);
+
 LPWSTR * WINAPI CommandLineToArgvW(LPCWSTR,int*);
 void WINAPI DragAcceptFiles(HWND,BOOL);
 void WINAPI DragFinish(HDROP);
@@ -336,6 +382,7 @@ HRESULT WINAPI SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO);
 HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO);
 HRESULT WINAPI SHEmptyRecycleBinA(HWND,LPCSTR,DWORD);
 HRESULT WINAPI SHEmptyRecycleBinW(HWND,LPCWSTR,DWORD);
+BOOL WINAPI SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW);
 
 #ifdef UNICODE
 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
@@ -361,6 +408,7 @@ typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
 #define SHGetNewLinkInfo SHGetNewLinkInfoW
 #define SHQueryRecycleBin SHQueryRecycleBinW
 #define SHEmptyRecycleBin SHEmptyRecycleBinW
+#define SHGetNewLinkInfo SHGetNewLinkInfoW
 
 #else
 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
@@ -386,6 +434,10 @@ typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
 #define SHGetNewLinkInfo SHGetNewLinkInfoA
 #define SHQueryRecycleBin SHQueryRecycleBinA
 #define SHEmptyRecycleBin SHEmptyRecycleBinA
+#define SHGetNewLinkInfo SHGetNewLinkInfoA
+#endif
+#ifdef _MSC_VER
+#pragma warning(pop)
 #endif
 #ifdef __cplusplus
 }