* Sync up to trunk head (r64921).
[reactos.git] / include / psdk / winbase.h
index 76fdf40..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;
@@ -908,18 +921,66 @@ typedef struct _WIN32_STREAM_ID {
 } WIN32_STREAM_ID, *LPWIN32_STREAM_ID;
 
 #if (_WIN32_WINNT >= 0x0600)
+
 typedef enum _FILE_ID_TYPE {
-       FileIdType,
-       MaximumFileIdType
+    FileIdType,
+    ObjectIdType,
+    ExtendedFileIdType,
+    MaximumFileIdType
 } FILE_ID_TYPE, *PFILE_ID_TYPE;
 
 typedef struct _FILE_ID_DESCRIPTOR {
-       DWORD dwSize;
-       FILE_ID_TYPE Type;
-       _ANONYMOUS_UNION union {
-               LARGE_INTEGER FileID;
-       } DUMMYUNIONNAME;
+    DWORD        dwSize;
+    FILE_ID_TYPE Type;
+    union {
+        LARGE_INTEGER FileId;
+        GUID          ObjectId;
+    } DUMMYUNIONNAME;
 } FILE_ID_DESCRIPTOR, *LPFILE_ID_DESCRIPTOR;
+
+typedef enum _FILE_INFO_BY_HANDLE_CLASS {
+    FileBasicInfo,
+    FileStandardInfo,
+    FileNameInfo,
+    FileRenameInfo,
+    FileDispositionInfo,
+    FileAllocationInfo,
+    FileEndOfFileInfo,
+    FileStreamInfo,
+    FileCompressionInfo,
+    FileAttributeTagInfo,
+    FileIdBothDirectoryInfo,
+    FileIdBothDirectoryRestartInfo,
+    FileIoPriorityHintInfo,
+    FileRemoteProtocolInfo,
+    FileFullDirectoryInfo,
+    FileFullDirectoryRestartInfo,
+    FileStorageInfo,
+    FileAlignmentInfo,
+    FileIdInfo,
+    FileIdExtdDirectoryInfo,
+    FileIdExtdDirectoryRestartInfo,
+    MaximumFileInfoByHandlesClass
+} FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS;
+
+typedef struct _FILE_ID_BOTH_DIR_INFO {
+    DWORD         NextEntryOffset;
+    DWORD         FileIndex;
+    LARGE_INTEGER CreationTime;
+    LARGE_INTEGER LastAccessTime;
+    LARGE_INTEGER LastWriteTime;
+    LARGE_INTEGER ChangeTime;
+    LARGE_INTEGER EndOfFile;
+    LARGE_INTEGER AllocationSize;
+    DWORD         FileAttributes;
+    DWORD         FileNameLength;
+    DWORD         EaSize;
+    CCHAR         ShortNameLength;
+    WCHAR         ShortName[12];
+    LARGE_INTEGER FileId;
+    WCHAR         FileName[1];
+} FILE_ID_BOTH_DIR_INFO, *PFILE_ID_BOTH_DIR_INFO;
+
 #endif
 
 typedef enum _FINDEX_INFO_LEVELS {
@@ -1216,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);
@@ -3081,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);
@@ -3567,6 +3635,139 @@ typedef ENUMRESTYPEPROCA ENUMRESTYPEPROC;
 #endif
 #endif
 
+/* one-time initialisation API */
+typedef RTL_RUN_ONCE INIT_ONCE;
+typedef PRTL_RUN_ONCE PINIT_ONCE;
+typedef PRTL_RUN_ONCE LPINIT_ONCE;
+
+#define INIT_ONCE_CHECK_ONLY RTL_RUN_ONCE_CHECK_ONLY
+#define INIT_ONCE_ASYNC RTL_RUN_ONCE_ASYNC
+#define INIT_ONCE_INIT_FAILED RTL_RUN_ONCE_INIT_FAILED
+
+typedef BOOL
+(WINAPI *PINIT_ONCE_FN)(
+  _Inout_ PINIT_ONCE InitOnce,
+  _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