mirror of https://github.com/FreeRDP/FreeRDP
winpr: fix unit tests on Windows
This commit is contained in:
parent
929d292f35
commit
0c17eb1a23
|
@ -280,50 +280,6 @@ enum FILE_FS_DEVICE_FLAG
|
||||||
FILE_DEVICE_SECURE_OPEN = 0x00000100
|
FILE_DEVICE_SECURE_OPEN = 0x00000100
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FILE_INFORMATION_CLASS
|
|
||||||
{
|
|
||||||
FileDirectoryInformation = 1,
|
|
||||||
FileFullDirectoryInformation,
|
|
||||||
FileBothDirectoryInformation,
|
|
||||||
FileBasicInformation,
|
|
||||||
FileStandardInformation,
|
|
||||||
FileInternalInformation,
|
|
||||||
FileEaInformation,
|
|
||||||
FileAccessInformation,
|
|
||||||
FileNameInformation,
|
|
||||||
FileRenameInformation,
|
|
||||||
FileLinkInformation,
|
|
||||||
FileNamesInformation,
|
|
||||||
FileDispositionInformation,
|
|
||||||
FilePositionInformation,
|
|
||||||
FileFullEaInformation,
|
|
||||||
FileModeInformation,
|
|
||||||
FileAlignmentInformation,
|
|
||||||
FileAllInformation,
|
|
||||||
FileAllocationInformation,
|
|
||||||
FileEndOfFileInformation,
|
|
||||||
FileAlternateNameInformation,
|
|
||||||
FileStreamInformation,
|
|
||||||
FilePipeInformation,
|
|
||||||
FilePipeLocalInformation,
|
|
||||||
FilePipeRemoteInformation,
|
|
||||||
FileMailslotQueryInformation,
|
|
||||||
FileMailslotSetInformation,
|
|
||||||
FileCompressionInformation,
|
|
||||||
FileObjectIdInformation,
|
|
||||||
FileUnknownInformation1,
|
|
||||||
FileMoveClusterInformation,
|
|
||||||
FileQuotaInformation,
|
|
||||||
FileReparsePointInformation,
|
|
||||||
FileNetworkOpenInformation,
|
|
||||||
FileAttributeTagInformation,
|
|
||||||
FileTrackingInformation,
|
|
||||||
FileIdBothDirectoryInformation,
|
|
||||||
FileIdFullDirectoryInformation,
|
|
||||||
FileValidDataLengthInformation,
|
|
||||||
FileShortNameInformation
|
|
||||||
};
|
|
||||||
|
|
||||||
enum FILE_FS_INFORMATION_CLASS
|
enum FILE_FS_INFORMATION_CLASS
|
||||||
{
|
{
|
||||||
FileFsVolumeInformation = 1,
|
FileFsVolumeInformation = 1,
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <winpr/winpr.h>
|
#include <winpr/winpr.h>
|
||||||
#include <winpr/wtypes.h>
|
#include <winpr/wtypes.h>
|
||||||
|
|
||||||
|
#include <winpr/nt.h>
|
||||||
#include <winpr/sspi.h>
|
#include <winpr/sspi.h>
|
||||||
#include <winpr/error.h>
|
#include <winpr/error.h>
|
||||||
#include <winpr/credentials.h>
|
#include <winpr/credentials.h>
|
||||||
|
|
|
@ -87,6 +87,29 @@
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Defined in wincred.h, do not redefine */
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
|
||||||
|
#include <wincred.h>
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006DL)
|
||||||
|
#define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006AL)
|
||||||
|
#define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071L)
|
||||||
|
#define STATUS_PASSWORD_MUST_CHANGE ((NTSTATUS)0xC0000224L)
|
||||||
|
#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L)
|
||||||
|
#define STATUS_DOWNGRADE_DETECTED ((NTSTATUS)0xC0000388L)
|
||||||
|
#define STATUS_AUTHENTICATION_FIREWALL_FAILED ((NTSTATUS)0xC0000413L)
|
||||||
|
#define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072L)
|
||||||
|
#define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006EL)
|
||||||
|
#define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234L)
|
||||||
|
#define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193L)
|
||||||
|
#define STATUS_LOGON_TYPE_NOT_GRANTED ((NTSTATUS)0xC000015BL)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#define FACILITY_DEBUGGER 0x1
|
#define FACILITY_DEBUGGER 0x1
|
||||||
#define FACILITY_RPC_RUNTIME 0x2
|
#define FACILITY_RPC_RUNTIME 0x2
|
||||||
#define FACILITY_RPC_STUBS 0x3
|
#define FACILITY_RPC_STUBS 0x3
|
||||||
|
@ -309,7 +332,7 @@
|
||||||
#define STATUS_INVALID_VIEW_SIZE ((NTSTATUS)0xC000001F)
|
#define STATUS_INVALID_VIEW_SIZE ((NTSTATUS)0xC000001F)
|
||||||
#define STATUS_INVALID_FILE_FOR_SECTION ((NTSTATUS)0xC0000020)
|
#define STATUS_INVALID_FILE_FOR_SECTION ((NTSTATUS)0xC0000020)
|
||||||
#define STATUS_ALREADY_COMMITTED ((NTSTATUS)0xC0000021)
|
#define STATUS_ALREADY_COMMITTED ((NTSTATUS)0xC0000021)
|
||||||
#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022)
|
//#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022)
|
||||||
#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023)
|
#define STATUS_BUFFER_TOO_SMALL ((NTSTATUS)0xC0000023)
|
||||||
#define STATUS_OBJECT_TYPE_MISMATCH ((NTSTATUS)0xC0000024)
|
#define STATUS_OBJECT_TYPE_MISMATCH ((NTSTATUS)0xC0000024)
|
||||||
//#define STATUS_NONCONTINUABLE_EXCEPTION ((NTSTATUS)0xC0000025)
|
//#define STATUS_NONCONTINUABLE_EXCEPTION ((NTSTATUS)0xC0000025)
|
||||||
|
@ -380,15 +403,15 @@
|
||||||
#define STATUS_MEMBER_IN_GROUP ((NTSTATUS)0xC0000067)
|
#define STATUS_MEMBER_IN_GROUP ((NTSTATUS)0xC0000067)
|
||||||
#define STATUS_MEMBER_NOT_IN_GROUP ((NTSTATUS)0xC0000068)
|
#define STATUS_MEMBER_NOT_IN_GROUP ((NTSTATUS)0xC0000068)
|
||||||
#define STATUS_LAST_ADMIN ((NTSTATUS)0xC0000069)
|
#define STATUS_LAST_ADMIN ((NTSTATUS)0xC0000069)
|
||||||
#define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006A)
|
//#define STATUS_WRONG_PASSWORD ((NTSTATUS)0xC000006A)
|
||||||
#define STATUS_ILL_FORMED_PASSWORD ((NTSTATUS)0xC000006B)
|
#define STATUS_ILL_FORMED_PASSWORD ((NTSTATUS)0xC000006B)
|
||||||
#define STATUS_PASSWORD_RESTRICTION ((NTSTATUS)0xC000006C)
|
#define STATUS_PASSWORD_RESTRICTION ((NTSTATUS)0xC000006C)
|
||||||
#define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006D)
|
//#define STATUS_LOGON_FAILURE ((NTSTATUS)0xC000006D)
|
||||||
#define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006E)
|
//#define STATUS_ACCOUNT_RESTRICTION ((NTSTATUS)0xC000006E)
|
||||||
#define STATUS_INVALID_LOGON_HOURS ((NTSTATUS)0xC000006F)
|
#define STATUS_INVALID_LOGON_HOURS ((NTSTATUS)0xC000006F)
|
||||||
#define STATUS_INVALID_WORKSTATION ((NTSTATUS)0xC0000070)
|
#define STATUS_INVALID_WORKSTATION ((NTSTATUS)0xC0000070)
|
||||||
#define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071)
|
//#define STATUS_PASSWORD_EXPIRED ((NTSTATUS)0xC0000071)
|
||||||
#define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072)
|
//#define STATUS_ACCOUNT_DISABLED ((NTSTATUS)0xC0000072)
|
||||||
#define STATUS_NONE_MAPPED ((NTSTATUS)0xC0000073)
|
#define STATUS_NONE_MAPPED ((NTSTATUS)0xC0000073)
|
||||||
#define STATUS_TOO_MANY_LUIDS_REQUESTED ((NTSTATUS)0xC0000074)
|
#define STATUS_TOO_MANY_LUIDS_REQUESTED ((NTSTATUS)0xC0000074)
|
||||||
#define STATUS_LUIDS_EXHAUSTED ((NTSTATUS)0xC0000075)
|
#define STATUS_LUIDS_EXHAUSTED ((NTSTATUS)0xC0000075)
|
||||||
|
@ -621,7 +644,7 @@
|
||||||
#define STATUS_INTERNAL_DB_ERROR ((NTSTATUS)0xC0000158)
|
#define STATUS_INTERNAL_DB_ERROR ((NTSTATUS)0xC0000158)
|
||||||
#define STATUS_FULLSCREEN_MODE ((NTSTATUS)0xC0000159)
|
#define STATUS_FULLSCREEN_MODE ((NTSTATUS)0xC0000159)
|
||||||
#define STATUS_TOO_MANY_CONTEXT_IDS ((NTSTATUS)0xC000015A)
|
#define STATUS_TOO_MANY_CONTEXT_IDS ((NTSTATUS)0xC000015A)
|
||||||
#define STATUS_LOGON_TYPE_NOT_GRANTED ((NTSTATUS)0xC000015B)
|
//#define STATUS_LOGON_TYPE_NOT_GRANTED ((NTSTATUS)0xC000015B)
|
||||||
#define STATUS_NOT_REGISTRY_FILE ((NTSTATUS)0xC000015C)
|
#define STATUS_NOT_REGISTRY_FILE ((NTSTATUS)0xC000015C)
|
||||||
#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000015D)
|
#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED ((NTSTATUS)0xC000015D)
|
||||||
#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR ((NTSTATUS)0xC000015E)
|
#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR ((NTSTATUS)0xC000015E)
|
||||||
|
@ -674,7 +697,7 @@
|
||||||
#define STATUS_TRUST_FAILURE ((NTSTATUS)0xC0000190)
|
#define STATUS_TRUST_FAILURE ((NTSTATUS)0xC0000190)
|
||||||
#define STATUS_MUTANT_LIMIT_EXCEEDED ((NTSTATUS)0xC0000191)
|
#define STATUS_MUTANT_LIMIT_EXCEEDED ((NTSTATUS)0xC0000191)
|
||||||
#define STATUS_NETLOGON_NOT_STARTED ((NTSTATUS)0xC0000192)
|
#define STATUS_NETLOGON_NOT_STARTED ((NTSTATUS)0xC0000192)
|
||||||
#define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193)
|
//#define STATUS_ACCOUNT_EXPIRED ((NTSTATUS)0xC0000193)
|
||||||
#define STATUS_POSSIBLE_DEADLOCK ((NTSTATUS)0xC0000194)
|
#define STATUS_POSSIBLE_DEADLOCK ((NTSTATUS)0xC0000194)
|
||||||
#define STATUS_NETWORK_CREDENTIAL_CONFLICT ((NTSTATUS)0xC0000195)
|
#define STATUS_NETWORK_CREDENTIAL_CONFLICT ((NTSTATUS)0xC0000195)
|
||||||
#define STATUS_REMOTE_SESSION_LIMIT ((NTSTATUS)0xC0000196)
|
#define STATUS_REMOTE_SESSION_LIMIT ((NTSTATUS)0xC0000196)
|
||||||
|
@ -718,7 +741,7 @@
|
||||||
#define STATUS_IMAGE_CHECKSUM_MISMATCH ((NTSTATUS)0xC0000221)
|
#define STATUS_IMAGE_CHECKSUM_MISMATCH ((NTSTATUS)0xC0000221)
|
||||||
#define STATUS_LOST_WRITEBEHIND_DATA ((NTSTATUS)0xC0000222)
|
#define STATUS_LOST_WRITEBEHIND_DATA ((NTSTATUS)0xC0000222)
|
||||||
#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID ((NTSTATUS)0xC0000223)
|
#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID ((NTSTATUS)0xC0000223)
|
||||||
#define STATUS_PASSWORD_MUST_CHANGE ((NTSTATUS)0xC0000224)
|
//#define STATUS_PASSWORD_MUST_CHANGE ((NTSTATUS)0xC0000224)
|
||||||
#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225)
|
#define STATUS_NOT_FOUND ((NTSTATUS)0xC0000225)
|
||||||
#define STATUS_NOT_TINY_STREAM ((NTSTATUS)0xC0000226)
|
#define STATUS_NOT_TINY_STREAM ((NTSTATUS)0xC0000226)
|
||||||
#define STATUS_RECOVERY_FAILURE ((NTSTATUS)0xC0000227)
|
#define STATUS_RECOVERY_FAILURE ((NTSTATUS)0xC0000227)
|
||||||
|
@ -734,7 +757,7 @@
|
||||||
#define STATUS_MARSHALL_OVERFLOW ((NTSTATUS)0xC0000231)
|
#define STATUS_MARSHALL_OVERFLOW ((NTSTATUS)0xC0000231)
|
||||||
#define STATUS_INVALID_VARIANT ((NTSTATUS)0xC0000232)
|
#define STATUS_INVALID_VARIANT ((NTSTATUS)0xC0000232)
|
||||||
#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND ((NTSTATUS)0xC0000233)
|
#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND ((NTSTATUS)0xC0000233)
|
||||||
#define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234)
|
//#define STATUS_ACCOUNT_LOCKED_OUT ((NTSTATUS)0xC0000234)
|
||||||
#define STATUS_HANDLE_NOT_CLOSABLE ((NTSTATUS)0xC0000235)
|
#define STATUS_HANDLE_NOT_CLOSABLE ((NTSTATUS)0xC0000235)
|
||||||
#define STATUS_CONNECTION_REFUSED ((NTSTATUS)0xC0000236)
|
#define STATUS_CONNECTION_REFUSED ((NTSTATUS)0xC0000236)
|
||||||
#define STATUS_GRACEFUL_DISCONNECT ((NTSTATUS)0xC0000237)
|
#define STATUS_GRACEFUL_DISCONNECT ((NTSTATUS)0xC0000237)
|
||||||
|
@ -968,7 +991,7 @@
|
||||||
#define STATUS_SMARTCARD_NO_CERTIFICATE ((NTSTATUS)0xC0000385)
|
#define STATUS_SMARTCARD_NO_CERTIFICATE ((NTSTATUS)0xC0000385)
|
||||||
#define STATUS_SMARTCARD_NO_KEYSET ((NTSTATUS)0xC0000386)
|
#define STATUS_SMARTCARD_NO_KEYSET ((NTSTATUS)0xC0000386)
|
||||||
#define STATUS_SMARTCARD_IO_ERROR ((NTSTATUS)0xC0000387)
|
#define STATUS_SMARTCARD_IO_ERROR ((NTSTATUS)0xC0000387)
|
||||||
#define STATUS_DOWNGRADE_DETECTED ((NTSTATUS)0xC0000388)
|
//#define STATUS_DOWNGRADE_DETECTED ((NTSTATUS)0xC0000388)
|
||||||
#define STATUS_SMARTCARD_CERT_REVOKED ((NTSTATUS)0xC0000389)
|
#define STATUS_SMARTCARD_CERT_REVOKED ((NTSTATUS)0xC0000389)
|
||||||
#define STATUS_ISSUING_CA_UNTRUSTED ((NTSTATUS)0xC000038A)
|
#define STATUS_ISSUING_CA_UNTRUSTED ((NTSTATUS)0xC000038A)
|
||||||
#define STATUS_REVOCATION_OFFLINE_C ((NTSTATUS)0xC000038B)
|
#define STATUS_REVOCATION_OFFLINE_C ((NTSTATUS)0xC000038B)
|
||||||
|
@ -994,7 +1017,7 @@
|
||||||
#define STATUS_PARAMETER_QUOTA_EXCEEDED ((NTSTATUS)0xC0000410)
|
#define STATUS_PARAMETER_QUOTA_EXCEEDED ((NTSTATUS)0xC0000410)
|
||||||
#define STATUS_HIBERNATION_FAILURE ((NTSTATUS)0xC0000411)
|
#define STATUS_HIBERNATION_FAILURE ((NTSTATUS)0xC0000411)
|
||||||
#define STATUS_DELAY_LOAD_FAILED ((NTSTATUS)0xC0000412)
|
#define STATUS_DELAY_LOAD_FAILED ((NTSTATUS)0xC0000412)
|
||||||
#define STATUS_AUTHENTICATION_FIREWALL_FAILED ((NTSTATUS)0xC0000413)
|
//#define STATUS_AUTHENTICATION_FIREWALL_FAILED ((NTSTATUS)0xC0000413)
|
||||||
#define STATUS_VDM_DISALLOWED ((NTSTATUS)0xC0000414)
|
#define STATUS_VDM_DISALLOWED ((NTSTATUS)0xC0000414)
|
||||||
#define STATUS_HUNG_DISPLAY_DRIVER_THREAD ((NTSTATUS)0xC0000415)
|
#define STATUS_HUNG_DISPLAY_DRIVER_THREAD ((NTSTATUS)0xC0000415)
|
||||||
//#define STATUS_INVALID_CRUNTIME_PARAMETER ((NTSTATUS)0xC0000417)
|
//#define STATUS_INVALID_CRUNTIME_PARAMETER ((NTSTATUS)0xC0000417)
|
||||||
|
@ -1246,6 +1269,71 @@
|
||||||
|
|
||||||
/* Defined in winternl.h, always define since we do not include this header */
|
/* Defined in winternl.h, always define since we do not include this header */
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
|
||||||
|
/**
|
||||||
|
* winternl.h contains an incomplete definition of enum FILE_INFORMATION_CLASS
|
||||||
|
* avoid conflict by prefixing the winternl.h definition by _WINTERNL_ and then
|
||||||
|
* make a complete definition of enum FILE_INFORMATION_CLASS ourselves.
|
||||||
|
*
|
||||||
|
* For more information, refer to [MS-FSCC]: File System Control Codes:
|
||||||
|
* http://msdn.microsoft.com/en-us/library/cc231987.aspx
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define _FILE_INFORMATION_CLASS _WINTERNL_FILE_INFORMATION_CLASS
|
||||||
|
#define FileDirectoryInformation _WINTERNL_FileDirectoryInformation
|
||||||
|
|
||||||
|
#include <winternl.h>
|
||||||
|
|
||||||
|
#undef _FILE_INFORMATION_CLASS
|
||||||
|
#undef FileDirectoryInformation
|
||||||
|
|
||||||
|
enum FILE_INFORMATION_CLASS
|
||||||
|
{
|
||||||
|
FileDirectoryInformation = 1,
|
||||||
|
FileFullDirectoryInformation,
|
||||||
|
FileBothDirectoryInformation,
|
||||||
|
FileBasicInformation,
|
||||||
|
FileStandardInformation,
|
||||||
|
FileInternalInformation,
|
||||||
|
FileEaInformation,
|
||||||
|
FileAccessInformation,
|
||||||
|
FileNameInformation,
|
||||||
|
FileRenameInformation,
|
||||||
|
FileLinkInformation,
|
||||||
|
FileNamesInformation,
|
||||||
|
FileDispositionInformation,
|
||||||
|
FilePositionInformation,
|
||||||
|
FileFullEaInformation,
|
||||||
|
FileModeInformation,
|
||||||
|
FileAlignmentInformation,
|
||||||
|
FileAllInformation,
|
||||||
|
FileAllocationInformation,
|
||||||
|
FileEndOfFileInformation,
|
||||||
|
FileAlternateNameInformation,
|
||||||
|
FileStreamInformation,
|
||||||
|
FilePipeInformation,
|
||||||
|
FilePipeLocalInformation,
|
||||||
|
FilePipeRemoteInformation,
|
||||||
|
FileMailslotQueryInformation,
|
||||||
|
FileMailslotSetInformation,
|
||||||
|
FileCompressionInformation,
|
||||||
|
FileObjectIdInformation,
|
||||||
|
FileUnknownInformation1,
|
||||||
|
FileMoveClusterInformation,
|
||||||
|
FileQuotaInformation,
|
||||||
|
FileReparsePointInformation,
|
||||||
|
FileNetworkOpenInformation,
|
||||||
|
FileAttributeTagInformation,
|
||||||
|
FileTrackingInformation,
|
||||||
|
FileIdBothDirectoryInformation,
|
||||||
|
FileIdFullDirectoryInformation,
|
||||||
|
FileValidDataLengthInformation,
|
||||||
|
FileShortNameInformation
|
||||||
|
};
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
#define FILE_SUPERSEDE 0x00000000
|
#define FILE_SUPERSEDE 0x00000000
|
||||||
#define FILE_OPEN 0x00000001
|
#define FILE_OPEN 0x00000001
|
||||||
#define FILE_CREATE 0x00000002
|
#define FILE_CREATE 0x00000002
|
||||||
|
@ -1293,7 +1381,63 @@
|
||||||
#define FILE_EXISTS 0x00000004
|
#define FILE_EXISTS 0x00000004
|
||||||
#define FILE_DOES_NOT_EXIST 0x00000005
|
#define FILE_DOES_NOT_EXIST 0x00000005
|
||||||
|
|
||||||
#ifndef _WIN32
|
typedef CONST char *PCSZ;
|
||||||
|
|
||||||
|
typedef struct _STRING
|
||||||
|
{
|
||||||
|
USHORT Length;
|
||||||
|
USHORT MaximumLength;
|
||||||
|
PCHAR Buffer;
|
||||||
|
} STRING;
|
||||||
|
typedef STRING *PSTRING;
|
||||||
|
|
||||||
|
typedef STRING ANSI_STRING;
|
||||||
|
typedef PSTRING PANSI_STRING;
|
||||||
|
typedef PSTRING PCANSI_STRING;
|
||||||
|
|
||||||
|
typedef STRING OEM_STRING;
|
||||||
|
typedef PSTRING POEM_STRING;
|
||||||
|
typedef CONST STRING* PCOEM_STRING;
|
||||||
|
|
||||||
|
typedef struct _LSA_UNICODE_STRING
|
||||||
|
{
|
||||||
|
USHORT Length;
|
||||||
|
USHORT MaximumLength;
|
||||||
|
PWSTR Buffer;
|
||||||
|
} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING;
|
||||||
|
|
||||||
|
#define OBJ_INHERIT 0x00000002L
|
||||||
|
#define OBJ_PERMANENT 0x00000010L
|
||||||
|
#define OBJ_EXCLUSIVE 0x00000020L
|
||||||
|
#define OBJ_CASE_INSENSITIVE 0x00000040L
|
||||||
|
#define OBJ_OPENIF 0x00000080L
|
||||||
|
#define OBJ_OPENLINK 0x00000100L
|
||||||
|
#define OBJ_KERNEL_HANDLE 0x00000200L
|
||||||
|
#define OBJ_FORCE_ACCESS_CHECK 0x00000400L
|
||||||
|
#define OBJ_VALID_ATTRIBUTES 0x000007F2L
|
||||||
|
|
||||||
|
typedef struct _OBJECT_ATTRIBUTES
|
||||||
|
{
|
||||||
|
ULONG Length;
|
||||||
|
HANDLE RootDirectory;
|
||||||
|
PUNICODE_STRING ObjectName;
|
||||||
|
ULONG Attributes;
|
||||||
|
PVOID SecurityDescriptor;
|
||||||
|
PVOID SecurityQualityOfService;
|
||||||
|
} OBJECT_ATTRIBUTES;
|
||||||
|
typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
|
||||||
|
|
||||||
|
typedef struct _IO_STATUS_BLOCK
|
||||||
|
{
|
||||||
|
union
|
||||||
|
{
|
||||||
|
NTSTATUS status;
|
||||||
|
PVOID Pointer;
|
||||||
|
};
|
||||||
|
ULONG_PTR Information;
|
||||||
|
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
|
||||||
|
|
||||||
|
typedef VOID (*PIO_APC_ROUTINE)(PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved);
|
||||||
|
|
||||||
typedef struct _PEB PEB;
|
typedef struct _PEB PEB;
|
||||||
typedef struct _PEB* PPEB;
|
typedef struct _PEB* PPEB;
|
||||||
|
@ -1377,64 +1521,6 @@ struct _TEB
|
||||||
typedef DWORD ACCESS_MASK;
|
typedef DWORD ACCESS_MASK;
|
||||||
typedef ACCESS_MASK* PACCESS_MASK;
|
typedef ACCESS_MASK* PACCESS_MASK;
|
||||||
|
|
||||||
typedef CONST char *PCSZ;
|
|
||||||
|
|
||||||
typedef struct _STRING
|
|
||||||
{
|
|
||||||
USHORT Length;
|
|
||||||
USHORT MaximumLength;
|
|
||||||
PCHAR Buffer;
|
|
||||||
} STRING;
|
|
||||||
typedef STRING *PSTRING;
|
|
||||||
|
|
||||||
typedef STRING ANSI_STRING;
|
|
||||||
typedef PSTRING PANSI_STRING;
|
|
||||||
typedef PSTRING PCANSI_STRING;
|
|
||||||
|
|
||||||
typedef STRING OEM_STRING;
|
|
||||||
typedef PSTRING POEM_STRING;
|
|
||||||
typedef CONST STRING* PCOEM_STRING;
|
|
||||||
|
|
||||||
typedef struct _LSA_UNICODE_STRING
|
|
||||||
{
|
|
||||||
USHORT Length;
|
|
||||||
USHORT MaximumLength;
|
|
||||||
PWSTR Buffer;
|
|
||||||
} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING;
|
|
||||||
|
|
||||||
#define OBJ_INHERIT 0x00000002L
|
|
||||||
#define OBJ_PERMANENT 0x00000010L
|
|
||||||
#define OBJ_EXCLUSIVE 0x00000020L
|
|
||||||
#define OBJ_CASE_INSENSITIVE 0x00000040L
|
|
||||||
#define OBJ_OPENIF 0x00000080L
|
|
||||||
#define OBJ_OPENLINK 0x00000100L
|
|
||||||
#define OBJ_KERNEL_HANDLE 0x00000200L
|
|
||||||
#define OBJ_FORCE_ACCESS_CHECK 0x00000400L
|
|
||||||
#define OBJ_VALID_ATTRIBUTES 0x000007F2L
|
|
||||||
|
|
||||||
typedef struct _OBJECT_ATTRIBUTES
|
|
||||||
{
|
|
||||||
ULONG Length;
|
|
||||||
HANDLE RootDirectory;
|
|
||||||
PUNICODE_STRING ObjectName;
|
|
||||||
ULONG Attributes;
|
|
||||||
PVOID SecurityDescriptor;
|
|
||||||
PVOID SecurityQualityOfService;
|
|
||||||
} OBJECT_ATTRIBUTES;
|
|
||||||
typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
|
|
||||||
|
|
||||||
typedef struct _IO_STATUS_BLOCK
|
|
||||||
{
|
|
||||||
union
|
|
||||||
{
|
|
||||||
NTSTATUS status;
|
|
||||||
PVOID Pointer;
|
|
||||||
};
|
|
||||||
ULONG_PTR Information;
|
|
||||||
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
|
|
||||||
|
|
||||||
typedef VOID (*PIO_APC_ROUTINE)(PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -271,6 +271,12 @@ WINPR_API BOOL CancelWaitableTimer(HANDLE hTimer);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ((_WIN32) && (_WIN32_WINNT < 0x0600))
|
||||||
|
|
||||||
|
WINPR_API BOOL InitializeCriticalSectionEx(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount, DWORD Flags);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Extended API */
|
/* Extended API */
|
||||||
|
|
||||||
WINPR_API VOID USleep(DWORD dwMicroseconds);
|
WINPR_API VOID USleep(DWORD dwMicroseconds);
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
int TestNtCreateFile(int argc, char* argv[])
|
int TestNtCreateFile(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
#ifndef _WIN32
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
NTSTATUS ntstatus;
|
NTSTATUS ntstatus;
|
||||||
ULONG CreateOptions;
|
ULONG CreateOptions;
|
||||||
|
@ -25,6 +26,7 @@ int TestNtCreateFile(int argc, char* argv[])
|
||||||
ntstatus = NtCreateFile(&handle, DesiredAccess, &attributes, &ioStatusBlock, 0, 0, 0, CreateOptions, 0, 0, 0);
|
ntstatus = NtCreateFile(&handle, DesiredAccess, &attributes, &ioStatusBlock, 0, 0, 0, CreateOptions, 0, 0, 0);
|
||||||
|
|
||||||
RtlFreeUnicodeString(&uString);
|
RtlFreeUnicodeString(&uString);
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
int TestNtCurrentTeb(int argc, char* argv[])
|
int TestNtCurrentTeb(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
|
#ifndef _WIN32
|
||||||
PTEB teb;
|
PTEB teb;
|
||||||
|
|
||||||
teb = NtCurrentTeb();
|
teb = NtCurrentTeb();
|
||||||
|
@ -14,7 +15,7 @@ int TestNtCurrentTeb(int argc, char* argv[])
|
||||||
printf("NtCurrentTeb() returned NULL\n");
|
printf("NtCurrentTeb() returned NULL\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <winpr/tchar.h>
|
||||||
#include <winpr/synch.h>
|
#include <winpr/synch.h>
|
||||||
#include <winpr/sysinfo.h>
|
#include <winpr/sysinfo.h>
|
||||||
#include <winpr/interlocked.h>
|
#include <winpr/interlocked.h>
|
||||||
|
@ -233,3 +234,49 @@ VOID DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ((_WIN32) && (_WIN32_WINNT < 0x0600))
|
||||||
|
|
||||||
|
typedef BOOL (*PINITIALIZE_CRITICAL_SECTION_EX_FN)(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount, DWORD Flags);
|
||||||
|
|
||||||
|
static HMODULE g_KERNEL32_Library = NULL;
|
||||||
|
static BOOL g_InitializeCriticalSectionEx_Detected = FALSE;
|
||||||
|
static BOOL g_InitializeCriticalSectionEx_Available = FALSE;
|
||||||
|
static PINITIALIZE_CRITICAL_SECTION_EX_FN g_pInitializeCriticalSectionEx = NULL;
|
||||||
|
|
||||||
|
BOOL InitializeCriticalSectionEx(LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount, DWORD Flags)
|
||||||
|
{
|
||||||
|
if (!g_InitializeCriticalSectionEx_Detected)
|
||||||
|
{
|
||||||
|
g_KERNEL32_Library = LoadLibrary(_T("kernel32.dll"));
|
||||||
|
|
||||||
|
if (g_KERNEL32_Library)
|
||||||
|
{
|
||||||
|
g_pInitializeCriticalSectionEx = (PINITIALIZE_CRITICAL_SECTION_EX_FN)
|
||||||
|
GetProcAddress(g_KERNEL32_Library, "InitializeCriticalSectionEx");
|
||||||
|
|
||||||
|
g_InitializeCriticalSectionEx_Available = (g_pInitializeCriticalSectionEx) ? TRUE : FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_InitializeCriticalSectionEx_Available = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_InitializeCriticalSectionEx_Detected = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g_InitializeCriticalSectionEx_Available)
|
||||||
|
{
|
||||||
|
/* Vista and later */
|
||||||
|
return g_pInitializeCriticalSectionEx(lpCriticalSection, dwSpinCount, Flags);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Windows XP */
|
||||||
|
InitializeCriticalSection(lpCriticalSection);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
#include <winpr/thread.h>
|
#include <winpr/thread.h>
|
||||||
#include <winpr/interlocked.h>
|
#include <winpr/interlocked.h>
|
||||||
|
|
||||||
|
|
||||||
#define TEST_SYNC_CRITICAL_TEST1_RUNTIME_MS 500
|
#define TEST_SYNC_CRITICAL_TEST1_RUNTIME_MS 500
|
||||||
#define TEST_SYNC_CRITICAL_TEST1_RUNS 4
|
#define TEST_SYNC_CRITICAL_TEST1_RUNS 4
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue