* Sync up to trunk head (r64921).
[reactos.git] / include / psdk / winbase.h
index c9eed37..9e4fe90 100644 (file)
@@ -194,7 +194,6 @@ extern "C" {
 #define PROFILE_USER                   0x10000000
 #define PROFILE_KERNEL                 0x20000000
 #define PROFILE_SERVER                 0x40000000
-#define CONSOLE_TEXTMODE_BUFFER 1
 #define CREATE_NEW     1
 #define CREATE_ALWAYS  2
 #define OPEN_EXISTING  3
@@ -372,6 +371,8 @@ extern "C" {
 #define MOVEFILE_COPY_ALLOWED 2
 #define MOVEFILE_DELAY_UNTIL_REBOOT 4
 #define MOVEFILE_WRITE_THROUGH 8
+#define MOVEFILE_CREATE_HARDLINK 16
+#define MOVEFILE_FAIL_IF_NOT_TRACKABLE 32
 #define MAXIMUM_WAIT_OBJECTS 64
 #define MAXIMUM_SUSPEND_COUNT 0x7F
 #define WAIT_OBJECT_0 0
@@ -467,16 +468,23 @@ extern "C" {
 #define STREAM_MODIFIED_WHEN_READ 1
 #define STREAM_CONTAINS_SECURITY 2
 #define STREAM_CONTAINS_PROPERTIES 4
-#define STARTF_USESHOWWINDOW 1
-#define STARTF_USESIZE 2
-#define STARTF_USEPOSITION 4
-#define STARTF_USECOUNTCHARS 8
-#define STARTF_USEFILLATTRIBUTE 16
-#define STARTF_RUNFULLSCREEN 32
-#define STARTF_FORCEONFEEDBACK 64
-#define STARTF_FORCEOFFFEEDBACK 128
-#define STARTF_USESTDHANDLES 256
-#define STARTF_USEHOTKEY 512
+
+#define STARTF_USESHOWWINDOW    0x00000001
+#define STARTF_USESIZE          0x00000002
+#define STARTF_USEPOSITION      0x00000004
+#define STARTF_USECOUNTCHARS    0x00000008
+#define STARTF_USEFILLATTRIBUTE 0x00000010
+#define STARTF_RUNFULLSCREEN    0x00000020
+#define STARTF_FORCEONFEEDBACK  0x00000040
+#define STARTF_FORCEOFFFEEDBACK 0x00000080
+#define STARTF_USESTDHANDLES    0x00000100
+#if (WINVER >= 0x400)
+#define STARTF_USEHOTKEY        0x00000200
+#define STARTF_TITLEISLINKNAME  0x00000800
+#define STARTF_TITLEISAPPID     0x00001000
+#define STARTF_PREVENTPINNING   0x00002000
+#endif /* (WINVER >= 0x400) */
+
 #define TC_NORMAL 0
 #define TC_HARDERR 1
 #define TC_GP_TRAP 2
@@ -762,10 +770,15 @@ typedef struct _DEBUG_EVENT {
 typedef struct _OVERLAPPED {
        ULONG_PTR Internal;
        ULONG_PTR InternalHigh;
-       DWORD Offset;
-       DWORD OffsetHigh;
+       union {
+               struct {
+                       DWORD Offset;
+                       DWORD OffsetHigh;
+               } DUMMYSTRUCTNAME;
+               PVOID Pointer;
+       } DUMMYUNIONNAME;
        HANDLE hEvent;
-} OVERLAPPED,*POVERLAPPED,*LPOVERLAPPED;
+} OVERLAPPED, *POVERLAPPED, *LPOVERLAPPED;
 
 typedef struct _STARTUPINFOA {
        DWORD   cb;
@@ -1264,6 +1277,12 @@ typedef DWORD (WINAPI *APPLICATION_RECOVERY_CALLBACK)(PVOID);
 #define MAKEINTATOM(i) (LPTSTR)((ULONG_PTR)((WORD)(i)))
 #endif
 
+typedef DWORD
+(WINAPI *PFE_IMPORT_FUNC)(
+  _Out_writes_bytes_to_(*ulLength, *ulLength) PBYTE pbData,
+  _In_opt_ PVOID pvCallbackContext,
+  _Inout_ PULONG ulLength);
+
 /* Functions */
 #ifndef UNDER_CE
 int APIENTRY WinMain(_In_ HINSTANCE, _In_opt_ HINSTANCE, _In_ LPSTR, _In_ int);
@@ -3129,6 +3148,7 @@ BOOL WINAPI WinLoadTrustProvider(GUID*);
 BOOL WINAPI Wow64DisableWow64FsRedirection(PVOID*);
 BOOLEAN WINAPI Wow64EnableWow64FsRedirection(_In_ BOOLEAN);
 BOOL WINAPI Wow64RevertWow64FsRedirection(PVOID);
+DWORD WINAPI WriteEncryptedFileRaw(_In_ PFE_IMPORT_FUNC, _In_opt_ PVOID, _In_ PVOID);
 BOOL WINAPI WriteFile(HANDLE,LPCVOID,DWORD,LPDWORD,LPOVERLAPPED);
 BOOL WINAPI WriteFileEx(HANDLE,LPCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
 BOOL WINAPI WriteFileGather(HANDLE,FILE_SEGMENT_ELEMENT*,DWORD,LPDWORD,LPOVERLAPPED);
@@ -3630,6 +3650,124 @@ typedef BOOL
   _Inout_opt_ PVOID Parameter,
   _Outptr_opt_result_maybenull_ PVOID *Context);
 
+#if _WIN32_WINNT >= 0x0601
+
+#define COPYFILE2_MESSAGE_COPY_OFFLOAD 0x00000001L
+
+typedef enum _COPYFILE2_MESSAGE_TYPE {
+  COPYFILE2_CALLBACK_NONE = 0,
+  COPYFILE2_CALLBACK_CHUNK_STARTED,
+  COPYFILE2_CALLBACK_CHUNK_FINISHED,
+  COPYFILE2_CALLBACK_STREAM_STARTED,
+  COPYFILE2_CALLBACK_STREAM_FINISHED,
+  COPYFILE2_CALLBACK_POLL_CONTINUE,
+  COPYFILE2_CALLBACK_ERROR,
+  COPYFILE2_CALLBACK_MAX,
+} COPYFILE2_MESSAGE_TYPE;
+
+typedef enum _COPYFILE2_MESSAGE_ACTION {
+  COPYFILE2_PROGRESS_CONTINUE = 0,
+  COPYFILE2_PROGRESS_CANCEL,
+  COPYFILE2_PROGRESS_STOP,
+  COPYFILE2_PROGRESS_QUIET,
+  COPYFILE2_PROGRESS_PAUSE,
+} COPYFILE2_MESSAGE_ACTION;
+
+typedef enum _COPYFILE2_COPY_PHASE {
+  COPYFILE2_PHASE_NONE = 0,
+  COPYFILE2_PHASE_PREPARE_SOURCE,
+  COPYFILE2_PHASE_PREPARE_DEST,
+  COPYFILE2_PHASE_READ_SOURCE,
+  COPYFILE2_PHASE_WRITE_DESTINATION,
+  COPYFILE2_PHASE_SERVER_COPY,
+  COPYFILE2_PHASE_NAMEGRAFT_COPY,
+  COPYFILE2_PHASE_MAX,
+} COPYFILE2_COPY_PHASE;
+
+typedef struct COPYFILE2_MESSAGE {
+  COPYFILE2_MESSAGE_TYPE Type;
+  DWORD dwPadding;
+  union {
+    struct {
+      DWORD dwStreamNumber;
+      DWORD dwReserved;
+      HANDLE hSourceFile;
+      HANDLE hDestinationFile;
+      ULARGE_INTEGER uliChunkNumber;
+      ULARGE_INTEGER uliChunkSize;
+      ULARGE_INTEGER uliStreamSize;
+      ULARGE_INTEGER uliTotalFileSize;
+    } ChunkStarted;
+    struct {
+      DWORD dwStreamNumber;
+      DWORD dwFlags;
+      HANDLE hSourceFile;
+      HANDLE hDestinationFile;
+      ULARGE_INTEGER uliChunkNumber;
+      ULARGE_INTEGER uliChunkSize;
+      ULARGE_INTEGER uliStreamSize;
+      ULARGE_INTEGER uliStreamBytesTransferred;
+      ULARGE_INTEGER uliTotalFileSize;
+      ULARGE_INTEGER uliTotalBytesTransferred;
+    } ChunkFinished;
+    struct {
+      DWORD dwStreamNumber;
+      DWORD dwReserved;
+      HANDLE hSourceFile;
+      HANDLE hDestinationFile;
+      ULARGE_INTEGER uliStreamSize;
+      ULARGE_INTEGER uliTotalFileSize;
+    } StreamStarted;
+    struct {
+      DWORD dwStreamNumber;
+      DWORD dwReserved;
+      HANDLE hSourceFile;
+      HANDLE hDestinationFile;
+      ULARGE_INTEGER uliStreamSize;
+      ULARGE_INTEGER uliStreamBytesTransferred;
+      ULARGE_INTEGER uliTotalFileSize;
+      ULARGE_INTEGER uliTotalBytesTransferred;
+    } StreamFinished;
+    struct {
+      DWORD dwReserved;
+    } PollContinue;
+    struct {
+      COPYFILE2_COPY_PHASE CopyPhase;
+      DWORD dwStreamNumber;
+      HRESULT hrFailure;
+      DWORD dwReserved;
+      ULARGE_INTEGER uliChunkNumber;
+      ULARGE_INTEGER uliStreamSize;
+      ULARGE_INTEGER uliStreamBytesTransferred;
+      ULARGE_INTEGER uliTotalFileSize;
+      ULARGE_INTEGER uliTotalBytesTransferred;
+    } Error;
+  } Info;
+} COPYFILE2_MESSAGE;
+
+typedef COPYFILE2_MESSAGE_ACTION
+(CALLBACK *PCOPYFILE2_PROGRESS_ROUTINE)(
+  _In_ const COPYFILE2_MESSAGE *pMessage,
+  _In_opt_ PVOID pvCallbackContext);
+
+typedef struct COPYFILE2_EXTENDED_PARAMETERS {
+  DWORD dwSize;
+  DWORD dwCopyFlags;
+  BOOL *pfCancel;
+  PCOPYFILE2_PROGRESS_ROUTINE pProgressRoutine;
+  PVOID pvCallbackContext;
+} COPYFILE2_EXTENDED_PARAMETERS;
+
+WINBASEAPI
+HRESULT
+WINAPI
+CopyFile2(
+  _In_ PCWSTR pwszExistingFileName,
+  _In_ PCWSTR pwszNewFileName,
+  _In_opt_ COPYFILE2_EXTENDED_PARAMETERS *pExtendedParameters);
+
+#endif /* _WIN32_WINNT >= 0x0601 */
+
 #ifdef _MSC_VER
 #pragma warning(pop)
 #endif