Win7 "C" list.

git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@3644 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/include/bcrypt.h b/mingw-w64-headers/include/bcrypt.h
index 4faa7e9..0ec6bc4 100644
--- a/mingw-w64-headers/include/bcrypt.h
+++ b/mingw-w64-headers/include/bcrypt.h
@@ -77,7 +77,11 @@
 #define CRYPT_ALL_FUNCTIONS 1
 #define CRYPT_ALL_PROVIDERS 2
 
+#ifndef __BCRYPT_KEY_HANDLE_DEFINED__
+#define __BCRYPT_KEY_HANDLE_DEFINED__
+/*also in cryptxml.h*/
 typedef LPVOID BCRYPT_KEY_HANDLE;
+#endif /*__BCRYPT_KEY_HANDLE_DEFINED__*/
 typedef LPVOID BCRYPT_ALG_HANDLE;
 typedef LPVOID BCRYPT_HASH_HANDLE;
 typedef LPVOID BCRYPT_SECRET_HANDLE;
diff --git a/mingw-w64-headers/include/bdamedia.h b/mingw-w64-headers/include/bdamedia.h
index c0f889e..f2f0c37 100644
--- a/mingw-w64-headers/include/bdamedia.h
+++ b/mingw-w64-headers/include/bdamedia.h
@@ -345,6 +345,35 @@
   BDA_TRANSPORT_INFO BdaTransportInfo;
 } KS_DATARANGE_BDA_TRANSPORT, *PKS_DATARANGE_BDA_TRANSPORT;
 
+#if (_WIN32_WINNT >= 0x0601)
+typedef enum tagChannelChangeSpanningEvent_State {
+  ChannelChangeSpanningEvent_Start   = 0,
+  ChannelChangeSpanningEvent_End     = 2 
+} ChannelChangeSpanningEvent_State;
+
+typedef struct _ChannelChangeInfo {
+  ChannelChangeSpanningEvent_State state;
+  ULONGLONG                        TimeStamp;
+} ChannelChangeInfo;
+
+typedef struct _ChannelInfo {
+  LONG lFrequency;
+  __MINGW_EXTENSION union {
+     struct {
+      LONG lONID;
+      LONG lTSID;
+      LONG lSID;
+    } DVB;
+    struct {
+      LONG lProgNumber;
+    } DC;
+    struct {
+      LONG lProgNumber;
+    } ATSC;
+  } ;
+} ChannelInfo;
+
+#endif /*(_WIN32_WINNT >= 0x0601)*/
 
 /* ------------------------------------------------------------
   BDA Stream Format GUIDs
diff --git a/mingw-w64-headers/include/cryptxml.h b/mingw-w64-headers/include/cryptxml.h
new file mode 100644
index 0000000..7985c40
--- /dev/null
+++ b/mingw-w64-headers/include/cryptxml.h
@@ -0,0 +1,552 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _INC_CRYPTXML
+#define _INC_CRYPTXML
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef DECLSPEC_IMPORT
+#define DECLSPEC_IMPORT __declspec(dllimport)
+#endif
+
+#ifndef CRYPTXMLAPI
+#define CRYPTXMLAPI DECLSPEC_IMPORT
+#endif
+
+#ifndef __HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_DEFINED__
+#define __HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_DEFINED__
+/*Also in wincrypth*/
+typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE;
+#endif /*__HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_DEFINED__*/
+
+#ifndef __BCRYPT_KEY_HANDLE_DEFINED__
+#define __BCRYPT_KEY_HANDLE_DEFINED__
+/*also in bcrypt.h*/
+typedef LPVOID BCRYPT_KEY_HANDLE;
+#endif /*__BCRYPT_KEY_HANDLE_DEFINED__*/
+
+typedef ULONG_PTR HCRYPTXML; /*Fixme: Guessed*/
+typedef HANDLE HXML; /*Fixme: Guessed*/
+
+#if (_WIN32_WINNT >= 0x0601)
+
+typedef enum tagCRYPT_XML_CHARSET {
+  CRYPT_XML_CHARSET_AUTO      = 0,
+  CRYPT_XML_CHARSET_UTF8      = 1,
+  CRYPT_XML_CHARSET_UTF16LE   = 2,
+  CRYPT_XML_CHARSET_UTF16BE   = 3 
+} CRYPT_XML_CHARSET;
+
+typedef enum tagCRYPT_XML_KEYINFO_SPEC {
+  CRYPT_XML_KEYINFO_SPEC_NONE      = 0,
+  CRYPT_XML_KEYINFO_SPEC_ENCODED   = 1,
+  CRYPT_XML_KEYINFO_SPEC_PARAM     = 2 
+} CRYPT_XML_KEYINFO_SPEC;
+
+typedef enum tagCRYPT_XML_PROPERTY_ID {
+  CRYPT_XML_PROPERTY_MAX_HEAP_SIZE        = 1,
+  CRYPT_XML_PROPERTY_SIGNATURE_LOCATION   = 2,
+  CRYPT_XML_PROPERTY_MAX_SIGNATURES       = 3,
+  CRYPT_XML_PROPERTY_DOC_DECLARATION      = 4,
+  CRYPT_XML_PROPERTY_XML_OUTPUT_CHARSET   = 5,
+  CRYPT_XML_PROPERTY_HMAC_OUTPUT_LENGTH   = 6 
+} CRYPT_XML_PROPERTY_ID;
+
+typedef struct _CRYPT_XML_BLOB {
+  CRYPT_XML_CHARSET dwCharset;
+  ULONG             cbData;
+  BYTE              *pbData;
+} CRYPT_XML_BLOB, *PCRYPT_XML_BLOB;
+
+#define CRYPT_XML_BLOB_MAX 0x7FFFFFF8
+
+typedef struct _CRYPT_XML_ALGORITHM {
+  ULONG          cbSize;
+  LPCWSTR        wszAlgorithm;
+  CRYPT_XML_BLOB Encoded;
+} CRYPT_XML_ALGORITHM, *PCRYPT_XML_ALGORITHM;
+
+typedef struct _CRYPT_XML_ALGORITHM_INFO {
+  DWORD cbSize;
+  WCHAR *wszAlgorithmURI;
+  WCHAR *wszName;
+  DWORD dwGroupId;
+  WCHAR *wszCNGAlgid;
+  WCHAR wszCNGExtraAlgid;
+  DWORD dwSignFlags;
+  DWORD dwVerifyFlags;
+  void  pvPaddingInfo;
+  void  pvExtraInfo;
+} CRYPT_XML_ALGORITHM_INFO, *PCRYPT_XML_ALGORITHM_INFO;
+
+#define CRYPT_XML_GROUP_ID_HASH 1
+#define CRYPT_XML_GROUP_ID_SIGN 2
+
+typedef HRESULT (CALLBACK *PFN_CRYPT_XML_WRITE_CALLBACK)(
+  void *pvCallbackState,
+  BYTE pbData,
+  ULONG cbData
+);
+
+typedef HRESULT ( WINAPI *CryptXmlDllEncodeAlgorithm )(
+  CRYPT_XML_ALGORITHM_INFO *pAlgInfo,
+  CRYPT_XML_CHARSET dwCharset,
+  void *pvCallbackState,
+  PFN_CRYPT_XML_WRITE_CALLBACK pfnWrite
+);
+
+typedef HANDLE CRYPT_XML_DIGEST;
+
+typedef HRESULT ( WINAPI *CryptXmlDllCreateDigest )(
+  const CRYPT_XML_ALGORITHM *pDigestMethod,
+  ULONG *pcbSize,
+  CRYPT_XML_DIGEST *phDigest
+);
+
+typedef HRESULT ( WINAPI *CryptXmlDllDigestData )(
+    CRYPT_XML_DIGEST hDigest,
+    BYTE *pbData,
+    ULONG cbDigest
+);
+
+typedef HRESULT ( WINAPI *CryptXmlDllFinalizeDigest )(
+  CRYPT_XML_DIGEST hDigest,
+  BYTE *pbDigest,
+  ULONG cbDigest
+);
+
+typedef HRESULT ( WINAPI *CryptXmlDllCloseDigest )(
+  CRYPT_XML_DIGEST hDigest
+);
+
+typedef HRESULT ( WINAPI *CryptXmlDllSignData )(
+  const CRYPT_XML_ALGORITHM *pSignatureMethod,
+  HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey,
+  DWORD dwKeySpec,
+  const BYTE *pbInput,
+  ULONG cbInput,
+  BYTE *pbOutput,
+  ULONG cbOutput,
+  ULONG *pcbResult
+);
+
+typedef HRESULT ( WINAPI *CryptXmlDllVerifySignature )(
+  const CRYPT_XML_ALGORITHM *pSignatureMethod,
+  HCRYPTXML_PROV hCryptProv,
+  HCRYPTXML_KEY hKey,
+  const BYTE *pbInput,
+  ULONG cbInput,
+  const BYTE *pbSignature,
+  ULONG cbSignature
+);
+
+typedef HRESULT ( WINAPI *CryptXmlDllCreateKey )(
+  CRYPT_XML_BLOB *pEncoded,
+  const BCRYPT_KEY_HANDLE *phKey
+);
+
+typedef HRESULT ( WINAPI *CryptXmlDllEncodeKeyValue )(
+  NCRYPT_KEY_HANDLE hKey,
+  CRYPT_XML_CHARSET dwCharset,
+  void *pvCallbackState,
+  PFN_CRYPT_XML_WRITE_CALLBACK pfnWrite
+);
+
+typedef struct _CRYPT_XML_CRYPTOGRAPHIC_INTERFACE {
+  ULONG                       cbSize; /*Fixme: Guessed*/
+  CryptXmlDllEncodeAlgorithm  fpCryptXmlEncodeAlgorithm;
+  CryptXmlDllCreateDigest     fpCryptXmlCreateDigest;
+  CryptXmlDllDigestData       fpCryptXmlDigestData;
+  CryptXmlDllFinalizeDigest   fpCryptXmlFinalizeDigest;
+  CryptXmlDllCloseDigest      fpCryptXmlCloseDigest;
+  CryptXmlDllSignData         fpCryptXmlSignData;
+  CryptXmlDllVerifySignature  fpCryptXmlVerifySignature;
+  CryptXmlDllGetAlgorithmInfo fpCryptXmlGetAlgorithmInfo;
+} CRYPT_XML_CRYPTOGRAPHIC_INTERFACE, *PCRYPT_XML_CRYPTOGRAPHIC_INTERFACE;
+
+typedef HRESULT ( WINAPI *CryptXmlDllGetInterface )(
+  DWORD dwFlags,
+  const CRYPT_XML_ALGORITHM_INFO *pMethod,
+  CRYPT_XML_CRYPTOGRAPHIC_INTERFACE *pInterface
+);
+
+typedef struct _CRYPT_XML_DATA_BLOB {
+  ULONG cbData;
+  BYTE  *pbData;
+} CRYPT_XML_DATA_BLOB, *PCRYPT_XML_DATA_BLOB;
+
+typedef HRESULT (CALLBACK *PFN_CRYPT_XML_DATA_PROVIDER_READ)(
+  void *pvCallbackState,
+  BYTE *pbData,
+  ULONG cbData,
+  ULONG *pcbRead
+);
+
+typedef HRESULT (CALLBACK *PFN_CRYPT_XML_DATA_PROVIDER_CLOSE)(
+  void *pvCallbackState
+);
+
+typedef struct _CRYPT_XML_DATA_PROVIDER {
+  void                              *pvCallbackState;
+  ULONG                             cbBufferSize;
+  PFN_CRYPT_XML_DATA_PROVIDER_READ  pfnRead;
+  PFN_CRYPT_XML_DATA_PROVIDER_CLOSE pfnClose;
+} CRYPT_XML_DATA_PROVIDER, *PCRYPT_XML_DATA_PROVIDER;
+
+typedef HRESULT (CALLBACK *PFN_CRYPT_XML_CREATE_TRANSFORM)(
+  const CRYPT_XML_ALGORITHM *pTransform,
+  CRYPT_XML_DATA_PROVIDER *pProviderIn,
+  CRYPT_XML_DATA_PROVIDER *pProviderOut
+);
+
+typedef struct _CRYPT_XML_TRANSFORM_INFO {
+  ULONG                          cbSize;
+  LPCWSTR                        wszAlgorithm;
+  ULONG                          cbBufferSize;
+  DWORD                          dwFlags;
+  PFN_CRYPT_XML_CREATE_TRANSFORM pfnCreateTransform;
+} CRYPT_XML_TRANSFORM_INFO, *PCRYPT_XML_TRANSFORM_INFO;
+
+#define CRYPT_XML_TRANSFORM_ON_STREAM 0x00000001
+#define CRYPT_XML_TRANSFORM_ON_NODESET 0x00000002
+#define CRYPT_XML_TRANSFORM_URI_QUERY_STRING 0x00000003
+
+typedef struct _CRYPT_XML_TRANSFORM_CHAIN_CONFIG {
+  ULONG                     cbSize;
+  ULONG                     cTransformInfo;
+  PCRYPT_XML_TRANSFORM_INFO *rgpTransformInfo;
+} CRYPT_XML_TRANSFORM_CHAIN_CONFIG, *PCRYPT_XML_TRANSFORM_CHAIN_CONFIG;
+
+typedef struct _CRYPT_XML_REFERENCE {
+  ULONG               cbSize;
+  HCRYPTXML           hReference;
+  LPCWSTR             wszId;
+  LPCWSTR             wszUri;
+  LPCWSTR             wszType;
+  CRYPT_XML_ALGORITHM DigestMethod;
+  CRYPT_DATA_BLOB     DigestValue;
+  ULONG               cTransform;
+  CRYPT_XML_ALGORITHM *rgTransform;
+} CRYPT_XML_REFERENCE, *PCRYPT_XML_REFERENCE;
+
+typedef struct _CRYPT_XML_REFERENCES {
+  ULONG                cReference;
+  PCRYPT_XML_REFERENCE *rgpReference;
+} CRYPT_XML_REFERENCES, *PCRYPT_XML_REFERENCES;
+
+typedef struct _CRYPT_XML_SIGNED_INFO {
+  ULONG                cbSize;
+  LPCWSTR              wszId;
+  CRYPT_XML_ALGORITHM  Canonicalization;
+  CRYPT_XML_ALGORITHM  SignatureMethod;
+  ULONG                cReference;
+  PCRYPT_XML_REFERENCE *rgpReference;
+  CRYPT_XML_BLOB       Encoded;
+} CRYPT_XML_SIGNED_INFO, *PCRYPT_XML_SIGNED_INFO;
+
+typedef struct _CRYPT_XML_ISSUER_SERIAL {
+  LPCWSTR wszIssuer ;
+  LPCWSTR wszSerial;
+} CRYPT_XML_ISSUER_SERIAL;
+
+typedef struct _CRYPT_XML_X509DATA_ITEM {
+  DWORD dwType;
+  __MINGW_EXTENSION union {
+    CRYPT_XML_ISSUER_SERIAL IssuerSerial;
+    CRYPT_XML_DATA_BLOB     SKI;
+    LPCWSTR                 wszSubjectName;
+    CRYPT_XML_DATA_BLOB     Certificate;
+    CRYPT_XML_DATA_BLOB     CRL;
+    CRYPT_XML_BLOB          Custom;
+  } ;
+} CRYPT_XML_X509DATA_ITEM;
+
+#define CRYPT_XML_X509DATA_TYPE_ISSUER_SERIAL 0x00000001
+#define CRYPT_XML_X509DATA_TYPE_SKI 0x00000002
+#define CRYPT_XML_X509DATA_TYPE_SUBJECT_NAME 0x00000003
+#define CRYPT_XML_X509DATA_TYPE_CERTIFICATE 0x00000004
+#define CRYPT_XML_X509DATA_TYPE_CRL 0x00000005
+#define CRYPT_XML_X509DATA_TYPE_CUSTOM 0x00000006
+
+typedef struct _CRYPT_XML_X509DATA {
+  UINT                    cX509Data;
+  CRYPT_XML_X509DATA_ITEM *rgX509Data;
+} CRYPT_XML_X509DATA, *PCRYPT_XML_X509DATA;
+
+typedef struct _CRYPT_XML_KEY_INFO_ITEM {
+  DWORD dwType;
+  __MINGW_EXTENSION union {
+    LPCWSTR             wszKeyName;
+    CRYPT_XML_KEY_VALUE KeyValue;
+    CRYPT_XML_BLOB      RetrievalMethod;
+    CRYPT_XML_X509DATA  X509Data;
+    CRYPT_XML_BLOB      Custom;
+  } ;
+} CRYPT_XML_KEY_INFO_ITEM;
+
+#define CRYPT_XML_KEYINFO_TYPE_KEYNAME 0x00000001
+#define CRYPT_XML_KEYINFO_TYPE_KEYVALUE 0x00000002
+#define CRYPT_XML_KEYINFO_TYPE_RETRIEVAL 0x00000003
+#define CRYPT_XML_KEYINFO_TYPE_X509DATA 0x00000004
+#define CRYPT_XML_KEYINFO_TYPE_CUSTOM 0x00000005
+
+typedef struct _CRYPT_XML_KEY_DSA_KEY_VALUE {
+  CRYPT_XML_DATA_BLOB P;
+  CRYPT_XML_DATA_BLOB Q;
+  CRYPT_XML_DATA_BLOB G;
+  CRYPT_XML_DATA_BLOB Y;
+  CRYPT_XML_DATA_BLOB J;
+  CRYPT_XML_DATA_BLOB Seed;
+  CRYPT_XML_DATA_BLOB Counter;
+} CRYPT_XML_KEY_DSA_KEY_VALUE;
+
+typedef struct _CRYPT_XML_KEY_RSA_KEY_VALUE {
+  CRYPT_XML_DATA_BLOB Modulus;
+  CRYPT_XML_DATA_BLOB Exponent;
+} CRYPT_XML_KEY_RSA_KEY_VALUE;
+
+typedef struct _CRYPT_XML_KEY_ECDSA_KEY_VALUE {
+  LPCWSTR                  wszNamedCurve;
+  CRYPT_XML_DATA_BLOB      X;
+  CRYPT_XML_DATA_BLOB      Y;
+  CRYPT_XML_BLOB           ExplicitPara;
+} CRYPT_XML_KEY_ECDSA_KEY_VALUE;
+
+typedef struct _CRYPT_XML_KEY_VALUE {
+  DWORD dwType;
+  __MINGW_EXTENSION union {
+    CRYPT_XML_KEY_DSA_KEY_VALUE   DSAKeyValue;
+    CRYPT_XML_KEY_RSA_KEY_VALUE   RSAKeyValue;
+    CRYPT_XML_KEY_ECDSA_KEY_VALUE ECDSAKeyValue;
+    CRYPT_XML_BLOB                Custom;
+  } ;
+} CRYPT_XML_KEY_VALUE;
+
+#define CRYPT_XML_KEY_VALUE_TYPE_DSA 0x00000001
+#define CRYPT_XML_KEY_VALUE_TYPE_RSA 0x00000002
+#define CRYPT_XML_KEY_VALUE_TYPE_ECDSA 0x00000003
+#define CRYPT_XML_KEY_VALUE_TYPE_CUSTOM 0x00000004
+
+typedef struct _CRYPT_XML_KEY_INFO {
+  ULONG                   cbSize;
+  LPCWSTR                 wszId;
+  UINT                    cKeyInfo;
+  CRYPT_XML_KEY_INFO_ITEM *rgKeyInfo;
+  BCRYPT_KEY_HANDLE       hVerifyKey;
+} CRYPT_XML_KEY_INFO;
+
+typedef struct _CRYPT_XML_OBJECT {
+  ULONG                cbSize;
+  HCRYPTXML            hObject;
+  LPCWSTR              wszId;
+  LPCWSTR              wszMimeType;
+  LPCWSTR              wszEncoding;
+  CRYPT_XML_REFERENCES Manifest;
+  CRYPT_XML_BLOB       Encoded;
+} CRYPT_XML_OBJECT, *PCRYPT_XML_OBJECT;
+
+typedef struct _CRYPT_XML_SIGNATURE {
+  ULONG                 cbSize;
+  HCRYPTXML             hSignature;
+  LPCWSTR               wszId;
+  CRYPT_XML_SIGNED_INFO SignedInfo;
+  CRYPT_DATA_BLOB       SignatureValue;
+  CRYPT_XML_KEY_INFO    *pKeyInfo;
+  ULONG                 cObject;
+  PCRYPT_XML_OBJECT     *rgpObject;
+} CRYPT_XML_SIGNATURE, *PCRYPT_XML_SIGNATURE;
+
+typedef struct _CRYPT_XML_DOC_CTXT {
+  ULONG                            cbSize;
+  HCRYPTXML                        hDocCtxt;
+  CRYPT_XML_TRANSFORM_CHAIN_CONFIG *pTransformsConfig;
+  ULONG                            cSignature;
+  PCRYPT_XML_SIGNATURE             *rgpSignature;
+} CRYPT_XML_DOC_CTXT, *PCRYPT_XML_DOC_CTXT;
+
+typedef struct _CRYPT_XML_KEYINFO_PARAM {
+  LPCWSTR   wszId;
+  LPCWSTR   wszKeyName;
+  CERT_BLOB SKI;
+  LPCWSTR   wszSubjectName;
+  ULONG     cCertificate;
+  CERT_BLOB *rgCertificate;
+  ULONG     cCRL;
+  CERT_BLOB *rgCRL;
+} CRYPT_XML_KEYINFO_PARAM;
+
+typedef struct _CRYPT_XML_PROPERTY {
+  CRYPT_XML_PROPERTY_ID dwPropId;
+  const void            *pvValue;
+  ULONG                 cbValue;
+} CRYPT_XML_PROPERTY, *PCRYPT_XML_PROPERTY;
+
+typedef struct _CRYPT_XML_STATUS {
+  ULONG cbSize;
+  DWORD dwErrorStatus;
+  DWORD dwInfoStatus;
+} CRYPT_XML_STATUS, *PCRYPT_XML_STATUS;
+
+#define CRYPT_XML_STATUS_ERROR_NOT_RESOLVED 0x00000001
+#define CRYPT_XML_STATUS_ERROR_DIGEST_INVALID 0x00000002
+#define CRYPT_XML_STATUS_ERROR_NOT_SUPPORTED_ALGORITHM 0x00000005
+#define CRYPT_XML_STATUS_ERROR_NOT_SUPPORTED_TRANSFORM 0x00000008
+#define CRYPT_XML_STATUS_ERROR_SIGNATURE_INVALID 0x00010000
+#define CRYPT_XML_STATUS_ERROR_KEYINFO_NOT_PARSED 0x00020000
+
+#define CRYPT_XML_STATUS_INTERNAL_REFERENCE 0x00000001
+#define CRYPT_XML_STATUS_KEY_AVAILABLE 0x00000002
+#define CRYPT_XML_STATUS_DIGESTING 0x00000004
+#define CRYPT_XML_STATUS_DIGEST_VALID 0x00000008
+#define CRYPT_XML_STATUS_SIGNATURE_VALID 0x00010000
+#define CRYPT_XML_STATUS_OPENED_TO_ENCODE 0x80000000
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlAddObject(
+  HCRYPTXML hSignatureOrObject,
+  DWORD dwFlags,
+  const CRYPT_XML_PROPERTY *rgProperty,
+  ULONG cProperty,
+  const PCRYPT_XML_BLOB pEncoded,
+  const CRYPT_XML_OBJECT **ppObject
+);
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlClose(
+  HXML hCryptXml
+);
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlCreateReference(
+  HCRYPTXML hCryptXml,
+  DWORD dwFlags,
+  LPCWSTR wszId,
+  LPCWSTR wszURI,
+  LPCWSTR wszType,
+  const CRYPT_XML_ALGORITHM *pDigestMethod,
+  ULONG cTransform,
+  const CRYPT_XML_ALGORITHM *rgTransform,
+  HCRYPTXML *phReference
+);
+
+#define CRYPT_XML_FLAG_CREATE_REFERENCE_AS_OBJECT 0x00000001
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlDigestReference(
+  HCRYPTXML hReference,
+  DWORD dwFlags,
+  CRYPT_XML_DATA_PROVIDER *pDataProviderIn
+);
+
+#define CRYPT_XML_REFERENCE_DATA_TRANSFORMED 0x00000001
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlEncode(
+  HCRYPTXML hCryptXml,
+  CRYPT_XML_CHARSET dwCharset,
+  const CRYPT_XML_PROPERTY *rgProperty,
+  ULONG cProperty,
+  void *pvCallbackState,
+  PFN_CRYPT_XML_WRITE_CALLBACK pfnWrite
+);
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlGetAlgorithmInfo(
+  const CRYPT_XML_ALGORITHM *pXmlAlgorithm,
+  DWORD dwFlags,
+  CRYPT_XML_ALGORITHM_INFO **ppAlgInfo
+);
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlGetDocContext(
+  HCRYPTXML hCryptXml,
+  const CRYPT_XML_DOC_CTXT **ppStruct
+);
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlGetReference(
+  HCRYPTXML HCRYPTXML,
+  const CRYPT_XML_REFERENCE **ppStruct
+);
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlGetSignature(
+  HCRYPTXML hCryptXml,
+  const PCRYPT_XML_SIGNATURE **ppStruct
+);
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlGetStatus(
+  HCRYPTXML hCryptXml,
+  CRYPT_XML_STATUS *pStatus
+);
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlGetTransforms(
+  PCRYPT_XML_TRANSFORM_CHAIN_CONFIG **pConfig
+);
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlImportPublicKey(
+  DWORD dwFlags,
+  CRYPT_XML_KEY_VALUE *pKeyValue,
+  BCRYPT_KEY_HANDLE *phKey
+);
+
+#define CRYPT_XML_FLAG_DISABLE_EXTENSIONS 0x10000000
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlOpenToDecode(
+  CRYPT_XML_TRANSFORM_CHAIN_CONFIG *pConfig,
+  DWORD dwFlags,
+  const CRYPT_XML_PROPERTY *rgProperty,
+  ULONG cProperty,
+  const CRYPT_XML_BLOB *pEncoded,
+  HCRYPTXML phCryptXml
+);
+
+#define CRYPT_XML_FLAG_NO_SERIALIZE 0x80000000
+#define CRYPT_XML_FLAG_DISABLE_EXTENSION 0x10000000
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlOpenToEncode(
+  CRYPT_XML_TRANSFORM_CHAIN_CONFIG *pConfig,
+  DWORD dwFlags,
+  LPCWSTR wszId,
+  CRYPT_XML_PROPERTY *rgProperty,
+  ULONG cProperty,
+  CRYPT_XML_BLOB *pEncoded,
+  HCRYPTXML *phSignature
+);
+
+#define CRYPT_XML_FLAG_NO_SERIALIZE 0x80000000
+#define CRYPT_XML_FLAG_DISABLE_EXTENSIONS 0x10000000
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlSetHMACSecret(
+  HCRYPTXML hSignature,
+  const BYTE *pbSecret,
+  ULONG cbSecret
+);
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlSign(
+  HCRYPTXML hSignature,
+  HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hKey,
+  DWORD dwKeySpec,
+  DWORD dwFlags,
+  CRYPT_XML_KEYINFO_SPEC dwKeyInfoSpec,
+  const void pvKeyInfoSpec,
+  const CRYPT_XML_ALGORITHM pSignatureMethod,
+  const CRYPT_XML_ALGORITHM pCanonicalization
+);
+
+#define AT_KEYEXCHANGE 1
+#define AT_SIGNATURE 2
+#define CERT_NCRYPT_KEY_SPEC 0xFFFFFFFF
+
+#define CRYPT_XML_SIGN_ADD_KEYVALUE 0x00000001
+#define CRYPT_XML_FLAG_DISABLE_EXTENSIONS 0x10000000
+
+CRYPTXMLAPI HRESULT WINAPI CryptXmlVerifySignature(
+  HCRYPTXML hSignature,
+  BCRYPT_KEY_HANDLE hKey,
+  DWORD dwFlags
+);
+
+#endif /*(_WIN32_WINNT >= 0x0601)*/
+
+#ifdef __cplusplus
+}
+#endif
+#endif /*_INC_CRYPTXML*/
diff --git a/mingw-w64-headers/include/evntrace.h b/mingw-w64-headers/include/evntrace.h
index 7c11b02..f5593c7 100644
--- a/mingw-w64-headers/include/evntrace.h
+++ b/mingw-w64-headers/include/evntrace.h
@@ -745,6 +745,7 @@
 );
 #endif /* _WIN32_WINNT >= 0x0600 */
 
+/*To enable the read event type for disk IO events, set GUID to 3d6fa8d4-fe05-11d0-9dda-00c04fd7ba7c and Type to 10.*/
 typedef struct _CLASSIC_EVENT_ID {
   GUID EventGuid;
   UCHAR Type;
diff --git a/mingw-w64-headers/include/ncrypt.h b/mingw-w64-headers/include/ncrypt.h
index 491ccf7..0f9a8ca 100644
--- a/mingw-w64-headers/include/ncrypt.h
+++ b/mingw-w64-headers/include/ncrypt.h
@@ -33,12 +33,12 @@
 #ifndef __NCRYPT_KEY_HANDLE__
 #define __NCRYPT_KEY_HANDLE__
 /*in wincrypt.h too*/
-typedef LPVOID NCRYPT_KEY_HANDLE;
+typedef ULONG_PTR NCRYPT_KEY_HANDLE;
 #endif
 
-typedef LPVOID NCRYPT_PROV_HANDLE;
-typedef LPVOID NCRYPT_SECRET_HANDLE;
-typedef LPVOID NCRYPT_HANDLE;
+typedef ULONG_PTR NCRYPT_PROV_HANDLE;
+typedef ULONG_PTR NCRYPT_SECRET_HANDLE;
+typedef ULONG_PTR NCRYPT_HANDLE;
 
 #ifndef __HCRYPTKEY__
 #define __HCRYPTKEY__
diff --git a/mingw-w64-headers/include/objbase.h b/mingw-w64-headers/include/objbase.h
index 0aaaf99..32ed37c 100644
--- a/mingw-w64-headers/include/objbase.h
+++ b/mingw-w64-headers/include/objbase.h
@@ -330,6 +330,14 @@
 #if (_WIN32_WINNT >= 0x0600)
 HRESULT WINAPI CoDisconnectContext(DWORD dwTimeout);
 #endif /*(_WIN32_WINNT >= 0x0600)*/
+#if (_WIN32_WINNT >= 0x0601)
+
+WINOLEAPI HRESULT WINAPI CoGetApartmentType(
+  APTTYPE *pAptType,
+  APTTYPEQUALIFIER *pAptQualifier
+);
+
+#endif /*(_WIN32_WINNT >= 0x0601)*/
 
 #ifndef RC_INVOKED
 #include <poppack.h>
diff --git a/mingw-w64-headers/include/resapi.h b/mingw-w64-headers/include/resapi.h
index 6c45b77..a7f05de 100644
--- a/mingw-w64-headers/include/resapi.h
+++ b/mingw-w64-headers/include/resapi.h
@@ -54,7 +54,7 @@
   typedef VOID (_stdcall *PQUORUM_RESOURCE_LOST)(RESOURCE_HANDLE Resource);
 
   typedef enum LOG_LEVEL {
-    LOG_INFORMATION,LOG_WARNING,LOG_ERROR,LOG_SEVERE
+    LOG_INFORMATION = 0,LOG_WARNING,LOG_ERROR,LOG_SEVERE
   } LOG_LEVEL,*PLOG_LEVEL;
 
   typedef VOID (_stdcall *PLOG_EVENT_ROUTINE)(RESOURCE_HANDLE ResourceHandle,LOG_LEVEL LogLevel,LPCWSTR FormatString,...);
@@ -71,7 +71,7 @@
   typedef DWORD (_stdcall *PRESOURCE_TYPE_CONTROL_ROUTINE)(LPCWSTR ResourceTypeName,DWORD ControlCode,PVOID InBuffer,DWORD InBufferSize,PVOID OutBuffer,DWORD OutBufferSize,LPDWORD BytesReturned);
 
   typedef enum _RESOURCE_EXIT_STATE {
-    ResourceExitStateContinue,ResourceExitStateTerminate,ResourceExitStateMax
+    ResourceExitStateContinue = 0,ResourceExitStateTerminate,ResourceExitStateMax
   } RESOURCE_EXIT_STATE;
 
   typedef struct CLRES_V1_FUNCTIONS {
@@ -351,6 +351,37 @@
 
 #endif /* (_WIN32_WINNT >= 0x0600) */
 
+#if (_WIN32_WINNT >= 0x0600)
+DWORD WINAPI ClusterClearBackupStateForSharedVolume(
+  LPCWSTR lpszVolumePathName
+);
+
+WINBOOL WINAPI ClusterGetVolumeNameForVolumeMountPoint(
+  LPCWSTR lpszVolumeMountPoint,
+  LPWSTR lpszVolumeName,
+  DWORD cchBufferLength
+);
+
+WINBOOL WINAPI ClusterGetVolumePathName(
+  LPCWSTR lpszFileName,
+  LPWSTR lpszVolumePathName,
+  DWORD cchBufferLength
+);
+
+WINBOOL WINAPI ClusterIsPathOnSharedVolume(
+  LPCWSTR lpszPathName
+);
+
+DWORD WINAPI ClusterPrepareSharedVolumeForBackup(
+  LPCWSTR lpszFileName,
+  LPWSTR lpszVolumePathName,
+  LPDWORD lpcchVolumePathName,
+  LPWSTR lpszVolumeName,
+  LPDWORD lpcchVolumeName
+);
+
+#endif /* (_WIN32_WINNT >= 0x0600) */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/mingw-w64-headers/include/schannel.h b/mingw-w64-headers/include/schannel.h
index 3e2ee33..f7e27a1 100644
--- a/mingw-w64-headers/include/schannel.h
+++ b/mingw-w64-headers/include/schannel.h
@@ -367,4 +367,10 @@
   DWORD cbPrfData;
 } SecPkgContext_EapPrfInfo, *PSecPkgContext_EapPrfInfo;
 #endif /*(_WIN32_WINNT >= 0x0600)*/
+#if (_WIN32_WINNT >= 0x0601)
+typedef struct _SecPkgContext_SupportedSignatures {
+  WORD cSignatureAndHashAlgorithms;
+  WORD *pSignatureAndHashAlgorithms;
+} SecPkgContext_SupportedSignatures, *PSecPkgContext_SupportedSignatures;
+#endif /*(_WIN32_WINNT >= 0x0601)*/
 #endif
diff --git a/mingw-w64-headers/include/sspi.h b/mingw-w64-headers/include/sspi.h
index cce8602..125f385 100644
--- a/mingw-w64-headers/include/sspi.h
+++ b/mingw-w64-headers/include/sspi.h
@@ -1044,6 +1044,17 @@
     PSecBufferDesc pOutput
   );
 #endif /*(_WIN32_WINNT >= 0x0600)*/
+#if (_WIN32_WINNT >= 0x0601)
+typedef struct _CREDUIWIN_MARSHALED_CONTEXT {
+  GUID   StructureType;
+  USHORT cbHeaderLength;
+  LUID   LogonId;
+  GUID   MarshaledDataType;
+  ULONG  MarshaledDataOffset;
+  USHORT MarshaledDataLength;
+} CREDUIWIN_MARSHALED_CONTEXT, *PCREDUIWIN_MARSHALED_CONTEXT;
+
+#endif /*(_WIN32_WINNT >= 0x0601)*/
 
 #ifdef __cplusplus
 }
diff --git a/mingw-w64-headers/include/wincrypt.h b/mingw-w64-headers/include/wincrypt.h
index 8bfb9e4..1f85a4b 100644
--- a/mingw-w64-headers/include/wincrypt.h
+++ b/mingw-w64-headers/include/wincrypt.h
@@ -203,6 +203,11 @@
 #define CALG_SHA_384 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_384)
 #define CALG_SHA_512 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_512)
 
+#if (_WIN32_WINNT >= 0x0600)
+#define CALG_ECDH 0x0000aa05
+#define CALG_ECDSA 0x00002203
+#endif /*(_WIN32_WINNT >= 0x0600)*/
+
 #ifndef __HCRYPTKEY__
 #define __HCRYPTKEY__
 /* In ncrypt.h too */
@@ -4047,6 +4052,9 @@
     DWORD dwUrlRetrievalTimeout;
     WINBOOL fCheckRevocationFreshnessTime;
     DWORD dwRevocationFreshnessTime;
+#if (_WIN32_WINNT >= 0x0600)
+    LPFILETIME       pftCacheResync;
+#endif /*(_WIN32_WINNT >= 0x0600)*/
 #endif
   } CERT_CHAIN_PARA,*PCERT_CHAIN_PARA;
 
@@ -4148,6 +4156,9 @@
 #define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5)
 #define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6)
 #define CERT_CHAIN_POLICY_MICROSOFT_ROOT ((LPCSTR) 7)
+#if (_WIN32_WINNT >= 0x0600)
+#define CERT_CHAIN_POLICY_EV ((LPCSTR) 8)
+#endif /*(_WIN32_WINNT >= 0x0600)*/
 
   typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA {
     DWORD cbSize;
@@ -4238,7 +4249,8 @@
 #define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME L"SrvOcspRespMinAfterNextUpdateSeconds"
 #define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT (1 * 60)
 
-typedef LPVOID HCERT_SERVER_OCSP_RESPONSE;
+typedef VOID* HCERT_SERVER_OCSP_RESPONSE;
+typedef ULONG_PTR HCRYPTPROV_LEGACY;
 
 typedef WINBOOL ( WINAPI *PFN_CERT_CREATE_CONTEXT_SORT_FUNC )(
   DWORD cbTotalEncoded,
@@ -4430,9 +4442,15 @@
 #ifndef __NCRYPT_KEY_HANDLE__
 #define __NCRYPT_KEY_HANDLE__
 /*in ncrypt.h too*/
-typedef LPVOID NCRYPT_KEY_HANDLE;
+typedef ULONG_PTR NCRYPT_KEY_HANDLE;
 #endif
 
+#ifndef __HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_DEFINED__
+#define __HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_DEFINED__
+/*Also in cryptxml.h*/
+typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE;
+#endif /*__HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_DEFINED__*/
+
 typedef struct _CMSG_CNG_CONTENT_DECRYPT_INFO {
   DWORD                      cbSize;
   CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
@@ -4705,7 +4723,7 @@
   POCSP_SIGNATURE_INFO pOptionalSignatureInfo;
 } OCSP_SIGNED_REQUEST_INFO, *POCSP_SIGNED_REQUEST_INFO;
 
-WINBOOL WINAPI CryptHashCertificate2(
+WINCRYPT32API WINBOOL WINAPI CryptHashCertificate2(
   LPCWSTR pwszCNGHashAlgid,
   DWORD dwFlags,
   void *pvReserved,
@@ -4715,7 +4733,7 @@
   DWORD *pcbComputedHash
 );
 
-WINBOOL WINAPI CryptImportPublicKeyInfoEx2(
+WINCRYPT32API WINBOOL WINAPI CryptImportPublicKeyInfoEx2(
   DWORD dwCertEncodingType,
   PCERT_PUBLIC_KEY_INFO pInfo,
   DWORD dwFlags,
@@ -4723,7 +4741,7 @@
   BCRYPT_KEY_HANDLE *phKey
 );
 
-WINBOOL WINAPI CryptUpdateProtectedState(
+WINCRYPT32API WINBOOL WINAPI CryptUpdateProtectedState(
   PSID pOldSid,
   LPCWSTR pwszOldPassword,
   DWORD dwFlags,
@@ -4733,6 +4751,181 @@
 
 #endif /*(_WIN32_WINNT >= 0x0600)*/
 
+#if (_WIN32_WINNT >= 0x0601)
+#define CERT_BUNDLE_CERTIFICATE 0
+#define CERT_BUNDLE_CRL 1
+
+typedef struct _CERT_OR_CRL_BLOB {
+  DWORD                    dwChoice;
+  DWORD                    cbEncoded;
+  BYTE                     *pbEncoded;
+} CERT_OR_CRL_BLOB, *PCERT_OR_CRL_BLOB;
+
+typedef struct _CERT_OR_CRL_BUNDLE {
+  DWORD             cItem;
+  PCERT_OR_CRL_BLOB rgItem;
+} CERT_OR_CRL_BUNDLE, *PCERT_OR_CRL_BUNDLE;
+
+typedef struct _CERT_SELECT_CHAIN_PARA {
+  HCERTCHAINENGINE hChainEngine;
+  PFILETIME        pTime;
+  HCERTSTORE       hAdditionalStore;
+  PCERT_CHAIN_PARA pChainPara;
+  DWORD            dwFlags;
+} CERT_SELECT_CHAIN_PARA, *PCERT_SELECT_CHAIN_PARA;
+typedef const CERT_SELECT_CHAIN_PARA *PCCERT_SELECT_CHAIN_PARA;
+
+#define CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY 0x00000004
+#define CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY 0x80000000
+
+typedef struct _CERT_SELECT_CRITERIA {
+  DWORD dwType;
+  DWORD cPara;
+  void  **ppPara;
+} CERT_SELECT_CRITERIA, *PCERT_SELECT_CRITERIA;
+typedef const CERT_SELECT_CRITERIA *PCCERT_SELECT_CRITERIA;
+
+#define CERT_SELECT_BY_ENHKEY_USAGE 1
+#define CERT_SELECT_BY_KEY_USAGE 2
+#define CERT_SELECT_BY_POLICY_OID 3
+#define CERT_SELECT_BY_PROV_NAME 4
+#define CERT_SELECT_BY_EXTENSION 5
+#define CERT_SELECT_BY_SUBJECT_HOST_NAME 6
+#define CERT_SELECT_BY_ISSUER_ATTR 7
+#define CERT_SELECT_BY_SUBJECT_ATTR 8
+#define CERT_SELECT_BY_ISSUER_NAME 9
+#define CERT_SELECT_BY_PUBLIC_KEY 10
+#define CERT_SELECT_BY_TLS_SIGNATURES 11
+
+typedef struct _CRYPT_TIMESTAMP_ACCURACY {
+  DWORD dwSeconds;
+  DWORD dwMillis;
+  DWORD dwMicros;
+} CRYPT_TIMESTAMP_ACCURACY, *PCRYPT_TIMESTAMP_ACCURACY;
+
+typedef struct _CRYPT_TIMESTAMP_REQUEST {
+  DWORD                      dwVersion;
+  CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
+  CRYPT_DER_BLOB             HashedMessage;
+  LPSTR                      pszTSAPolicyId;
+  CRYPT_INTEGER_BLOB         Nonce;
+  WINBOOL                    fCertReq;
+  DWORD                      cExtension;
+  PCERT_EXTENSION            rgExtension;
+} CRYPT_TIMESTAMP_REQUEST, *PCRYPT_TIMESTAMP_REQUEST;
+
+typedef struct _CRYPT_TIMESTAMP_INFO {
+  DWORD                      dwVersion;
+  LPSTR                      pszTSAPolicyId;
+  CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
+  CRYPT_DER_BLOB             HashedMessage;
+  CRYPT_INTEGER_BLOB         SerialNumber;
+  FILETIME                   ftTime;
+  PCRYPT_TIMESTAMP_ACCURACY  pvAccuracy;
+  WINBOOL                    fOrdering;
+  CRYPT_DER_BLOB             Nonce;
+  CRYPT_DER_BLOB             Tsa;
+  DWORD                      cExtension;
+  PCERT_EXTENSION            rgExtension;
+} CRYPT_TIMESTAMP_INFO, *PCRYPT_TIMESTAMP_INFO;
+
+typedef struct _CRYPT_TIMESTAMP_PARA {
+  LPCSTR             pszTSAPolicyId;
+  WINBOOL            fRequestCerts;
+  CRYPT_INTEGER_BLOB Nonce;
+  DWORD              cExtension;
+  PCERT_EXTENSION    rgExtension;
+} CRYPT_TIMESTAMP_PARA, *PCRYPT_TIMESTAMP_PARA;
+
+#define TIMESTAMP_VERSION 1
+
+typedef struct _CRYPT_TIMESTAMP_CONTEXT {
+  DWORD                 cbEncoded;
+  BYTE                  *pbEncoded;
+  PCRYPT_TIMESTAMP_INFO pTimeStamp;
+} CRYPT_TIMESTAMP_CONTEXT, *PCRYPT_TIMESTAMP_CONTEXT;
+
+typedef struct _CRYPT_TIMESTAMP_RESPONSE {
+  DWORD          dwStatus;
+  DWORD          cFreeText;
+  LPWSTR         rgFreeText;
+  CRYPT_BIT_BLOB FailureInfo;
+  CRYPT_DER_BLOB ContentInfo;
+} CRYPT_TIMESTAMP_RESPONSE, *PCRYPT_TIMESTAMP_RESPONSE;
+
+#define TIMESTAMP_STATUS_GRANTED 0
+#define TIMESTAMP_STATUS_GRANTED_WITH_MODS 1
+#define TIMESTAMP_STATUS_REJECTED 2
+#define TIMESTAMP_STATUS_WAITING 3
+#define TIMESTAMP_STATUS_REVOCATION_WARNING 4
+#define TIMESTAMP_STATUS_REVOKED 5
+
+#define TIMESTAMP_FAILURE_BAD_ALG 0
+#define TIMESTAMP_FAILURE_BAD_REQUEST 2
+#define TIMESTAMP_FAILURE_BAD_FORMAT 5
+#define TIMESTAMP_FAILURE_TIME_NOT_AVAILABLE 14
+#define TIMESTAMP_FAILURE_POLICY_NOT_SUPPORTED 15
+#define TIMESTAMP_FAILURE_EXTENSION_NOT_SUPPORTED 16
+#define TIMESTAMP_FAILURE_INFO_NOT_AVAILABLE 17
+#define TIMESTAMP_FAILURE_SYSTEM_FAILURE 25
+
+WINCRYPT32API VOID WINAPI CertFreeCertificateChainList(
+  PCCERT_CHAIN_CONTEXT *prgpSelection
+);
+
+WINCRYPT32API WINBOOL WINAPI CertSelectCertificateChains(
+  LPCGUID pSelectionContext,
+  DWORD dwFlags,
+  PCCERT_SELECT_CHAIN_PARA pChainParameters,
+  cCriteria DWORD,
+  PCCERT_SELECT_CRITERIA rgpCriteria,
+  HCERTSTORE hStore,
+  PDWORD pcSelection,
+  PCCERT_CHAIN_CONTEXT **pprgpSelection
+);
+
+WINCRYPT32API WINBOOL WINAPI CryptExportPublicKeyInfoFromBCryptKeyHandle(
+  BCRYPT_KEY_HANDLE hBCryptKey,
+  DWORD dwCertEncodingType,
+  LPSTR pszPublicKeyObjId,
+  DWORD dwFlags,
+  void pvAuxInfo,
+  PCERT_PUBLIC_KEY_INFO pInfo,
+  DWORD pcbInfo
+);
+
+#define CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG 0x40000000
+#define CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG 0x80000000
+
+WINCRYPT32API WINBOOL WINAPI CryptRetrieveTimeStamp(
+  LPCWSTR wszUrl,
+  DWORD dwRetrievalFlags,
+  DWORD dwTimeout,
+  LPCSTR pszHashId,
+  const CRYPT_TIMESTAMP_PARA *pPara,
+  const BYTE *pbData,
+  DWORD cbData,
+  PCRYPT_TIMESTAMP_CONTEXT *ppTsContext,
+  PCCERT_CONTEXT *ppTsSigner,
+  HCERTSTORE phStore
+);
+
+#define TIMESTAMP_DONT_HASH_DATA 0x00000001
+#define TIMESTAMP_VERIFY_CONTEXT_SIGNATURE 0x00000020
+#define TIMESTAMP_NO_AUTH_RETRIEVAL 0x00020000
+
+WINCRYPT32API WINBOOL WINAPI CryptVerifyTimeStampSignature(
+  const BYTE pbTSContentInfo,
+  DWORD cbTSContentInfo,
+  const DWORD pbData,
+  DWORD cbData,
+  HCERTSTORE hAdditionalStore,
+  PCRYPT_TIMESTAMP_CONTEXT ppTsContext,
+  PCCERT_CONTEXT *ppTsSigner,
+  HCERTSTORE *phStore
+);
+#endif /*(_WIN32_WINNT >= 0x0601)*/
+
 #ifdef __cplusplus
 }
 #endif