diff --git a/reactos/include/psdk/sspi.h b/reactos/include/psdk/sspi.h index 8579c4fd053..2c31445be81 100644 --- a/reactos/include/psdk/sspi.h +++ b/reactos/include/psdk/sspi.h @@ -126,11 +126,10 @@ typedef struct _SecPkgInfoW #define SECPKG_FLAG_APPCONTAINER_PASSTHROUGH 0x00400000 #define SECPKG_FLAG_APPCONTAINER_CHECKS 0x00800000 -typedef struct _SecBuffer -{ - ULONG cbBuffer; - ULONG BufferType; - void *pvBuffer; +typedef struct _SecBuffer { + ULONG cbBuffer; + ULONG BufferType; + _Field_size_bytes_(cbBuffer) void *pvBuffer; } SecBuffer, *PSecBuffer; /* values for BufferType */ @@ -155,11 +154,10 @@ typedef struct _SecBuffer #define SECBUFFER_READONLY_WITH_CHECKSUM 0x10000000 #define SECBUFFER_RESERVED 0x60000000 -typedef struct _SecBufferDesc -{ - ULONG ulVersion; - ULONG cBuffers; - PSecBuffer pBuffers; +typedef struct _SecBufferDesc { + ULONG ulVersion; + ULONG cBuffers; + _Field_size_(cBuffers) PSecBuffer pBuffers; } SecBufferDesc, *PSecBufferDesc; /* values for ulVersion */ @@ -168,10 +166,18 @@ typedef struct _SecBufferDesc typedef void (SEC_ENTRY *SEC_GET_KEY_FN)(void *Arg, void *Principal, ULONG KeyVer, void **Key, SECURITY_STATUS *Status); -SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesA(PULONG pcPackages, - PSecPkgInfoA *ppPackageInfo); -SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesW(PULONG pcPackages, - PSecPkgInfoW *ppPackageInfo); +SECURITY_STATUS +SEC_ENTRY +EnumerateSecurityPackagesA( + _Out_ PULONG pcPackages, + _Outptr_ PSecPkgInfoA *ppPackageInfo); + +SECURITY_STATUS +SEC_ENTRY +EnumerateSecurityPackagesW( + _Out_ PULONG pcPackages, + _Outptr_ PSecPkgInfoW *ppPackageInfo); + #define EnumerateSecurityPackages WINELIB_NAME_AW(EnumerateSecurityPackages) typedef SECURITY_STATUS (SEC_ENTRY *ENUMERATE_SECURITY_PACKAGES_FN_A)(PULONG, @@ -180,10 +186,20 @@ typedef SECURITY_STATUS (SEC_ENTRY *ENUMERATE_SECURITY_PACKAGES_FN_W)(PULONG, PSecPkgInfoW *); #define ENUMERATE_SECURITY_PACKAGES_FN WINELIB_NAME_AW(ENUMERATE_SECURITY_PACKAGES_FN_) -SECURITY_STATUS SEC_ENTRY QueryCredentialsAttributesA( - PCredHandle phCredential, ULONG ulAttribute, void *pBuffer); -SECURITY_STATUS SEC_ENTRY QueryCredentialsAttributesW( - PCredHandle phCredential, ULONG ulAttribute, void *pBuffer); +SECURITY_STATUS +SEC_ENTRY +QueryCredentialsAttributesA( + _In_ PCredHandle phCredential, + _In_ ULONG ulAttribute, + _Inout_ void *pBuffer); + +SECURITY_STATUS +SEC_ENTRY +QueryCredentialsAttributesW( + _In_ PCredHandle phCredential, + _In_ ULONG ulAttribute, + _Inout_ void *pBuffer); + #define QueryCredentialsAttributes WINELIB_NAME_AW(QueryCredentialsAttributes) typedef SECURITY_STATUS (SEC_ENTRY *QUERY_CREDENTIALS_ATTRIBUTES_FN_A) @@ -208,14 +224,32 @@ typedef struct _SecPkgCredentials_NamesW #define SecPkgCredentials_Names WINELIB_NAME_AW(SecPkgCredentials_Names) -SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleA( - SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialsUse, - PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn, - PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry); -SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleW( - SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialsUse, - PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn, - PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry); +SECURITY_STATUS +SEC_ENTRY +AcquireCredentialsHandleA( + _In_opt_ SEC_CHAR *pszPrincipal, + _In_ SEC_CHAR *pszPackage, + _In_ ULONG fCredentialsUse, + _In_opt_ PLUID pvLogonID, + _In_opt_ PVOID pAuthData, + _In_opt_ SEC_GET_KEY_FN pGetKeyFn, + _In_opt_ PVOID pvGetKeyArgument, + _Out_ PCredHandle phCredential, + _Out_opt_ PTimeStamp ptsExpiry); + +SECURITY_STATUS +SEC_ENTRY +AcquireCredentialsHandleW( + _In_opt_ SEC_WCHAR *pszPrincipal, + _In_ SEC_WCHAR *pszPackage, + _In_ ULONG fCredentialsUse, + _In_opt_ PLUID pvLogonID, + _In_opt_ PVOID pAuthData, + _In_opt_ SEC_GET_KEY_FN pGetKeyFn, + _In_opt_ PVOID pvGetKeyArgument, + _Out_ PCredHandle phCredential, + _Out_opt_ PTimeStamp ptsExpiry); + #define AcquireCredentialsHandle WINELIB_NAME_AW(AcquireCredentialsHandle) /* flags for fCredentialsUse */ @@ -233,29 +267,51 @@ typedef SECURITY_STATUS (SEC_ENTRY *ACQUIRE_CREDENTIALS_HANDLE_FN_W)( PCredHandle, PTimeStamp); #define ACQUIRE_CREDENTIALS_HANDLE_FN WINELIB_NAME_AW(ACQUIRE_CREDENTIALS_HANDLE_FN_) -SECURITY_STATUS SEC_ENTRY FreeContextBuffer(PVOID pv); +SECURITY_STATUS SEC_ENTRY FreeContextBuffer(_Inout_ PVOID pv); -typedef SECURITY_STATUS (SEC_ENTRY *FREE_CONTEXT_BUFFER_FN)(PVOID); +typedef SECURITY_STATUS (SEC_ENTRY *FREE_CONTEXT_BUFFER_FN)(_Inout_ PVOID); -SECURITY_STATUS SEC_ENTRY FreeCredentialsHandle(PCredHandle - phCredential); +SECURITY_STATUS +SEC_ENTRY +FreeCredentialsHandle( + _In_ PCredHandle phCredential); #define FreeCredentialHandle FreeCredentialsHandle typedef SECURITY_STATUS (SEC_ENTRY *FREE_CREDENTIALS_HANDLE_FN)(PCredHandle); -SECURITY_STATUS SEC_ENTRY InitializeSecurityContextA( - PCredHandle phCredential, PCtxtHandle phContext, - SEC_CHAR *pszTargetName, ULONG fContextReq, - ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput, - ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput, - ULONG *pfContextAttr, PTimeStamp ptsExpiry); -SECURITY_STATUS SEC_ENTRY InitializeSecurityContextW( - PCredHandle phCredential, PCtxtHandle phContext, - SEC_WCHAR *pszTargetName, ULONG fContextReq, - ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput, - ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput, - ULONG *pfContextAttr, PTimeStamp ptsExpiry); +SECURITY_STATUS +SEC_ENTRY +InitializeSecurityContextA( + _In_opt_ PCredHandle phCredential, + _In_opt_ PCtxtHandle phContext, + _In_opt_ SEC_CHAR *pszTargetName, + _In_ ULONG fContextReq, + _In_ ULONG Reserved1, + _In_ ULONG TargetDataRep, + _In_opt_ PSecBufferDesc pInput, + _In_ ULONG Reserved2, + _Inout_opt_ PCtxtHandle phNewContext, + _Inout_opt_ PSecBufferDesc pOutput, + _Out_ ULONG *pfContextAttr, + _Out_opt_ PTimeStamp ptsExpiry); + +SECURITY_STATUS +SEC_ENTRY +InitializeSecurityContextW( + _In_opt_ PCredHandle phCredential, + _In_opt_ PCtxtHandle phContext, + _In_opt_ SEC_WCHAR *pszTargetName, + _In_ ULONG fContextReq, + _In_ ULONG Reserved1, + _In_ ULONG TargetDataRep, + _In_opt_ PSecBufferDesc pInput, + _In_ ULONG Reserved2, + _Inout_opt_ PCtxtHandle phNewContext, + _Inout_opt_ PSecBufferDesc pOutput, + _Out_ ULONG *pfContextAttr, + _Out_opt_ PTimeStamp ptsExpiry); + #define InitializeSecurityContext WINELIB_NAME_AW(InitializeSecurityContext) typedef SECURITY_STATUS (SEC_ENTRY *INITIALIZE_SECURITY_CONTEXT_FN_A) @@ -315,11 +371,18 @@ typedef SECURITY_STATUS (SEC_ENTRY *INITIALIZE_SECURITY_CONTEXT_FN_W) #define ISC_RET_RESERVED1 0x00100000 #define ISC_RET_FRAGMENT_ONLY 0x00200000 -SECURITY_STATUS SEC_ENTRY AcceptSecurityContext( - PCredHandle phCredential, PCtxtHandle phContext, PSecBufferDesc pInput, - ULONG fContextReq, ULONG TargetDataRep, - PCtxtHandle phNewContext, PSecBufferDesc pOutput, - ULONG *pfContextAttr, PTimeStamp ptsExpiry); +SECURITY_STATUS +SEC_ENTRY +AcceptSecurityContext( + _In_opt_ PCredHandle phCredential, + _In_opt_ PCtxtHandle phContext, + _In_opt_ PSecBufferDesc pInput, + _In_ ULONG fContextReq, + _In_ ULONG TargetDataRep, + _Inout_opt_ PCtxtHandle phNewContext, + _Inout_opt_ PSecBufferDesc pOutput, + _Out_ ULONG *pfContextAttr, + _Out_opt_ PTimeStamp ptsExpiry); typedef SECURITY_STATUS (SEC_ENTRY *ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle, PCtxtHandle, PSecBufferDesc, ULONG, ULONG, PCtxtHandle, @@ -376,27 +439,42 @@ typedef SECURITY_STATUS (SEC_ENTRY *ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle, #define SECURITY_NATIVE_DREP 0x00000010 #define SECURITY_NETWORK_DREP 0x00000000 - -SECURITY_STATUS SEC_ENTRY CompleteAuthToken(PCtxtHandle phContext, - PSecBufferDesc pToken); +SECURITY_STATUS +SEC_ENTRY +CompleteAuthToken( + _In_ PCtxtHandle phContext, + _In_ PSecBufferDesc pToken); typedef SECURITY_STATUS (SEC_ENTRY *COMPLETE_AUTH_TOKEN_FN)(PCtxtHandle, PSecBufferDesc); -SECURITY_STATUS SEC_ENTRY DeleteSecurityContext(PCtxtHandle phContext); +SECURITY_STATUS SEC_ENTRY DeleteSecurityContext(_In_ PCtxtHandle phContext); typedef SECURITY_STATUS (SEC_ENTRY *DELETE_SECURITY_CONTEXT_FN)(PCtxtHandle); -SECURITY_STATUS SEC_ENTRY ApplyControlToken(PCtxtHandle phContext, - PSecBufferDesc pInput); +SECURITY_STATUS +SEC_ENTRY +ApplyControlToken( + _In_ PCtxtHandle phContext, + _In_ PSecBufferDesc pInput); typedef SECURITY_STATUS (SEC_ENTRY *APPLY_CONTROL_TOKEN_FN)(PCtxtHandle, PSecBufferDesc); -SECURITY_STATUS SEC_ENTRY QueryContextAttributesA(PCtxtHandle phContext, - ULONG ulAttribute, void *pBuffer); -SECURITY_STATUS SEC_ENTRY QueryContextAttributesW(PCtxtHandle phContext, - ULONG ulAttribute, void *pBuffer); +SECURITY_STATUS +SEC_ENTRY +QueryContextAttributesA( + _In_ PCtxtHandle phContext, + _In_ ULONG ulAttribute, + _Out_ void *pBuffer); + +SECURITY_STATUS +SEC_ENTRY +QueryContextAttributesW( + _In_ PCtxtHandle phContext, + _In_ ULONG ulAttribute, + _Out_ void *pBuffer); + #define QueryContextAttributes WINELIB_NAME_AW(QueryContextAttributes) typedef SECURITY_STATUS (SEC_ENTRY *QUERY_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle, @@ -528,10 +606,9 @@ typedef struct _SecPkgContext_PasswordExpiry TimeStamp tsPasswordExpires; } SecPkgContext_PasswordExpiry, *PSecPkgContext_PasswordExpiry; -typedef struct _SecPkgContext_SessionKey -{ - ULONG SessionKeyLength; - unsigned char *SessionKey; +typedef struct _SecPkgContext_SessionKey { + ULONG SessionKeyLength; + _Field_size_bytes_(SessionKeyLength) unsigned char *SessionKey; } SecPkgContext_SessionKey, *PSecPkgContext_SessionKey; typedef struct _SecPkgContext_PackageInfoA @@ -632,31 +709,53 @@ typedef struct _SecPkgContext_Target char *Target; } SecPkgContext_Target, *PSecPkgContext_Target; -SECURITY_STATUS SEC_ENTRY ImpersonateSecurityContext(PCtxtHandle phContext); +_Check_return_ +SECURITY_STATUS +SEC_ENTRY +ImpersonateSecurityContext( + _In_ PCtxtHandle phContext); typedef SECURITY_STATUS (SEC_ENTRY *IMPERSONATE_SECURITY_CONTEXT_FN) (PCtxtHandle); -SECURITY_STATUS SEC_ENTRY RevertSecurityContext(PCtxtHandle phContext); +SECURITY_STATUS SEC_ENTRY RevertSecurityContext(_In_ PCtxtHandle phContext); typedef SECURITY_STATUS (SEC_ENTRY *REVERT_SECURITY_CONTEXT_FN)(PCtxtHandle); -SECURITY_STATUS SEC_ENTRY MakeSignature(PCtxtHandle phContext, - ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo); +SECURITY_STATUS +SEC_ENTRY +MakeSignature( + _In_ PCtxtHandle phContext, + _In_ ULONG fQOP, + _In_ PSecBufferDesc pMessage, + _In_ ULONG MessageSeqNo); typedef SECURITY_STATUS (SEC_ENTRY *MAKE_SIGNATURE_FN)(PCtxtHandle, ULONG, PSecBufferDesc, ULONG); -SECURITY_STATUS SEC_ENTRY VerifySignature(PCtxtHandle phContext, - PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP); +SECURITY_STATUS +SEC_ENTRY +VerifySignature( + _In_ PCtxtHandle phContext, + _In_ PSecBufferDesc pMessage, + _In_ ULONG MessageSeqNo, + _Out_ PULONG pfQOP); typedef SECURITY_STATUS (SEC_ENTRY *VERIFY_SIGNATURE_FN)(PCtxtHandle, PSecBufferDesc, ULONG, PULONG); -SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoA( - SEC_CHAR *pszPackageName, PSecPkgInfoA *ppPackageInfo); -SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoW( - SEC_WCHAR *pszPackageName, PSecPkgInfoW *ppPackageInfo); +SECURITY_STATUS +SEC_ENTRY +QuerySecurityPackageInfoA( + _In_ SEC_CHAR *pszPackageName, + _Outptr_ PSecPkgInfoA *ppPackageInfo); + +SECURITY_STATUS +SEC_ENTRY +QuerySecurityPackageInfoW( + _In_ SEC_WCHAR *pszPackageName, + _Outptr_ PSecPkgInfoW *ppPackageInfo); + #define QuerySecurityPackageInfo WINELIB_NAME_AW(QuerySecurityPackageInfo) typedef SECURITY_STATUS (SEC_ENTRY *QUERY_SECURITY_PACKAGE_INFO_FN_A) @@ -665,8 +764,13 @@ typedef SECURITY_STATUS (SEC_ENTRY *QUERY_SECURITY_PACKAGE_INFO_FN_W) (SEC_WCHAR *, PSecPkgInfoW *); #define QUERY_SECURITY_PACKAGE_INFO_FN WINELIB_NAME_AW(QUERY_SECURITY_PACKAGE_INFO_FN_) -SECURITY_STATUS SEC_ENTRY ExportSecurityContext(PCtxtHandle phContext, - ULONG fFlags, PSecBuffer pPackedContext, void **pToken); +SECURITY_STATUS +SEC_ENTRY +ExportSecurityContext( + _In_ PCtxtHandle phContext, + _In_ ULONG fFlags, + _Out_ PSecBuffer pPackedContext, + _Out_ void **pToken); typedef SECURITY_STATUS (SEC_ENTRY *EXPORT_SECURITY_CONTEXT_FN)(PCtxtHandle, ULONG, PSecBuffer, void **); @@ -675,10 +779,22 @@ typedef SECURITY_STATUS (SEC_ENTRY *EXPORT_SECURITY_CONTEXT_FN)(PCtxtHandle, #define SECPKG_CONTEXT_EXPORT_RESET_NEW 0x00000001 #define SECPKG_CONTEXT_EXPORT_DELETE_OLD 0x00000002 -SECURITY_STATUS SEC_ENTRY ImportSecurityContextA(SEC_CHAR *pszPackage, - PSecBuffer pPackedContext, void *Token, PCtxtHandle phContext); -SECURITY_STATUS SEC_ENTRY ImportSecurityContextW(SEC_WCHAR *pszPackage, - PSecBuffer pPackedContext, void *Token, PCtxtHandle phContext); +SECURITY_STATUS +SEC_ENTRY +ImportSecurityContextA( + _In_ SEC_CHAR *pszPackage, + _In_ PSecBuffer pPackedContext, + _In_ void *Token, + _Out_ PCtxtHandle phContext); + +SECURITY_STATUS +SEC_ENTRY +ImportSecurityContextW( + _In_ SEC_WCHAR *pszPackage, + _In_ PSecBuffer pPackedContext, + _In_ void *Token, + _Out_ PCtxtHandle phContext); + #define ImportSecurityContext WINELIB_NAME_AW(ImportSecurityContext) typedef SECURITY_STATUS (SEC_ENTRY *IMPORT_SECURITY_CONTEXT_FN_A)(SEC_CHAR *, @@ -687,14 +803,30 @@ typedef SECURITY_STATUS (SEC_ENTRY *IMPORT_SECURITY_CONTEXT_FN_W)(SEC_WCHAR *, PSecBuffer, void *, PCtxtHandle); #define IMPORT_SECURITY_CONTEXT_FN WINELIB_NAME_AW(IMPORT_SECURITY_CONTEXT_FN_) -SECURITY_STATUS SEC_ENTRY AddCredentialsA(PCredHandle hCredentials, - SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialUse, - void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument, - PTimeStamp ptsExpiry); -SECURITY_STATUS SEC_ENTRY AddCredentialsW(PCredHandle hCredentials, - SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialUse, - void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument, - PTimeStamp ptsExpiry); +SECURITY_STATUS +SEC_ENTRY +AddCredentialsA( + _In_ PCredHandle hCredentials, + _In_opt_ SEC_CHAR *pszPrincipal, + _In_ SEC_CHAR *pszPackage, + _In_ ULONG fCredentialUse, + _In_opt_ void *pAuthData, + _In_opt_ SEC_GET_KEY_FN pGetKeyFn, + _In_opt_ void *pvGetKeyArgument, + _Out_opt_ PTimeStamp ptsExpiry); + +SECURITY_STATUS +SEC_ENTRY +AddCredentialsW( + _In_ PCredHandle hCredentials, + _In_opt_ SEC_WCHAR *pszPrincipal, + _In_ SEC_WCHAR *pszPackage, + _In_ ULONG fCredentialUse, + _In_opt_ void *pAuthData, + _In_opt_ SEC_GET_KEY_FN pGetKeyFn, + _In_opt_ void *pvGetKeyArgument, + _Out_opt_ PTimeStamp ptsExpiry); + #define AddCredentials WINELIB_NAME_AW(AddCredentials) typedef SECURITY_STATUS (SEC_ENTRY *ADD_CREDENTIALS_FN_A)(PCredHandle, @@ -704,16 +836,30 @@ typedef SECURITY_STATUS (SEC_ENTRY *ADD_CREDENTIALS_FN_W)(PCredHandle, SEC_WCHAR *, SEC_WCHAR *, ULONG, void *, SEC_GET_KEY_FN, void *, PTimeStamp); -SECURITY_STATUS SEC_ENTRY QuerySecurityContextToken(PCtxtHandle phContext, - HANDLE *phToken); +SECURITY_STATUS +SEC_ENTRY +QuerySecurityContextToken( + _In_ PCtxtHandle phContext, + _Out_ HANDLE *phToken); typedef SECURITY_STATUS (SEC_ENTRY *QUERY_SECURITY_CONTEXT_TOKEN_FN) (PCtxtHandle, HANDLE *); -SECURITY_STATUS SEC_ENTRY EncryptMessage(PCtxtHandle phContext, ULONG fQOP, - PSecBufferDesc pMessage, ULONG MessageSeqNo); -SECURITY_STATUS SEC_ENTRY DecryptMessage(PCtxtHandle phContext, - PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP); +SECURITY_STATUS +SEC_ENTRY +EncryptMessage( + _In_ PCtxtHandle phContext, + _In_ ULONG fQOP, + _In_ PSecBufferDesc pMessage, + _In_ ULONG MessageSeqNo); + +SECURITY_STATUS +SEC_ENTRY +DecryptMessage( + _In_ PCtxtHandle phContext, + _In_ PSecBufferDesc pMessage, + _In_ ULONG MessageSeqNo, + _Out_opt_ PULONG pfQOP); /* values for EncryptMessage fQOP */ #define SECQOP_WRAP_NO_ENCRYPT 0x80000001 @@ -723,10 +869,22 @@ typedef SECURITY_STATUS (SEC_ENTRY *ENCRYPT_MESSAGE_FN)(PCtxtHandle, ULONG, typedef SECURITY_STATUS (SEC_ENTRY *DECRYPT_MESSAGE_FN)(PCtxtHandle, PSecBufferDesc, ULONG, PULONG); -SECURITY_STATUS SEC_ENTRY SetContextAttributesA(PCtxtHandle phContext, - ULONG ulAttribute, void *pBuffer, ULONG cbBuffer); -SECURITY_STATUS SEC_ENTRY SetContextAttributesW(PCtxtHandle phContext, - ULONG ulAttribute, void *pBuffer, ULONG cbBuffer); +SECURITY_STATUS +SEC_ENTRY +SetContextAttributesA( + _In_ PCtxtHandle phContext, + _In_ ULONG ulAttribute, + _In_reads_bytes_(cbBuffer) void *pBuffer, + _In_ ULONG cbBuffer); + +SECURITY_STATUS +SEC_ENTRY +SetContextAttributesW( + _In_ PCtxtHandle phContext, + _In_ ULONG ulAttribute, + _In_reads_bytes_(cbBuffer) void *pBuffer, + _In_ ULONG cbBuffer); + #define SetContextAttributes WINELIB_NAME_AW(SetContextAttributes) typedef SECURITY_STATUS (SEC_ENTRY *SET_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,