Add missing types to winnt.h, rework ktmtypes.h header, and add to winnt.h C++ compatible-types git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@6191 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/include/ktmtypes.h b/mingw-w64-headers/include/ktmtypes.h index 8c316fd..a62d392 100644 --- a/mingw-w64-headers/include/ktmtypes.h +++ b/mingw-w64-headers/include/ktmtypes.h
@@ -1,164 +1,152 @@ -/* - * ktmtypes.h - * - * This file is part of the ReactOS PSDK package. - * - * Contributors: - * Created by Timo Kreuzer <timo.kreuzer@reactos.org> - * - * THIS SOFTWARE IS NOT COPYRIGHTED - * - * This source code is offered for use in the public domain. You may - * use, modify or distribute it freely. - * - * This code is distributed in the hope that it will be useful but - * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warranties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * +/** + * This file is part of the mingw-w64 runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. */ #ifndef _KTMTYPES_ #define _KTMTYPES_ -#define TRANSACTION_MANAGER_VOLATILE 0x00000001 -#define TRANSACTION_MANAGER_COMMIT_DEFAULT 0x00000000 +#ifdef __cplusplus +extern "C" { +#endif + + typedef GUID UOW,*PUOW; + typedef GUID CRM_PROTOCOL_ID,*PCRM_PROTOCOL_ID; + +#define TRANSACTION_MANAGER_VOLATILE 0x00000001 +#define TRANSACTION_MANAGER_COMMIT_DEFAULT 0x00000000 #define TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME 0x00000002 -#define TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES 0x00000004 -#define TRANSACTION_MANAGER_COMMIT_LOWEST 0x00000008 +#define TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES 0x00000004 +#define TRANSACTION_MANAGER_COMMIT_LOWEST 0x00000008 #define TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY 0x00000010 #define TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS 0x00000020 -#define TRANSACTION_MANAGER_MAXIMUM_OPTION 0x0000003F +#define TRANSACTION_MANAGER_MAXIMUM_OPTION 0x0000003f -#define TRANSACTION_DO_NOT_PROMOTE 0x00000001 -#define TRANSACTION_MAXIMUM_OPTION 0x00000001 +#define TRANSACTION_DO_NOT_PROMOTE 0x00000001 +#define TRANSACTION_MAXIMUM_OPTION 0x00000001 -#define RESOURCE_MANAGER_VOLATILE 0x00000001 -#define RESOURCE_MANAGER_COMMUNICATION 0x00000002 -#define RESOURCE_MANAGER_MAXIMUM_OPTION 0x00000003 +#define RESOURCE_MANAGER_VOLATILE 0x00000001 +#define RESOURCE_MANAGER_COMMUNICATION 0x00000002 +#define RESOURCE_MANAGER_MAXIMUM_OPTION 0x00000003 -#define CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY 0x00000001 -#define CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO 0x00000002 -#define CRM_PROTOCOL_MAXIMUM_OPTION 0x00000003 +#define CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY 0x00000001 +#define CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO 0x00000002 +#define CRM_PROTOCOL_MAXIMUM_OPTION 0x00000003 -#define ENLISTMENT_SUPERIOR 0x00000001 -#define ENLISTMENT_MAXIMUM_OPTION 0x00000001 +#define ENLISTMENT_SUPERIOR 0x00000001 +#define ENLISTMENT_MAXIMUM_OPTION 0x00000001 -#define TRANSACTION_NOTIFY_MASK 0x3FFFFFFF -#define TRANSACTION_NOTIFY_PREPREPARE 0x00000001 -#define TRANSACTION_NOTIFY_PREPARE 0x00000002 -#define TRANSACTION_NOTIFY_COMMIT 0x00000004 -#define TRANSACTION_NOTIFY_ROLLBACK 0x00000008 -#define TRANSACTION_NOTIFY_PREPREPARE_COMPLETE 0x00000010 -#define TRANSACTION_NOTIFY_PREPARE_COMPLETE 0x00000020 -#define TRANSACTION_NOTIFY_COMMIT_COMPLETE 0x00000040 -#define TRANSACTION_NOTIFY_ROLLBACK_COMPLETE 0x00000080 -#define TRANSACTION_NOTIFY_RECOVER 0x00000100 -#define TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT 0x00000200 -#define TRANSACTION_NOTIFY_DELEGATE_COMMIT 0x00000400 -#define TRANSACTION_NOTIFY_RECOVER_QUERY 0x00000800 -#define TRANSACTION_NOTIFY_ENLIST_PREPREPARE 0x00001000 -#define TRANSACTION_NOTIFY_LAST_RECOVER 0x00002000 -#define TRANSACTION_NOTIFY_INDOUBT 0x00004000 -#define TRANSACTION_NOTIFY_PROPAGATE_PULL 0x00008000 -#define TRANSACTION_NOTIFY_PROPAGATE_PUSH 0x00010000 -#define TRANSACTION_NOTIFY_MARSHAL 0x00020000 -#define TRANSACTION_NOTIFY_ENLIST_MASK 0x00040000 -#define TRANSACTION_NOTIFY_RM_DISCONNECTED 0x01000000 -#define TRANSACTION_NOTIFY_TM_ONLINE 0x02000000 -#define TRANSACTION_NOTIFY_COMMIT_REQUEST 0x04000000 -#define TRANSACTION_NOTIFY_PROMOTE 0x08000000 -#define TRANSACTION_NOTIFY_PROMOTE_NEW 0x10000000 -#define TRANSACTION_NOTIFY_REQUEST_OUTCOME 0x20000000 + typedef ULONG NOTIFICATION_MASK; +#define TRANSACTION_NOTIFY_MASK 0x3fffffff +#define TRANSACTION_NOTIFY_PREPREPARE 0x00000001 +#define TRANSACTION_NOTIFY_PREPARE 0x00000002 +#define TRANSACTION_NOTIFY_COMMIT 0x00000004 +#define TRANSACTION_NOTIFY_ROLLBACK 0x00000008 +#define TRANSACTION_NOTIFY_PREPREPARE_COMPLETE 0x00000010 +#define TRANSACTION_NOTIFY_PREPARE_COMPLETE 0x00000020 +#define TRANSACTION_NOTIFY_COMMIT_COMPLETE 0x00000040 +#define TRANSACTION_NOTIFY_ROLLBACK_COMPLETE 0x00000080 +#define TRANSACTION_NOTIFY_RECOVER 0x00000100 +#define TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT 0x00000200 +#define TRANSACTION_NOTIFY_DELEGATE_COMMIT 0x00000400 +#define TRANSACTION_NOTIFY_RECOVER_QUERY 0x00000800 +#define TRANSACTION_NOTIFY_ENLIST_PREPREPARE 0x00001000 +#define TRANSACTION_NOTIFY_LAST_RECOVER 0x00002000 +#define TRANSACTION_NOTIFY_INDOUBT 0x00004000 +#define TRANSACTION_NOTIFY_PROPAGATE_PULL 0x00008000 +#define TRANSACTION_NOTIFY_PROPAGATE_PUSH 0x00010000 +#define TRANSACTION_NOTIFY_MARSHAL 0x00020000 +#define TRANSACTION_NOTIFY_ENLIST_MASK 0x00040000 +#define TRANSACTION_NOTIFY_RM_DISCONNECTED 0x01000000 +#define TRANSACTION_NOTIFY_TM_ONLINE 0x02000000 +#define TRANSACTION_NOTIFY_COMMIT_REQUEST 0x04000000 +#define TRANSACTION_NOTIFY_PROMOTE 0x08000000 +#define TRANSACTION_NOTIFY_PROMOTE_NEW 0x10000000 +#define TRANSACTION_NOTIFY_REQUEST_OUTCOME 0x20000000 -#define TRANSACTION_NOTIFY_COMMIT_FINALIZE 0x40000000 +#define TRANSACTION_NOTIFY_COMMIT_FINALIZE 0x40000000 #define TRANSACTIONMANAGER_OBJECT_PATH L"\\TransactionManager\\" -#define TRANSACTION_OBJECT_PATH L"\\Transaction\\" -#define ENLISTMENT_OBJECT_PATH L"\\Enlistment\\" -#define RESOURCE_MANAGER_OBJECT_PATH L"\\ResourceManager\\" +#define TRANSACTION_OBJECT_PATH L"\\Transaction\\" +#define ENLISTMENT_OBJECT_PATH L"\\Enlistment\\" +#define RESOURCE_MANAGER_OBJECT_PATH L"\\ResourceManager\\" -#define TRANSACTIONMANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(TRANSACTIONMANAGER_OBJECT_PATH)+(38*sizeof(WCHAR))) -#define TRANSACTION_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(TRANSACTION_OBJECT_PATH)+(38*sizeof(WCHAR))) -#define ENLISTMENT_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(ENLISTMENT_OBJECT_PATH)+(38*sizeof(WCHAR))) -#define RESOURCE_MANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof(RESOURCE_MANAGER_OBJECT_PATH)+(38*sizeof(WCHAR))) +#define TRANSACTIONMANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (TRANSACTIONMANAGER_OBJECT_PATH) + (38 * sizeof (WCHAR))) +#define TRANSACTION_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (TRANSACTION_OBJECT_PATH) + (38 * sizeof (WCHAR))) +#define ENLISTMENT_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (ENLISTMENT_OBJECT_PATH) + (38 * sizeof (WCHAR))) +#define RESOURCE_MANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (RESOURCE_MANAGER_OBJECT_PATH) + (38 * sizeof (WCHAR))) + + typedef struct _TRANSACTION_NOTIFICATION { + PVOID TransactionKey; + ULONG TransactionNotification; + LARGE_INTEGER TmVirtualClock; + ULONG ArgumentLength; + } TRANSACTION_NOTIFICATION,*PTRANSACTION_NOTIFICATION; + + typedef struct _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT { + GUID EnlistmentId; + UOW UOW; + } TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT,*PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT; #define TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED 0x1 + typedef struct _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT { + GUID TmIdentity; + ULONG Flags; + } TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT,*PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT; + + typedef ULONG SAVEPOINT_ID,*PSAVEPOINT_ID; + + typedef struct _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT { + SAVEPOINT_ID SavepointId; + } TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT,*PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT; + + typedef struct _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT { + ULONG PropagationCookie; + GUID UOW; + GUID TmIdentity; + ULONG BufferLength; + } TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT,*PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT; + + typedef struct _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT { + ULONG MarshalCookie; + GUID UOW; + } TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT,*PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT; + + typedef TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT,*PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT; + #define KTM_MARSHAL_BLOB_VERSION_MAJOR 1 #define KTM_MARSHAL_BLOB_VERSION_MINOR 1 -#define MAX_TRANSACTION_DESCRIPTION_LENGTH 64 -#define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 64 +#define MAX_TRANSACTION_DESCRIPTION_LENGTH 64 +#define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 64 -#ifndef _WDMDDK_ -typedef GUID UOW, *PUOW; + typedef struct _KCRM_MARSHAL_HEADER { + ULONG VersionMajor; + ULONG VersionMinor; + ULONG NumProtocols; + ULONG Unused; + } KCRM_MARSHAL_HEADER,*PKCRM_MARSHAL_HEADER,*RESTRICTED_POINTER PRKCRM_MARSHAL_HEADER; + + typedef struct _KCRM_TRANSACTION_BLOB { + UOW UOW; + GUID TmIdentity; + ULONG IsolationLevel; + ULONG IsolationFlags; + ULONG Timeout; + WCHAR Description[MAX_TRANSACTION_DESCRIPTION_LENGTH]; + } KCRM_TRANSACTION_BLOB,*PKCRM_TRANSACTION_BLOB,*RESTRICTED_POINTER PRKCRM_TRANSACTION_BLOB; + + typedef struct _KCRM_PROTOCOL_BLOB { + CRM_PROTOCOL_ID ProtocolId; + ULONG StaticInfoLength; + ULONG TransactionIdInfoLength; + ULONG Unused1; + ULONG Unused2; + } KCRM_PROTOCOL_BLOB,*PKCRM_PROTOCOL_BLOB,*RESTRICTED_POINTER PRKCRM_PROTOCOL_BLOB; + +#ifdef __cplusplus +} #endif -typedef GUID CRM_PROTOCOL_ID, *PCRM_PROTOCOL_ID; -typedef ULONG NOTIFICATION_MASK; -typedef ULONG SAVEPOINT_ID, *PSAVEPOINT_ID; - -typedef struct _TRANSACTION_NOTIFICATION { - PVOID TransactionKey; - ULONG TransactionNotification; - LARGE_INTEGER TmVirtualClock; - ULONG ArgumentLength; -} TRANSACTION_NOTIFICATION, *PTRANSACTION_NOTIFICATION; - -typedef struct _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT { - GUID EnlistmentId; -/* UOW is typedef'ed as GUID just above. Changed type of UOW - * to GUID from UOW for C++ compat. using ::UOW for C++ works - * too but we were reported some problems in corner cases and - * MSDN documents this structure with "GUID UOW;" anyway. */ - GUID UOW; -} TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT, *PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT; - -typedef struct _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT { - GUID TmIdentity; - ULONG Flags; -} TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT, *PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT; - -typedef struct _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT { - SAVEPOINT_ID SavepointId; -} TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT, *PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT; - -typedef struct _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT { - ULONG PropagationCookie; - GUID UOW; - GUID TmIdentity; - ULONG BufferLength; -} TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT, *PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT, - TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT, *PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT; - -typedef struct _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT { - ULONG MarshalCookie; - GUID UOW; -} TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT, *PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT; - -typedef struct _KCRM_MARSHAL_HEADER { - ULONG VersionMajor; - ULONG VersionMinor; - ULONG NumProtocols; - ULONG Unused; -} KCRM_MARSHAL_HEADER, *PKCRM_MARSHAL_HEADER, *RESTRICTED_POINTER PRKCRM_MARSHAL_HEADER; - -typedef struct _KCRM_TRANSACTION_BLOB { - GUID UOW; - GUID TmIdentity; - ULONG IsolationLevel; - ULONG IsolationFlags; - ULONG Timeout; - WCHAR Description[MAX_TRANSACTION_DESCRIPTION_LENGTH]; -} KCRM_TRANSACTION_BLOB, *PKCRM_TRANSACTION_BLOB, *RESTRICTED_POINTER PRKCRM_TRANSACTION_BLOB; - -typedef struct _KCRM_PROTOCOL_BLOB { - CRM_PROTOCOL_ID ProtocolId; - ULONG StaticInfoLength; - ULONG TransactionIdInfoLength; - ULONG Unused1; - ULONG Unused2; -} KCRM_PROTOCOL_BLOB, *PKCRM_PROTOCOL_BLOB, *RESTRICTED_POINTER PRKCRM_PROTOCOL_BLOB; - -#endif /* _KTMTYPES_ */ +#endif
diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h index 5a99fb5..0728d2b 100644 --- a/mingw-w64-headers/include/winnt.h +++ b/mingw-w64-headers/include/winnt.h
@@ -207,6 +207,34 @@ typedef CONST WCHAR *LPCWSTR,*PCWSTR; typedef PCWSTR *PZPCWSTR; typedef CONST WCHAR UNALIGNED *LPCUWSTR,*PCUWSTR; + typedef WCHAR *PZZWSTR; + typedef CONST WCHAR *PCZZWSTR; + typedef WCHAR UNALIGNED *PUZZWSTR; + typedef CONST WCHAR UNALIGNED *PCUZZWSTR; + typedef WCHAR *PNZWCH; + typedef CONST WCHAR *PCNZWCH; + typedef WCHAR UNALIGNED *PUNZWCH; + typedef CONST WCHAR UNALIGNED *PCUNZWCH; + +#if _WIN32_WINNT >= 0x0600 || (defined (__cplusplus) && defined (WINDOWS_ENABLE_CPLUSPLUS)) + typedef CONST WCHAR *LPCWCHAR,*PCWCHAR; + typedef CONST WCHAR UNALIGNED *LPCUWCHAR,*PCUWCHAR; + typedef unsigned long UCSCHAR; + +#define UCSCHAR_INVALID_CHARACTER (0xffffffff) +#define MIN_UCSCHAR (0) +#define MAX_UCSCHAR (0x0010ffff) + + typedef UCSCHAR *PUCSCHAR; + typedef const UCSCHAR *PCUCSCHAR; + typedef UCSCHAR *PUCSSTR; + typedef UCSCHAR UNALIGNED *PUUCSSTR; + typedef const UCSCHAR *PCUCSSTR; + typedef const UCSCHAR UNALIGNED *PCUUCSSTR; + typedef UCSCHAR UNALIGNED *PUUCSCHAR; + typedef const UCSCHAR UNALIGNED *PCUUCSCHAR; +#endif + typedef CHAR *PCHAR,*LPCH,*PCH; typedef CONST CHAR *LPCCH,*PCCH; typedef CHAR *NPSTR,*LPSTR,*PSTR; @@ -214,6 +242,10 @@ typedef CONST PSTR *PCZPSTR; typedef CONST CHAR *LPCSTR,*PCSTR; typedef PCSTR *PZPCSTR; + typedef CHAR *PZZSTR; + typedef CONST CHAR *PCZZSTR; + typedef CHAR *PNZCH; + typedef CONST CHAR *PCNZCH; #if defined(UNICODE) #ifndef _TCHAR_DEFINED