Author: akhaldi
Date: Tue Jul 12 20:40:20 2016
New Revision: 71909
URL:
http://svn.reactos.org/svn/reactos?rev=71909&view=rev
Log:
[NTDLL_WINETEST] Partial sync with Wine Staging 1.9.14. CORE-11368 holds some remaining
tests.
Modified:
trunk/rostests/winetests/ntdll/CMakeLists.txt
trunk/rostests/winetests/ntdll/error.c
trunk/rostests/winetests/ntdll/file.c
trunk/rostests/winetests/ntdll/pipe.c
trunk/rostests/winetests/ntdll/reg.c
trunk/rostests/winetests/ntdll/rtl.c
trunk/rostests/winetests/ntdll/rtlstr.c
Modified: trunk/rostests/winetests/ntdll/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ntdll/CMakeList…
==============================================================================
--- trunk/rostests/winetests/ntdll/CMakeLists.txt [iso-8859-1] (original)
+++ trunk/rostests/winetests/ntdll/CMakeLists.txt [iso-8859-1] Tue Jul 12 20:40:20 2016
@@ -28,7 +28,7 @@
add_executable(ntdll_winetest ${SOURCE})
set_module_type(ntdll_winetest win32cui)
-add_importlibs(ntdll_winetest user32 msvcrt kernel32 ntdll)
+add_importlibs(ntdll_winetest user32 ole32 advapi32 msvcrt kernel32 ntdll)
add_cd_file(TARGET ntdll_winetest DESTINATION reactos/bin FOR all)
if(NOT MSVC)
Modified: trunk/rostests/winetests/ntdll/error.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ntdll/error.c?r…
==============================================================================
--- trunk/rostests/winetests/ntdll/error.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/ntdll/error.c [iso-8859-1] Tue Jul 12 20:40:20 2016
@@ -125,8 +125,10 @@
cmp(STATUS_DATATYPE_MISALIGNMENT, ERROR_NOACCESS);
cmp(STATUS_ACCESS_VIOLATION, ERROR_NOACCESS);
cmp2(STATUS_DATATYPE_MISALIGNMENT_ERROR, ERROR_NOACCESS);
+ cmp2(STATUS_MULTIPLE_FAULT_VIOLATION, ERROR_MULTIPLE_FAULT_VIOLATION);
cmp(STATUS_CTL_FILE_NOT_SUPPORTED, ERROR_NOT_SUPPORTED);
cmp(STATUS_PORT_ALREADY_SET, ERROR_INVALID_PARAMETER);
+ cmp2(STATUS_PORT_NOT_SET, ERROR_PORT_NOT_SET);
cmp(STATUS_SECTION_NOT_IMAGE, ERROR_INVALID_PARAMETER);
cmp(STATUS_BAD_WORKING_SET_LIMIT, ERROR_INVALID_PARAMETER);
cmp(STATUS_WORKING_SET_LIMIT_RANGE, ERROR_INVALID_PARAMETER);
@@ -140,6 +142,7 @@
cmp(STATUS_INVALID_CID, ERROR_INVALID_PARAMETER);
cmp(STATUS_STACK_OVERFLOW, ERROR_STACK_OVERFLOW);
cmp(STATUS_BAD_INITIAL_STACK, ERROR_STACK_OVERFLOW);
+ cmp4(STATUS_STACK_OVERFLOW_READ, ERROR_STACK_OVERFLOW_READ,
ERROR_STACK_OVERFLOW);
cmp(STATUS_INVALID_VOLUME_LABEL, ERROR_LABEL_TOO_LONG);
cmp(STATUS_SECTION_NOT_EXTENDED, ERROR_OUTOFMEMORY);
cmp(STATUS_NOT_MAPPED_DATA, ERROR_INVALID_ADDRESS);
@@ -148,29 +151,46 @@
cmp(STATUS_INVALID_INFO_CLASS, ERROR_INVALID_PARAMETER);
cmp(STATUS_SUSPEND_COUNT_EXCEEDED, ERROR_SIGNAL_REFUSED);
cmp(STATUS_NOTIFY_ENUM_DIR, ERROR_NOTIFY_ENUM_DIR);
+ cmp2(STATUS_BAD_CURRENT_DIRECTORY, ERROR_BAD_CURRENT_DIRECTORY);
cmp(STATUS_REGISTRY_RECOVERED, ERROR_REGISTRY_RECOVERED);
+ cmp2(STATUS_REGISTRY_HIVE_RECOVERED, ERROR_REGISTRY_HIVE_RECOVERED);
cmp(STATUS_REGISTRY_IO_FAILED, ERROR_REGISTRY_IO_FAILED);
cmp(STATUS_NOT_REGISTRY_FILE, ERROR_NOT_REGISTRY_FILE);
+ cmp2(STATUS_CANNOT_LOAD_REGISTRY_FILE, ERROR_CANNOT_LOAD_REGISTRY_FILE);
+ cmp2(STATUS_SYSTEM_HIVE_TOO_LARGE, ERROR_SYSTEM_HIVE_TOO_LARGE);
cmp(STATUS_KEY_DELETED, ERROR_KEY_DELETED);
cmp(STATUS_NO_LOG_SPACE, ERROR_NO_LOG_SPACE);
cmp(STATUS_KEY_HAS_CHILDREN, ERROR_KEY_HAS_CHILDREN);
cmp(STATUS_CHILD_MUST_BE_VOLATILE, ERROR_CHILD_MUST_BE_VOLATILE);
cmp(STATUS_REGISTRY_CORRUPT, ERROR_BADDB);
+ cmp2(STATUS_REGISTRY_QUOTA_LIMIT, ERROR_REGISTRY_QUOTA_LIMIT);
cmp(STATUS_DLL_NOT_FOUND, ERROR_MOD_NOT_FOUND);
cmp2(STATUS_OPEN_FAILED, ERROR_NET_OPEN_FAILED);
cmp2(STATUS_IO_PRIVILEGE_FAILED, ERROR_IO_PRIVILEGE_FAILED);
cmp(STATUS_DLL_INIT_FAILED, ERROR_DLL_INIT_FAILED);
+ cmp2(STATUS_DLL_INIT_FAILED_LOGOFF, ERROR_DLL_INIT_FAILED_LOGOFF);
cmp2(STATUS_INVALID_IMPORT_OF_NON_DLL, ERROR_INVALID_IMPORT_OF_NON_DLL);
cmp(STATUS_ORDINAL_NOT_FOUND, ERROR_INVALID_ORDINAL);
cmp(STATUS_DRIVER_ORDINAL_NOT_FOUND, ERROR_INVALID_ORDINAL);
cmp2(STATUS_DRIVER_UNABLE_TO_LOAD, ERROR_BAD_DRIVER);
cmp(STATUS_ENTRYPOINT_NOT_FOUND, ERROR_PROC_NOT_FOUND);
cmp(STATUS_DRIVER_ENTRYPOINT_NOT_FOUND, ERROR_PROC_NOT_FOUND);
+ cmp2(STATUS_BAD_DLL_ENTRYPOINT, ERROR_BAD_DLL_ENTRYPOINT);
+ cmp2(STATUS_BAD_SERVICE_ENTRYPOINT, ERROR_BAD_SERVICE_ENTRYPOINT);
+ cmp2(STATUS_FAILED_DRIVER_ENTRY, ERROR_FAILED_DRIVER_ENTRY);
+ cmp2(STATUS_DLL_MIGHT_BE_INSECURE, ERROR_DLL_MIGHT_BE_INSECURE);
+ cmp2(STATUS_DLL_MIGHT_BE_INCOMPATIBLE, ERROR_DLL_MIGHT_BE_INCOMPATIBLE);
+ cmp2(STATUS_ILLEGAL_DLL_RELOCATION, ERROR_ILLEGAL_DLL_RELOCATION);
+ cmp2(STATUS_NOT_SAFE_MODE_DRIVER, ERROR_NOT_SAFE_MODE_DRIVER);
+ cmp2(STATUS_DRIVER_DATABASE_ERROR, ERROR_DRIVER_DATABASE_ERROR);
cmp(STATUS_PENDING, ERROR_IO_PENDING);
cmp(STATUS_MORE_ENTRIES, ERROR_MORE_DATA);
cmp(STATUS_INTEGER_OVERFLOW, ERROR_ARITHMETIC_OVERFLOW);
cmp(STATUS_BUFFER_OVERFLOW, ERROR_MORE_DATA);
+ cmp2(STATUS_MARSHALL_OVERFLOW, ERROR_MARSHALL_OVERFLOW);
cmp(STATUS_NO_MORE_FILES, ERROR_NO_MORE_FILES);
+ cmp2(STATUS_REDIRECTOR_HAS_OPEN_HANDLES, ERROR_REDIRECTOR_HAS_OPEN_HANDLES);
+ cmp2(STATUS_SERVER_HAS_OPEN_HANDLES, ERROR_SERVER_HAS_OPEN_HANDLES);
cmp2(STATUS_HANDLES_CLOSED, ERROR_HANDLES_CLOSED);
cmp(STATUS_NO_INHERITANCE, ERROR_NO_INHERITANCE);
cmp(STATUS_NO_MORE_EAS, ERROR_NO_MORE_ITEMS);
@@ -183,8 +203,19 @@
cmp(STATUS_ILLEGAL_FUNCTION, ERROR_INVALID_FUNCTION);
cmp(STATUS_IN_PAGE_ERROR, ERROR_SWAPERROR);
cmp(STATUS_PAGEFILE_QUOTA, ERROR_PAGEFILE_QUOTA);
+ cmp2(STATUS_PAGEFILE_QUOTA_EXCEEDED, ERROR_PAGEFILE_QUOTA_EXCEEDED);
+ cmp2(STATUS_PAGE_FAULT_TRANSITION, ERROR_PAGE_FAULT_TRANSITION);
+ cmp2(STATUS_PAGE_FAULT_DEMAND_ZERO, ERROR_PAGE_FAULT_DEMAND_ZERO);
+ cmp2(STATUS_PAGE_FAULT_COPY_ON_WRITE, ERROR_PAGE_FAULT_COPY_ON_WRITE);
+ cmp2(STATUS_PAGE_FAULT_GUARD_PAGE, ERROR_PAGE_FAULT_GUARD_PAGE);
+ cmp2(STATUS_PAGE_FAULT_PAGING_FILE, ERROR_PAGE_FAULT_PAGING_FILE);
+ cmp2(STATUS_CACHE_PAGE_LOCKED, ERROR_CACHE_PAGE_LOCKED);
+ cmp2(STATUS_PAGEFILE_CREATE_FAILED, ERROR_PAGEFILE_CREATE_FAILED);
+ cmp2(STATUS_NO_PAGEFILE, ERROR_NO_PAGEFILE);
cmp(STATUS_COMMITMENT_LIMIT, ERROR_COMMITMENT_LIMIT);
+ cmp2(STATUS_COMMITMENT_MINIMUM, ERROR_COMMITMENT_MINIMUM);
cmp(STATUS_SECTION_TOO_BIG, ERROR_NOT_ENOUGH_MEMORY);
+ cmp2(STATUS_SEGMENT_NOTIFICATION, ERROR_SEGMENT_NOTIFICATION);
cmp(RPC_NT_SS_IN_NULL_CONTEXT, ERROR_INVALID_HANDLE);
cmp(RPC_NT_INVALID_BINDING, ERROR_INVALID_HANDLE);
cmp(STATUS_INVALID_HANDLE, ERROR_INVALID_HANDLE);
@@ -195,6 +226,7 @@
cmp(STATUS_NOT_COMMITTED, ERROR_INVALID_ADDRESS);
cmp(STATUS_PARTIAL_COPY, ERROR_PARTIAL_COPY);
cmp3(STATUS_LPC_REPLY_LOST, ERROR_CONNECTION_ABORTED,
ERROR_INTERNAL_ERROR);
+ cmp2(STATUS_INVALID_VARIANT, ERROR_INVALID_VARIANT);
cmp(STATUS_INVALID_PARAMETER, ERROR_INVALID_PARAMETER);
cmp(STATUS_INVALID_PARAMETER_1, ERROR_INVALID_PARAMETER);
cmp(STATUS_INVALID_PARAMETER_2, ERROR_INVALID_PARAMETER);
@@ -219,19 +251,26 @@
cmp(STATUS_NO_SUCH_FILE, ERROR_FILE_NOT_FOUND);
cmp(STATUS_INVALID_DEVICE_REQUEST, ERROR_INVALID_FUNCTION);
cmp2(STATUS_VOLUME_NOT_UPGRADED, ERROR_INVALID_FUNCTION);
+ cmp2(STATUS_CONVERT_TO_LARGE, ERROR_CONVERT_TO_LARGE);
cmp(STATUS_END_OF_FILE, ERROR_HANDLE_EOF);
cmp(STATUS_FILE_FORCED_CLOSED, ERROR_HANDLE_EOF);
cmp(STATUS_WRONG_VOLUME, ERROR_WRONG_DISK);
cmp(STATUS_NO_MEDIA, ERROR_NO_MEDIA_IN_DRIVE);
cmp(STATUS_NO_MEDIA_IN_DEVICE, ERROR_NOT_READY);
cmp2(STATUS_VOLUME_DISMOUNTED, ERROR_NOT_READY);
+ cmp2(STATUS_VOLUME_MOUNTED, ERROR_VOLUME_MOUNTED);
+ cmp2(STATUS_MOUNT_POINT_NOT_RESOLVED, ERROR_MOUNT_POINT_NOT_RESOLVED);
cmp(STATUS_NONEXISTENT_SECTOR, ERROR_SECTOR_NOT_FOUND);
cmp(STATUS_WORKING_SET_QUOTA, ERROR_WORKING_SET_QUOTA);
cmp(STATUS_NO_MEMORY, ERROR_NOT_ENOUGH_MEMORY);
cmp(STATUS_CONFLICTING_ADDRESSES, ERROR_INVALID_ADDRESS);
cmp(STATUS_INVALID_SYSTEM_SERVICE, ERROR_INVALID_FUNCTION);
+ cmp2(STATUS_THREAD_WAS_SUSPENDED, ERROR_THREAD_WAS_SUSPENDED);
+ cmp2(STATUS_TOO_MANY_THREADS, ERROR_TOO_MANY_THREADS);
+ cmp2(STATUS_THREAD_NOT_IN_PROCESS, ERROR_THREAD_NOT_IN_PROCESS);
cmp(STATUS_THREAD_IS_TERMINATING, ERROR_ACCESS_DENIED);
cmp(STATUS_PROCESS_IS_TERMINATING, ERROR_ACCESS_DENIED);
+ cmp2(STATUS_SYSTEM_PROCESS_TERMINATED, ERROR_SYSTEM_PROCESS_TERMINATED);
cmp(STATUS_INVALID_LOCK_SEQUENCE, ERROR_ACCESS_DENIED);
cmp(STATUS_INVALID_VIEW_SIZE, ERROR_ACCESS_DENIED);
cmp(STATUS_ALREADY_COMMITTED, ERROR_ACCESS_DENIED);
@@ -273,12 +312,16 @@
cmp(STATUS_BUFFER_TOO_SMALL, ERROR_INSUFFICIENT_BUFFER);
cmp(STATUS_UNABLE_TO_DECOMMIT_VM, ERROR_INVALID_ADDRESS);
cmp(STATUS_DISK_CORRUPT_ERROR, ERROR_DISK_CORRUPT);
+ cmp2(STATUS_FT_READ_RECOVERY_FROM_BACKUP, ERROR_FT_READ_RECOVERY_FROM_BACKUP);
+ cmp2(STATUS_FT_WRITE_RECOVERY, ERROR_FT_WRITE_RECOVERY);
cmp(STATUS_FT_MISSING_MEMBER, ERROR_IO_DEVICE);
cmp(STATUS_FT_ORPHANING, ERROR_IO_DEVICE);
+ cmp2(STATUS_BACKUP_CONTROLLER, ERROR_BACKUP_CONTROLLER);
cmp(STATUS_VARIABLE_NOT_FOUND, ERROR_ENVVAR_NOT_FOUND);
cmp(STATUS_OBJECT_NAME_INVALID, ERROR_INVALID_NAME);
cmp(STATUS_OBJECT_NAME_NOT_FOUND, ERROR_FILE_NOT_FOUND);
cmp(STATUS_OBJECT_NAME_COLLISION, ERROR_ALREADY_EXISTS);
+ cmp2(STATUS_OBJECT_NAME_EXISTS, ERROR_OBJECT_NAME_EXISTS);
cmp(STATUS_OBJECT_PATH_INVALID, ERROR_BAD_PATHNAME);
cmp(STATUS_OBJECT_PATH_NOT_FOUND, ERROR_PATH_NOT_FOUND);
cmp(STATUS_DFS_EXIT_PATH_FOUND, ERROR_PATH_NOT_FOUND);
@@ -288,14 +331,19 @@
cmp(STATUS_DATA_OVERRUN, ERROR_IO_DEVICE);
cmp(STATUS_DATA_LATE_ERROR, ERROR_IO_DEVICE);
cmp(STATUS_DATA_ERROR, ERROR_CRC);
+ cmp2(STATUS_DATA_NOT_ACCEPTED, ERROR_DATA_NOT_ACCEPTED);
+ cmp2(STATUS_LOST_WRITEBEHIND_DATA, ERROR_LOST_WRITEBEHIND_DATA);
cmp(STATUS_CRC_ERROR, ERROR_CRC);
cmp(STATUS_SHARING_VIOLATION, ERROR_SHARING_VIOLATION);
cmp(STATUS_QUOTA_EXCEEDED, ERROR_NOT_ENOUGH_QUOTA);
+ cmp2(STATUS_FS_DRIVER_REQUIRED, ERROR_FS_DRIVER_REQUIRED);
cmp(STATUS_MUTANT_NOT_OWNED, ERROR_NOT_OWNER);
+ cmp2(STATUS_MUTANT_LIMIT_EXCEEDED, ERROR_MUTANT_LIMIT_EXCEEDED);
cmp(STATUS_SEMAPHORE_LIMIT_EXCEEDED, ERROR_TOO_MANY_POSTS);
cmp(STATUS_DISK_FULL, ERROR_DISK_FULL);
cmp(STATUS_LOCK_NOT_GRANTED, ERROR_LOCK_VIOLATION);
cmp(STATUS_FILE_LOCK_CONFLICT, ERROR_LOCK_VIOLATION);
+ cmp2(STATUS_NOT_TINY_STREAM, ERROR_NOT_TINY_STREAM);
cmp(STATUS_NOT_A_DIRECTORY, ERROR_DIRECTORY);
cmp2(STATUS_CANNOT_MAKE, ERROR_CANNOT_MAKE);
cmp(STATUS_UNKNOWN_REVISION, ERROR_UNKNOWN_REVISION);
@@ -322,6 +370,9 @@
cmp(STATUS_PASSWORD_RESTRICTION, ERROR_PASSWORD_RESTRICTION);
cmp(STATUS_PASSWORD_EXPIRED, ERROR_PASSWORD_EXPIRED);
cmp(STATUS_PASSWORD_MUST_CHANGE, ERROR_PASSWORD_MUST_CHANGE);
+ cmp2(STATUS_PWD_TOO_SHORT, ERROR_PWD_TOO_SHORT);
+ cmp2(STATUS_PWD_TOO_RECENT, ERROR_PWD_TOO_RECENT);
+ cmp2(STATUS_PWD_HISTORY_CONFLICT, ERROR_PWD_HISTORY_CONFLICT);
cmp(STATUS_ACCOUNT_DISABLED, ERROR_ACCOUNT_DISABLED);
cmp(STATUS_ACCOUNT_LOCKED_OUT, ERROR_ACCOUNT_LOCKED_OUT);
cmp(STATUS_NONE_MAPPED, ERROR_NONE_MAPPED);
@@ -332,6 +383,7 @@
cmp(STATUS_INVALID_SID, ERROR_INVALID_SID);
cmp(STATUS_INVALID_SECURITY_DESCR, ERROR_INVALID_SECURITY_DESCR);
cmp(STATUS_PROCEDURE_NOT_FOUND, ERROR_PROC_NOT_FOUND);
+ cmp2(STATUS_VDM_HARD_ERROR, ERROR_VDM_HARD_ERROR);
cmp2(STATUS_INVALID_LDT_SIZE, ERROR_INVALID_LDT_SIZE);
cmp2(STATUS_INVALID_LDT_OFFSET, ERROR_INVALID_LDT_OFFSET);
cmp2(STATUS_INVALID_LDT_DESCRIPTOR, ERROR_INVALID_LDT_DESCRIPTOR);
@@ -349,11 +401,14 @@
cmp2(STATUS_INVALID_IMAGE_WIN_64, ERROR_BAD_EXE_FORMAT);
cmp(STATUS_NO_TOKEN, ERROR_NO_TOKEN);
cmp(STATUS_RANGE_NOT_LOCKED, ERROR_NOT_LOCKED);
+ cmp2(STATUS_RANGE_LIST_CONFLICT, ERROR_RANGE_LIST_CONFLICT);
+ cmp2(STATUS_RANGE_NOT_FOUND, ERROR_RANGE_NOT_FOUND);
cmp(STATUS_SERVER_DISABLED, ERROR_SERVER_DISABLED);
cmp(STATUS_SERVER_NOT_DISABLED, ERROR_SERVER_NOT_DISABLED);
cmp(STATUS_INVALID_ID_AUTHORITY, ERROR_INVALID_ID_AUTHORITY);
cmp(STATUS_ALLOTTED_SPACE_EXCEEDED, ERROR_ALLOTTED_SPACE_EXCEEDED);
cmp(STATUS_TOO_MANY_PAGING_FILES, ERROR_NOT_ENOUGH_MEMORY);
+ cmp2(STATUS_RESOURCE_REQUIREMENTS_CHANGED, ERROR_RESOURCE_REQUIREMENTS_CHANGED);
cmp(STATUS_INSUFFICIENT_RESOURCES, ERROR_NO_SYSTEM_RESOURCES);
cmp(STATUS_INSUFF_SERVER_RESOURCES, ERROR_NOT_ENOUGH_SERVER_MEMORY);
cmp(STATUS_FILE_INVALID, ERROR_FILE_INVALID);
@@ -365,12 +420,17 @@
cmp(STATUS_DEVICE_NOT_READY, ERROR_NOT_READY);
cmp3(STATUS_DEVICE_NOT_CONNECTED, ERROR_DEVICE_NOT_CONNECTED,
ERROR_NOT_READY);
cmp(STATUS_DEVICE_POWER_FAILURE, ERROR_NOT_READY);
+ cmp2(STATUS_INSUFFICIENT_POWER, ERROR_INSUFFICIENT_POWER);
+ cmp2(STATUS_DRIVER_FAILED_SLEEP, ERROR_DRIVER_FAILED_SLEEP);
cmp2(STATUS_NOT_FOUND, ERROR_NOT_FOUND);
cmp2(STATUS_NO_MATCH, ERROR_NO_MATCH);
+ cmp2(STATUS_NO_MORE_MATCHES, ERROR_NO_MORE_MATCHES);
cmp2(STATUS_PROPSET_NOT_FOUND, ERROR_SET_NOT_FOUND);
+ cmp2(STATUS_FOUND_OUT_OF_SCOPE, ERROR_FOUND_OUT_OF_SCOPE);
cmp(STATUS_DEVICE_BUSY, ERROR_BUSY);
cmp(STATUS_FREE_VM_NOT_AT_BASE, ERROR_INVALID_ADDRESS);
cmp(STATUS_MEMORY_NOT_ALLOCATED, ERROR_INVALID_ADDRESS);
+ cmp2(STATUS_ALLOCATE_BUCKET, ERROR_ALLOCATE_BUCKET);
cmp(STATUS_NOT_SAME_DEVICE, ERROR_NOT_SAME_DEVICE);
cmp(STATUS_NOT_SUPPORTED, ERROR_NOT_SUPPORTED);
cmp(STATUS_REMOTE_NOT_LISTENING, ERROR_REM_NOT_LIST);
@@ -381,6 +441,7 @@
cmp(STATUS_DEVICE_DOES_NOT_EXIST, ERROR_DEV_NOT_EXIST);
cmp(STATUS_TOO_MANY_COMMANDS, ERROR_TOO_MANY_CMDS);
cmp(STATUS_ADAPTER_HARDWARE_ERROR, ERROR_ADAP_HDW_ERR);
+
cmp2(STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT,ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT);
cmp(STATUS_REDIRECTOR_NOT_STARTED, ERROR_PATH_NOT_FOUND);
cmp(STATUS_INVALID_EA_NAME, ERROR_INVALID_EA_NAME);
cmp(STATUS_EA_LIST_INCONSISTENT, ERROR_EA_LIST_INCONSISTENT);
@@ -391,6 +452,8 @@
cmp(STATUS_EA_CORRUPT_ERROR, ERROR_FILE_CORRUPT);
cmp(STATUS_NONEXISTENT_EA_ENTRY, ERROR_FILE_CORRUPT);
cmp(STATUS_NO_EAS_ON_FILE, ERROR_FILE_CORRUPT);
+ cmp2(STATUS_REPARSE, ERROR_REPARSE);
+ cmp2(STATUS_REPARSE_OBJECT, ERROR_REPARSE_OBJECT);
cmp2(STATUS_NOT_A_REPARSE_POINT, ERROR_NOT_A_REPARSE_POINT);
cmp4(STATUS_IO_REPARSE_TAG_INVALID, ERROR_REPARSE_TAG_INVALID,
ERROR_INVALID_PARAMETER);
cmp4(STATUS_IO_REPARSE_TAG_MISMATCH, ERROR_REPARSE_TAG_MISMATCH,
ERROR_INVALID_PARAMETER);
@@ -406,6 +469,7 @@
cmp2(STATUS_JOURNAL_DELETE_IN_PROGRESS, ERROR_JOURNAL_DELETE_IN_PROGRESS);
cmp2(STATUS_JOURNAL_NOT_ACTIVE, ERROR_JOURNAL_NOT_ACTIVE);
cmp2(STATUS_JOURNAL_ENTRY_DELETED, ERROR_JOURNAL_ENTRY_DELETED);
+
cmp2(STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED,ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED);
cmp(STATUS_INVALID_NETWORK_RESPONSE, ERROR_BAD_NET_RESP);
cmp(STATUS_USER_SESSION_DELETED, ERROR_UNEXP_NET_ERR);
cmp(STATUS_UNEXPECTED_NETWORK_ERROR, ERROR_UNEXP_NET_ERR);
@@ -423,6 +487,7 @@
cmp(STATUS_TOO_MANY_NODES, ERROR_TOO_MANY_NAMES);
cmp(STATUS_TOO_MANY_SESSIONS, ERROR_TOO_MANY_SESS);
cmp(STATUS_SHARING_PAUSED, ERROR_SHARING_PAUSED);
+ cmp2(STATUS_CANT_ENABLE_DENY_ONLY, ERROR_CANT_ENABLE_DENY_ONLY);
cmp(STATUS_REQUEST_NOT_ACCEPTED, ERROR_REQ_NOT_ACCEP);
cmp(STATUS_REDIRECTOR_PAUSED, ERROR_REDIR_PAUSED);
cmp(STATUS_NET_WRITE_FAULT, ERROR_NET_WRITE_FAULT);
@@ -452,6 +517,7 @@
cmp(STATUS_END_OF_MEDIA, ERROR_END_OF_MEDIA);
cmp(STATUS_EOM_OVERFLOW, ERROR_EOM_OVERFLOW);
cmp(STATUS_BEGINNING_OF_MEDIA, ERROR_BEGINNING_OF_MEDIA);
+ cmp2(STATUS_MEDIA_CHECK, ERROR_MEDIA_CHECK);
cmp(STATUS_MEDIA_CHANGED, ERROR_MEDIA_CHANGED);
cmp(STATUS_BUS_RESET, ERROR_BUS_RESET);
cmp(STATUS_FILEMARK_DETECTED, ERROR_FILEMARK_DETECTED);
@@ -462,12 +528,32 @@
cmp(STATUS_DEVICE_NOT_PARTITIONED, ERROR_DEVICE_NOT_PARTITIONED);
cmp(STATUS_UNABLE_TO_LOCK_MEDIA, ERROR_UNABLE_TO_LOCK_MEDIA);
cmp(STATUS_UNABLE_TO_UNLOAD_MEDIA, ERROR_UNABLE_TO_UNLOAD_MEDIA);
+ cmp2(STATUS_ILLEGAL_CHARACTER, ERROR_ILLEGAL_CHARACTER);
cmp(STATUS_UNMAPPABLE_CHARACTER, ERROR_NO_UNICODE_TRANSLATION);
+ cmp2(STATUS_UNDEFINED_CHARACTER, ERROR_UNDEFINED_CHARACTER);
+ cmp2(STATUS_TRANSLATION_COMPLETE, ERROR_TRANSLATION_COMPLETE);
cmp(STATUS_NOT_ALL_ASSIGNED, ERROR_NOT_ALL_ASSIGNED);
cmp(STATUS_SOME_NOT_MAPPED, ERROR_SOME_NOT_MAPPED);
cmp(STATUS_NO_QUOTAS_FOR_ACCOUNT, ERROR_NO_QUOTAS_FOR_ACCOUNT);
+ cmp2(STATUS_QUOTA_LIST_INCONSISTENT, ERROR_QUOTA_LIST_INCONSISTENT);
cmp(STATUS_LOCAL_USER_SESSION_KEY, ERROR_LOCAL_USER_SESSION_KEY);
cmp(STATUS_NULL_LM_PASSWORD, ERROR_NULL_LM_PASSWORD);
+ cmp2(STATUS_SYNCHRONIZATION_REQUIRED, ERROR_SYNCHRONIZATION_REQUIRED);
+ cmp2(STATUS_WAKE_SYSTEM_DEBUGGER, ERROR_WAKE_SYSTEM_DEBUGGER);
+ cmp2(DBG_EXCEPTION_HANDLED, ERROR_DBG_EXCEPTION_HANDLED);
+ cmp2(DBG_CONTINUE, ERROR_DBG_CONTINUE);
+ cmp2(DBG_TERMINATE_THREAD, ERROR_DBG_TERMINATE_THREAD);
+ cmp2(DBG_TERMINATE_PROCESS, ERROR_DBG_TERMINATE_PROCESS);
+ cmp2(DBG_CONTROL_C, ERROR_DBG_CONTROL_C);
+ cmp2(DBG_PRINTEXCEPTION_C, ERROR_DBG_PRINTEXCEPTION_C);
+ cmp2(DBG_RIPEXCEPTION, ERROR_DBG_RIPEXCEPTION);
+ cmp2(DBG_CONTROL_BREAK, ERROR_DBG_CONTROL_BREAK);
+ cmp2(DBG_COMMAND_EXCEPTION, ERROR_DBG_COMMAND_EXCEPTION);
+ cmp2(DBG_EXCEPTION_NOT_HANDLED, ERROR_DBG_EXCEPTION_NOT_HANDLED);
+ cmp2(STATUS_DEBUG_ATTACH_FAILED, ERROR_DEBUG_ATTACH_FAILED);
+ cmp2(STATUS_VALIDATE_CONTINUE, ERROR_VALIDATE_CONTINUE);
+ cmp2(STATUS_EXTRANEOUS_INFORMATION, ERROR_EXTRANEOUS_INFORMATION);
+ cmp2(STATUS_GUID_SUBSTITUTION_MADE, ERROR_GUID_SUBSTITUTION_MADE);
cmp2(STATUS_IMAGE_MACHINE_TYPE_MISMATCH, ERROR_IMAGE_MACHINE_TYPE_MISMATCH);
cmp2(STATUS_RECEIVE_PARTIAL, ERROR_RECEIVE_PARTIAL);
cmp2(STATUS_RECEIVE_EXPEDITED, ERROR_RECEIVE_EXPEDITED);
@@ -485,9 +571,30 @@
cmp2(STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE, ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE);
cmp2(STATUS_NO_YIELD_PERFORMED, ERROR_NO_YIELD_PERFORMED);
cmp2(STATUS_TIMER_RESUME_IGNORED, ERROR_TIMER_RESUME_IGNORED);
+ cmp2(STATUS_TIMER_RESOLUTION_NOT_SET, ERROR_TIMER_RESOLUTION_NOT_SET);
+ cmp2(STATUS_ARBITRATION_UNHANDLED, ERROR_ARBITRATION_UNHANDLED);
+ cmp2(STATUS_CARDBUS_NOT_SUPPORTED, ERROR_CARDBUS_NOT_SUPPORTED);
+ cmp2(STATUS_MP_PROCESSOR_MISMATCH, ERROR_MP_PROCESSOR_MISMATCH);
+ cmp2(STATUS_HIBERNATED, ERROR_HIBERNATED);
+ cmp2(STATUS_RESUME_HIBERNATION, ERROR_RESUME_HIBERNATION);
+ cmp2(STATUS_FIRMWARE_UPDATED, ERROR_FIRMWARE_UPDATED);
+ cmp2(STATUS_WAKE_SYSTEM, ERROR_WAKE_SYSTEM);
+ cmp2(STATUS_WAIT_1, ERROR_WAIT_1);
+ cmp2(STATUS_WAIT_2, ERROR_WAIT_2);
+ cmp2(STATUS_WAIT_3, ERROR_WAIT_3);
+ cmp2(STATUS_WAIT_63, ERROR_WAIT_63);
+ cmp2(STATUS_ABANDONED_WAIT_0, ERROR_WAIT_NO_CHILDREN);
+ cmp2(STATUS_ABANDONED_WAIT_63, ERROR_ABANDONED_WAIT_63);
+ cmp2(STATUS_USER_APC, ERROR_USER_APC);
+ cmp2(STATUS_KERNEL_APC, ERROR_KERNEL_APC);
+ cmp2(STATUS_ALERTED, ERROR_ALERTED);
+ cmp2(STATUS_NOTIFY_CLEANUP, ERROR_NOTIFY_CLEANUP);
+ cmp2(STATUS_NO_CALLBACK_ACTIVE, ERROR_NO_CALLBACK_ACTIVE);
+ cmp4(STATUS_NOINTERFACE, ERROR_NOINTERFACE, E_NOINTERFACE);
cmp(STATUS_BAD_INHERITANCE_ACL, ERROR_BAD_INHERITANCE_ACL);
cmp(STATUS_INVALID_GROUP_ATTRIBUTES, ERROR_INVALID_GROUP_ATTRIBUTES);
cmp(STATUS_BAD_IMPERSONATION_LEVEL, ERROR_BAD_IMPERSONATION_LEVEL);
+ cmp2(STATUS_ELEVATION_REQUIRED, ERROR_ELEVATION_REQUIRED);
cmp(STATUS_CANT_OPEN_ANONYMOUS, ERROR_CANT_OPEN_ANONYMOUS);
cmp(STATUS_BAD_VALIDATION_CLASS, ERROR_BAD_VALIDATION_CLASS);
cmp(STATUS_BAD_TOKEN_TYPE, ERROR_BAD_TOKEN_TYPE);
@@ -502,6 +609,7 @@
cmp(STATUS_DOMAIN_LIMIT_EXCEEDED, ERROR_DOMAIN_LIMIT_EXCEEDED);
cmp2(STATUS_OPLOCK_NOT_GRANTED, ERROR_OPLOCK_NOT_GRANTED);
cmp2(STATUS_INVALID_OPLOCK_PROTOCOL, ERROR_INVALID_OPLOCK_PROTOCOL);
+ cmp2(STATUS_OPLOCK_BREAK_IN_PROGRESS, ERROR_OPLOCK_BREAK_IN_PROGRESS);
cmp(STATUS_INTERNAL_DB_CORRUPTION, ERROR_INTERNAL_DB_CORRUPTION);
cmp(STATUS_INTERNAL_ERROR, ERROR_INTERNAL_ERROR);
cmp(STATUS_GENERIC_NOT_MAPPED, ERROR_GENERIC_NOT_MAPPED);
@@ -512,7 +620,12 @@
cmp(STATUS_BAD_LOGON_SESSION_STATE, ERROR_BAD_LOGON_SESSION_STATE);
cmp(STATUS_LOGON_SESSION_COLLISION, ERROR_LOGON_SESSION_COLLISION);
cmp(STATUS_INVALID_LOGON_TYPE, ERROR_INVALID_LOGON_TYPE);
+ cmp2(STATUS_LOGON_SERVER_CONFLICT, ERROR_LOGON_SERVER_CONFLICT);
+ cmp2(STATUS_SERVER_SID_MISMATCH, ERROR_SERVER_SID_MISMATCH);
+ cmp2(STATUS_RXACT_STATE_CREATED, ERROR_RXACT_STATE_CREATED);
cmp(STATUS_RXACT_INVALID_STATE, ERROR_RXACT_INVALID_STATE);
+ cmp2(STATUS_RXACT_COMMITTED, ERROR_RXACT_COMMITTED);
+ cmp2(STATUS_RXACT_COMMIT_NECESSARY, ERROR_RXACT_COMMIT_NECESSARY);
cmp(STATUS_RXACT_COMMIT_FAILURE, ERROR_RXACT_COMMIT_FAILURE);
cmp(STATUS_SPECIAL_ACCOUNT, ERROR_SPECIAL_ACCOUNT);
cmp(STATUS_SPECIAL_USER, ERROR_SPECIAL_USER);
@@ -532,6 +645,8 @@
cmp(STATUS_NO_SUCH_MEMBER, ERROR_NO_SUCH_MEMBER);
cmp(STATUS_INVALID_MEMBER, ERROR_INVALID_MEMBER);
cmp(STATUS_TOO_MANY_SIDS, ERROR_TOO_MANY_SIDS);
+ cmp2(STATUS_ALL_SIDS_FILTERED, ERROR_ALL_SIDS_FILTERED);
+ cmp2(STATUS_INSUFFICIENT_LOGON_INFO, ERROR_INSUFFICIENT_LOGON_INFO);
cmp(STATUS_LM_CROSS_ENCRYPTION_REQUIRED, ERROR_LM_CROSS_ENCRYPTION_REQUIRED);
cmp(STATUS_MESSAGE_NOT_FOUND, ERROR_MR_MID_NOT_FOUND);
cmp2(STATUS_CONTROL_C_EXIT, ERROR_CONTROL_C_EXIT);
@@ -542,12 +657,20 @@
cmp(STATUS_LINK_TIMEOUT, ERROR_UNEXP_NET_ERR);
cmp(STATUS_INVALID_CONNECTION, ERROR_UNEXP_NET_ERR);
cmp(STATUS_INVALID_ADDRESS, ERROR_UNEXP_NET_ERR);
+ cmp2(STATUS_IP_ADDRESS_CONFLICT1, ERROR_IP_ADDRESS_CONFLICT1);
+ cmp2(STATUS_IP_ADDRESS_CONFLICT2, ERROR_IP_ADDRESS_CONFLICT2);
cmp2(STATUS_MISSING_SYSTEMFILE, ERROR_MISSING_SYSTEMFILE);
- cmp2(STATUS_PAGEFILE_CREATE_FAILED, ERROR_PAGEFILE_CREATE_FAILED);
+ cmp2(STATUS_CORRUPT_SYSTEM_FILE, ERROR_CORRUPT_SYSTEM_FILE);
+ cmp2(STATUS_SYSTEM_IMAGE_BAD_SIGNATURE, ERROR_SYSTEM_IMAGE_BAD_SIGNATURE);
+ cmp2(STATUS_CRASH_DUMP, ERROR_CRASH_DUMP);
+ cmp2(STATUS_LONGJUMP, ERROR_LONGJUMP);
+ cmp2(STATUS_UNWIND_CONSOLIDATE, ERROR_UNWIND_CONSOLIDATE);
cmp2(STATUS_UNHANDLED_EXCEPTION, ERROR_UNHANDLED_EXCEPTION);
+ cmp2(STATUS_MCA_OCCURED, ERROR_MCA_OCCURED);
cmp2(STATUS_APP_INIT_FAILURE, ERROR_APP_INIT_FAILURE);
- cmp2(STATUS_NO_PAGEFILE, ERROR_NO_PAGEFILE);
cmp2(STATUS_ILLEGAL_FLOAT_CONTEXT, ERROR_ILLEGAL_FLOAT_CONTEXT);
+ cmp2(STATUS_FLOAT_MULTIPLE_FAULTS, ERROR_FLOAT_MULTIPLE_FAULTS);
+ cmp2(STATUS_FLOAT_MULTIPLE_TRAPS, ERROR_FLOAT_MULTIPLE_TRAPS);
cmp2(STATUS_NO_EVENT_PAIR, ERROR_NO_EVENT_PAIR);
cmp2(STATUS_DOMAIN_CTRLR_CONFIG_ERROR, ERROR_DOMAIN_CTRLR_CONFIG_ERROR);
cmp(STATUS_IO_DEVICE_ERROR, ERROR_IO_DEVICE);
@@ -555,6 +678,8 @@
cmp(STATUS_DRIVER_INTERNAL_ERROR, ERROR_IO_DEVICE);
cmp(STATUS_INVALID_DEVICE_STATE, ERROR_BAD_COMMAND);
cmp(STATUS_DEVICE_CONFIGURATION_ERROR, ERROR_INVALID_PARAMETER);
+ cmp2(STATUS_DEVICE_ENUMERATION_ERROR, ERROR_DEVICE_ENUMERATION_ERROR);
+ cmp2(STATUS_INVALID_DEVICE_OBJECT_PARAMETER, ERROR_INVALID_DEVICE_OBJECT_PARAMETER);
cmp2(STATUS_SOURCE_ELEMENT_EMPTY, ERROR_SOURCE_ELEMENT_EMPTY);
cmp2(STATUS_DESTINATION_ELEMENT_FULL, ERROR_DESTINATION_ELEMENT_FULL);
cmp2(STATUS_ILLEGAL_ELEMENT_ADDRESS, ERROR_ILLEGAL_ELEMENT_ADDRESS);
@@ -575,7 +700,10 @@
cmp2(STATUS_NOT_EXPORT_FORMAT, ERROR_NOT_EXPORT_FORMAT);
cmp2(STATUS_FILE_ENCRYPTED, ERROR_FILE_ENCRYPTED);
cmp2(STATUS_EFS_ALG_BLOB_TOO_BIG, ERROR_EFS_ALG_BLOB_TOO_BIG);
+ cmp2(STATUS_BUFFER_ALL_ZEROS, ERROR_BUFFER_ALL_ZEROS);
cmp(STATUS_INVALID_USER_BUFFER, ERROR_INVALID_USER_BUFFER);
+ cmp2(STATUS_BAD_COMPRESSION_BUFFER, ERROR_BAD_COMPRESSION_BUFFER);
+ cmp2(STATUS_UNSUPPORTED_COMPRESSION, ERROR_UNSUPPORTED_COMPRESSION);
cmp(STATUS_SERIAL_NO_DEVICE_INITED, ERROR_SERIAL_NO_DEVICE);
cmp(STATUS_SHARED_IRQ_BUSY, ERROR_IRQ_BUSY);
cmp(STATUS_SERIAL_MORE_WRITES, ERROR_MORE_WRITES);
@@ -584,6 +712,7 @@
cmp(STATUS_FLOPPY_WRONG_CYLINDER, ERROR_FLOPPY_WRONG_CYLINDER);
cmp(STATUS_FLOPPY_UNKNOWN_ERROR, ERROR_FLOPPY_UNKNOWN_ERROR);
cmp(STATUS_FLOPPY_BAD_REGISTERS, ERROR_FLOPPY_BAD_REGISTERS);
+ cmp2(STATUS_FLOPPY_VOLUME, ERROR_FLOPPY_VOLUME);
cmp(STATUS_DISK_RECALIBRATE_FAILED, ERROR_DISK_RECALIBRATE_FAILED);
cmp(STATUS_DISK_OPERATION_FAILED, ERROR_DISK_OPERATION_FAILED);
cmp(STATUS_DISK_RESET_FAILED, ERROR_DISK_RESET_FAILED);
@@ -609,8 +738,14 @@
cmp(STATUS_TRANSACTION_INVALID_TYPE, ERROR_UNEXP_NET_ERR);
cmp(STATUS_NOT_SERVER_SESSION, ERROR_NOT_SUPPORTED);
cmp(STATUS_NOT_CLIENT_SESSION, ERROR_NOT_SUPPORTED);
+
cmp2(STATUS_CLIENT_SERVER_PARAMETERS_INVALID,ERROR_CLIENT_SERVER_PARAMETERS_INVALID);
cmp(STATUS_USER_MAPPED_FILE, ERROR_USER_MAPPED_FILE);
+ cmp2(STATUS_INVALID_HW_PROFILE, ERROR_INVALID_HW_PROFILE);
cmp(STATUS_PLUGPLAY_NO_DEVICE, ERROR_SERVICE_DISABLED);
+ cmp2(STATUS_PLUGPLAY_QUERY_VETOED, ERROR_PLUGPLAY_QUERY_VETOED);
+ cmp2(STATUS_INVALID_PLUGPLAY_DEVICE_PATH, ERROR_INVALID_PLUGPLAY_DEVICE_PATH);
+ cmp2(STATUS_PNP_RESTART_ENUMERATION, ERROR_PNP_RESTART_ENUMERATION);
+ cmp2(STATUS_PNP_REBOOT_REQUIRED, ERROR_PNP_REBOOT_REQUIRED);
cmp2(STATUS_WMI_GUID_NOT_FOUND, ERROR_WMI_GUID_NOT_FOUND);
cmp2(STATUS_WMI_INSTANCE_NOT_FOUND, ERROR_WMI_INSTANCE_NOT_FOUND);
cmp2(STATUS_WMI_ITEMID_NOT_FOUND, ERROR_WMI_ITEMID_NOT_FOUND);
@@ -815,6 +950,7 @@
cmp2(CRYPT_E_REVOCATION_OFFLINE, ERROR_MUTUAL_AUTH_FAILED);
cmp2(STATUS_SHUTDOWN_IN_PROGRESS, ERROR_SHUTDOWN_IN_PROGRESS);
cmp2(STATUS_SERVER_SHUTDOWN_IN_PROGRESS, ERROR_SERVER_SHUTDOWN_IN_PROGRESS);
+ cmp2(STATUS_SYSTEM_SHUTDOWN, ERROR_SYSTEM_SHUTDOWN);
cmp4(STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY, ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY,
1922);
cmp4(STATUS_DS_NO_ATTRIBUTE_OR_VALUE, ERROR_DS_NO_ATTRIBUTE_OR_VALUE, 1923);
cmp4(STATUS_DS_INVALID_ATTRIBUTE_SYNTAX, ERROR_DS_INVALID_ATTRIBUTE_SYNTAX,
1924);
@@ -857,6 +993,7 @@
cmp2(STATUS_SAM_NEED_BOOTKEY_FLOPPY, ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY);
cmp2(STATUS_DS_INIT_FAILURE_CONSOLE, ERROR_DS_INIT_FAILURE_CONSOLE);
cmp2(STATUS_DS_SAM_INIT_FAILURE_CONSOLE, ERROR_DS_SAM_INIT_FAILURE_CONSOLE);
+ cmp2(STATUS_DS_VERSION_CHECK_FAILURE, ERROR_DS_VERSION_CHECK_FAILURE);
cmp2(STATUS_UNFINISHED_CONTEXT_DELETED, SEC_E_UNFINISHED_CONTEXT_DELETED);
cmp2(STATUS_NO_TGT_REPLY, SEC_E_NO_TGT_REPLY);
cmp2(STATUS_NO_IP_ADDRESSES, SEC_E_NO_IP_ADDRESSES);
@@ -881,6 +1018,7 @@
cmp2(STATUS_NOT_SUPPORTED_ON_SBS, ERROR_NOT_SUPPORTED_ON_SBS);
cmp2(STATUS_DRIVER_BLOCKED_CRITICAL, ERROR_DRIVER_BLOCKED);
cmp2(STATUS_DRIVER_BLOCKED, ERROR_DRIVER_BLOCKED);
+ cmp2(STATUS_DRIVER_CANCEL_TIMEOUT, ERROR_DRIVER_CANCEL_TIMEOUT);
cmp2(STATUS_PRENT4_MACHINE_ACCOUNT,
ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4);
cmp2(STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER,ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER);
cmp2(STATUS_DS_SHUTTING_DOWN, ERROR_DS_SHUTTING_DOWN);
@@ -926,6 +1064,7 @@
cmp2(STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE, ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE);
cmp2(STATUS_CTX_SHADOW_NOT_RUNNING, ERROR_CTX_SHADOW_NOT_RUNNING);
cmp2(STATUS_LICENSE_VIOLATION, ERROR_CTX_LICENSE_NOT_AVAILABLE);
+ cmp2(STATUS_EVALUATION_EXPIRATION, ERROR_EVALUATION_EXPIRATION);
cmp2(STATUS_NETWORK_SESSION_EXPIRED, ERROR_NO_USER_SESSION_KEY);
cmp2(STATUS_FILES_OPEN, ERROR_OPEN_FILES);
cmp2(STATUS_SXS_SECTION_NOT_FOUND, ERROR_SXS_SECTION_NOT_FOUND);
@@ -968,6 +1107,7 @@
cmp2(STATUS_SXS_FILE_HASH_MISSING, ERROR_SXS_FILE_HASH_MISSING);
cmp2(STATUS_REDIRECTOR_STARTED, ERROR_SERVICE_ALREADY_RUNNING);
cmp2(STATUS_AUDITING_DISABLED, ERROR_AUDITING_DISABLED);
+ cmp2(STATUS_AUDIT_FAILED, ERROR_AUDIT_FAILED);
cmp2(STATUS_CLUSTER_NODE_ALREADY_UP, ERROR_CLUSTER_NODE_ALREADY_UP);
cmp2(STATUS_CLUSTER_NODE_ALREADY_DOWN, ERROR_CLUSTER_NODE_ALREADY_DOWN);
cmp2(STATUS_CLUSTER_NETWORK_ALREADY_ONLINE, ERROR_CLUSTER_NETWORK_ALREADY_ONLINE);
Modified: trunk/rostests/winetests/ntdll/file.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ntdll/file.c?re…
==============================================================================
--- trunk/rostests/winetests/ntdll/file.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/ntdll/file.c [iso-8859-1] Tue Jul 12 20:40:20 2016
@@ -704,7 +704,7 @@
apc_count = 0;
U(iosb).Status = 0xdeadbabe;
iosb.Information = 0xdeadbeef;
- ok( !is_signaled( read ), "read handle is not signaled\n" );
+ ok( !is_signaled( read ), "read handle is signaled\n" );
status = pNtReadFile( read, 0, apc, &apc_count, &iosb, buffer, 1, NULL, NULL
);
ok( status == STATUS_PENDING, "wrong status %x\n", status );
ok( !is_signaled( read ), "read handle is signaled\n" );
@@ -717,7 +717,7 @@
Sleep(1); /* FIXME: needed for wine to run the i/o apc */
ok( U(iosb).Status == 0, "wrong status %x\n", U(iosb).Status );
ok( iosb.Information == 1, "wrong info %lu\n", iosb.Information );
- ok( is_signaled( read ), "read handle is signaled\n" );
+ ok( is_signaled( read ), "read handle is not signaled\n" );
ok( !apc_count, "apc was called\n" );
apc_count = 0;
SleepEx( 1, FALSE ); /* non-alertable sleep */
@@ -758,7 +758,7 @@
ok(ret && written == 1, "WriteFile error %d\n", GetLastError());
/* partial read is good enough */
Sleep(1); /* FIXME: needed for wine to run the i/o apc */
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( U(iosb).Status == 0, "wrong status %x\n", U(iosb).Status );
ok( iosb.Information == 1, "wrong info %lu\n", iosb.Information );
ok( !apc_count, "apc was called\n" );
@@ -789,7 +789,7 @@
ok( status == STATUS_INVALID_HANDLE, "wrong status %x\n", status );
ok( U(iosb).Status == 0xdeadbabe, "wrong status %x\n", U(iosb).Status );
ok( iosb.Information == 0xdeadbeef, "wrong info %lu\n", iosb.Information
);
- ok( is_signaled( event ), "event is signaled\n" ); /* not reset on invalid
handle */
+ ok( is_signaled( event ), "event is not signaled\n" ); /* not reset on
invalid handle */
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
ok( !apc_count, "apc was called\n" );
@@ -809,7 +809,7 @@
Sleep(1); /* FIXME: needed for wine to run the i/o apc */
ok( U(iosb).Status == STATUS_PIPE_BROKEN, "wrong status %x\n",
U(iosb).Status );
ok( iosb.Information == 0, "wrong info %lu\n", iosb.Information );
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
ok( apc_count == 1, "apc was not called\n" );
@@ -834,7 +834,7 @@
Sleep(1); /* FIXME: needed for wine to run the i/o apc */
ok( U(iosb).Status == STATUS_CANCELLED, "wrong status %x\n", U(iosb).Status
);
ok( iosb.Information == 0, "wrong info %lu\n", iosb.Information );
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
ok( apc_count == 1, "apc was not called\n" );
@@ -860,7 +860,7 @@
Sleep(1); /* FIXME: needed for wine to run the i/o apc */
ok( U(iosb).Status == STATUS_CANCELLED, "wrong status %x\n", U(iosb).Status
);
ok( iosb.Information == 0, "wrong info %lu\n", iosb.Information );
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
ok( apc_count == 1, "apc was not called\n" );
@@ -886,7 +886,7 @@
Sleep(1); /* FIXME: needed for wine to run the i/o apc */
ok( U(iosb).Status == STATUS_CANCELLED, "wrong status %x\n",
U(iosb).Status );
ok( iosb.Information == 0, "wrong info %lu\n", iosb.Information );
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
ok( apc_count == 1, "apc was not called\n" );
@@ -912,7 +912,7 @@
Sleep(1); /* FIXME: needed for wine to run the i/o apc */
ok( U(iosb).Status == STATUS_CANCELLED, "wrong status %x\n",
U(iosb).Status );
ok( iosb.Information == 0, "wrong info %lu\n", iosb.Information );
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
ok( apc_count == 2, "apc was not called\n" );
@@ -933,7 +933,7 @@
if (status == STATUS_PENDING) WaitForSingleObject( event, 1000 );
ok( U(iosb).Status == STATUS_SUCCESS, "wrong status %x\n", U(iosb).Status
);
ok( iosb.Information == strlen(text), "wrong info %lu\n", iosb.Information
);
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
ok( apc_count == 1, "apc was not called\n" );
@@ -950,7 +950,7 @@
if (status == STATUS_PENDING) WaitForSingleObject( event, 1000 );
ok( U(iosb).Status == STATUS_SUCCESS, "wrong status %x\n", U(iosb).Status
);
ok( iosb.Information == strlen(text), "wrong info %lu\n", iosb.Information
);
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
ok( apc_count == 1, "apc was not called\n" );
@@ -967,7 +967,7 @@
WaitForSingleObject( event, 1000 );
ok( U(iosb).Status == STATUS_END_OF_FILE, "wrong status %x\n",
U(iosb).Status );
ok( iosb.Information == 0, "wrong info %lu\n", iosb.Information );
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
ok( apc_count == 1, "apc was not called\n" );
@@ -988,7 +988,7 @@
if (status == STATUS_PENDING) WaitForSingleObject( event, 1000 );
ok( U(iosb).Status == STATUS_SUCCESS, "wrong status %x\n", U(iosb).Status
);
ok( iosb.Information == strlen(text), "wrong info %lu\n", iosb.Information
);
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
ok( apc_count == 1, "apc was not called\n" );
@@ -1002,7 +1002,7 @@
ok( status == STATUS_SUCCESS, "wrong status %x\n", status );
ok( U(iosb).Status == STATUS_SUCCESS, "wrong status %x\n", U(iosb).Status
);
ok( iosb.Information == strlen(text), "wrong info %lu\n", iosb.Information
);
- ok( is_signaled( event ), "event is signaled\n" );
+ ok( is_signaled( event ), "event is not signaled\n" );
ok( !apc_count, "apc was called\n" );
SleepEx( 1, TRUE ); /* alertable sleep */
todo_wine ok( !apc_count, "apc was called\n" );
@@ -1164,39 +1164,6 @@
ok( hslot != 0, "Handle is invalid\n");
if ( rc == STATUS_SUCCESS ) pNtClose(hslot);
-
- /*
- * Test that the length field is checked properly
- */
- attr.Length = 0;
- rc = pNtCreateMailslotFile(&hslot, DesiredAccess,
- &attr, &IoStatusBlock, CreateOptions, MailslotQuota, MaxMessageSize,
- &TimeOut);
- todo_wine ok( rc == STATUS_INVALID_PARAMETER, "rc = %x not c000000d
STATUS_INVALID_PARAMETER\n", rc);
-
- if (rc == STATUS_SUCCESS) pNtClose(hslot);
-
- attr.Length = sizeof(OBJECT_ATTRIBUTES)+1;
- rc = pNtCreateMailslotFile(&hslot, DesiredAccess,
- &attr, &IoStatusBlock, CreateOptions, MailslotQuota, MaxMessageSize,
- &TimeOut);
- todo_wine ok( rc == STATUS_INVALID_PARAMETER, "rc = %x not c000000d
STATUS_INVALID_PARAMETER\n", rc);
-
- if (rc == STATUS_SUCCESS) pNtClose(hslot);
-
- /*
- * Test handling of a NULL unicode string in ObjectName
- */
- InitializeObjectAttributes(&attr, &str, OBJ_CASE_INSENSITIVE, 0, NULL);
- attr.ObjectName = NULL;
- rc = pNtCreateMailslotFile(&hslot, DesiredAccess,
- &attr, &IoStatusBlock, CreateOptions, MailslotQuota, MaxMessageSize,
- &TimeOut);
- ok( rc == STATUS_OBJECT_PATH_SYNTAX_BAD ||
- rc == STATUS_INVALID_PARAMETER,
- "rc = %x not STATUS_OBJECT_PATH_SYNTAX_BAD or
STATUS_INVALID_PARAMETER\n", rc);
-
- if (rc == STATUS_SUCCESS) pNtClose(hslot);
/*
* Test a valid call
@@ -4553,8 +4520,7 @@
dwret = NtQueryInformationFile(hJunction, &iosb, &new_attrib,
sizeof(new_attrib), FileBasicInformation);
ok(dwret == STATUS_SUCCESS, "Failed to get junction point folder's
attributes (0x%x).\n", dwret);
ok(old_attrib.LastAccessTime.QuadPart == new_attrib.LastAccessTime.QuadPart,
- "Junction point folder's access time does not match (0x%llx !=
0x%llx).\n",
- new_attrib.LastAccessTime.QuadPart, old_attrib.LastAccessTime.QuadPart);
+ "Junction point folder's access time does not match.\n");
CloseHandle(hJunction);
/* Check deleting a junction point as if it were a directory */
Modified: trunk/rostests/winetests/ntdll/pipe.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ntdll/pipe.c?re…
==============================================================================
--- trunk/rostests/winetests/ntdll/pipe.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/ntdll/pipe.c [iso-8859-1] Tue Jul 12 20:40:20 2016
@@ -126,7 +126,7 @@
attr.SecurityDescriptor = NULL;
attr.SecurityQualityOfService = NULL;
- timeout.QuadPart = -100000000000ll;
+ timeout.QuadPart = -100000000;
res = pNtCreateNamedPipeFile(handle, FILE_READ_ATTRIBUTES | SYNCHRONIZE, &attr,
&iosb, sharing, 2 /*FILE_CREATE*/,
options, 1, 0, 0, 0xFFFFFFFF, 500, 500, &timeout);
@@ -152,7 +152,7 @@
attr.SecurityDescriptor = NULL;
attr.SecurityQualityOfService = NULL;
- timeout.QuadPart = -100000000000ll;
+ timeout.QuadPart = -100000000;
/* create a pipe with FILE_OVERWRITE */
res = pNtCreateNamedPipeFile(&handle, FILE_READ_ATTRIBUTES | SYNCHRONIZE,
&attr, &iosb, FILE_SHARE_READ, 4 /*FILE_OVERWRITE*/,
@@ -277,10 +277,9 @@
ok(!res, "NtCreateNamedPipeFile returned %x\n", res);
memset(&iosb, 0x55, sizeof(iosb));
-
-/* try with event and apc */
res = listen_pipe(hPipe, hEvent, &iosb, TRUE);
ok(res == STATUS_PENDING, "NtFsControlFile returned %x\n", res);
+ ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n",
U(iosb).Status);
hClient = CreateFileW(testpipe, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0,
0);
ok(hClient != INVALID_HANDLE_VALUE, "can't open pipe, GetLastError:
%x\n", GetLastError());
@@ -294,9 +293,28 @@
ok(ioapc_called, "IOAPC didn't run\n");
- CloseHandle(hEvent);
CloseHandle(hPipe);
CloseHandle(hClient);
+
+ res = create_pipe(&hPipe, FILE_SHARE_READ | FILE_SHARE_WRITE, 0 /* OVERLAPPED
*/);
+ ok(!res, "NtCreateNamedPipeFile returned %x\n", res);
+
+ hClient = CreateFileW(testpipe, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0,
0);
+ ok(hClient != INVALID_HANDLE_VALUE || broken(GetLastError() == ERROR_PIPE_BUSY) /*
> Win 8 */,
+ "can't open pipe, GetLastError: %x\n", GetLastError());
+
+ if (hClient != INVALID_HANDLE_VALUE)
+ {
+ memset(&iosb, 0x55, sizeof(iosb));
+ res = listen_pipe(hPipe, hEvent, &iosb, TRUE);
+ ok(res == STATUS_PIPE_CONNECTED, "NtFsControlFile returned %x\n",
res);
+ ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n",
U(iosb).Status);
+
+ CloseHandle(hClient);
+ }
+
+ CloseHandle(hPipe);
+ CloseHandle(hEvent);
}
static BOOL userapc_called;
@@ -374,7 +392,7 @@
todo_wine ok(res == STATUS_CANCELLED, "NtFsControlFile returned %x\n",
res);
ok(userapc_called, "user apc didn't run\n");
- todo_wine ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to
%x\n", U(iosb).Status);
+ ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n",
U(iosb).Status);
ok(WaitForSingleObjectEx(hEvent, 0, TRUE) == WAIT_TIMEOUT, "hEvent
signaled\n");
ok(!ioapc_called, "IOAPC ran\n");
@@ -521,7 +539,7 @@
attr.SecurityDescriptor = NULL;
attr.SecurityQualityOfService = NULL;
- timeout.QuadPart = -100000000000ll;
+ timeout.QuadPart = -100000000;
/* test with INVALID_HANDLE_VALUE */
res = pNtQueryInformationFile(INVALID_HANDLE_VALUE, &iosb, &fpi, sizeof(fpi),
(FILE_INFORMATION_CLASS)23);
@@ -541,7 +559,8 @@
check_pipe_handle_state(hServer, 0, 1);
hClient = CreateFileW(testpipe, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0,
0);
- ok(hClient != INVALID_HANDLE_VALUE, "can't open pipe, GetLastError:
%x\n", GetLastError());
+ ok(hClient != INVALID_HANDLE_VALUE || broken(GetLastError() == ERROR_PIPE_BUSY) /*
> Win 8 */,
+ "can't open pipe, GetLastError: %x\n", GetLastError());
check_pipe_handle_state(hServer, 0, 1);
check_pipe_handle_state(hClient, 0, 0);
@@ -617,7 +636,8 @@
check_pipe_handle_state(hServer, 1, 0);
hClient = CreateFileW(testpipe, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0,
0);
- ok(hClient != INVALID_HANDLE_VALUE, "can't open pipe, GetLastError:
%x\n", GetLastError());
+ ok(hClient != INVALID_HANDLE_VALUE || broken(GetLastError() == ERROR_PIPE_BUSY) /*
> Win 8 */,
+ "can't open pipe, GetLastError: %x\n", GetLastError());
check_pipe_handle_state(hServer, 1, 0);
check_pipe_handle_state(hClient, 0, 0);
Modified: trunk/rostests/winetests/ntdll/reg.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ntdll/reg.c?rev…
==============================================================================
--- trunk/rostests/winetests/ntdll/reg.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/ntdll/reg.c [iso-8859-1] Tue Jul 12 20:40:20 2016
@@ -340,6 +340,7 @@
NTSTATUS status;
OBJECT_ATTRIBUTES attr;
ACCESS_MASK am = KEY_READ;
+ UNICODE_STRING str;
/* All NULL */
status = pNtOpenKey(NULL, 0, NULL);
@@ -360,6 +361,86 @@
attr.Length *= 2;
status = pNtOpenKey(&key, am, &attr);
ok(status == STATUS_INVALID_PARAMETER, "Expected STATUS_INVALID_PARAMETER, got:
0x%08x\n", status);
+
+ /* Zero accessmask */
+ attr.Length = sizeof(attr);
+ status = pNtOpenKey(&key, 0, &attr);
+todo_wine
+ ok(status == STATUS_ACCESS_DENIED, "Expected STATUS_ACCESS_DENIED, got:
0x%08x\n", status);
+ if (status == STATUS_SUCCESS) NtClose(key);
+
+ /* Calling without parent key requres full registry path. */
+ pRtlCreateUnicodeStringFromAsciiz( &str, "Machine" );
+ InitializeObjectAttributes(&attr, &str, 0, 0, 0);
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ todo_wine ok(status == STATUS_OBJECT_PATH_SYNTAX_BAD, "NtOpenKey Failed:
0x%08x\n", status);
+ pRtlFreeUnicodeString( &str );
+
+ /* Open is case sensitive unless OBJ_CASE_INSENSITIVE is specified. */
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Registry\\Machine" );
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ todo_wine ok(status == STATUS_OBJECT_PATH_NOT_FOUND, "NtOpenKey Failed:
0x%08x\n", status);
+
+ attr.Attributes = OBJ_CASE_INSENSITIVE;
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ ok(status == STATUS_SUCCESS, "NtOpenKey Failed: 0x%08x\n", status);
+ pNtClose(key);
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "" );
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ todo_wine
+ ok( status == STATUS_OBJECT_PATH_SYNTAX_BAD, "NtOpenKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\" );
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ todo_wine
+ ok( status == STATUS_OBJECT_TYPE_MISMATCH, "NtOpenKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Registry" );
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ todo_wine
+ ok( status == STATUS_SUCCESS, "NtOpenKey failed: 0x%08x\n", status );
+ pNtClose( key );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Registry\\" );
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ ok( status == STATUS_SUCCESS, "NtOpenKey failed: 0x%08x\n", status );
+ pNtClose( key );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Foobar" );
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ todo_wine
+ ok( status == STATUS_OBJECT_NAME_NOT_FOUND, "NtOpenKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Foobar\\Machine" );
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ todo_wine
+ ok( status == STATUS_OBJECT_PATH_NOT_FOUND, "NtOpenKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Machine\\Software\\Classes"
);
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ todo_wine
+ ok( status == STATUS_OBJECT_PATH_NOT_FOUND, "NtOpenKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "Machine\\Software\\Classes"
);
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ todo_wine
+ ok( status == STATUS_OBJECT_PATH_SYNTAX_BAD, "NtOpenKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Device\\Null" );
+ status = pNtOpenKey(&key, KEY_READ, &attr);
+ todo_wine
+ ok( status == STATUS_OBJECT_TYPE_MISMATCH, "NtOpenKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
if (!pNtOpenKeyEx)
{
@@ -454,6 +535,95 @@
pRtlFreeUnicodeString( &str );
pNtDeleteKey( subkey );
pNtClose( subkey );
+
+ attr.RootDirectory = 0;
+ attr.Attributes = OBJ_CASE_INSENSITIVE;
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ todo_wine
+ ok( status == STATUS_OBJECT_PATH_SYNTAX_BAD, "NtCreateKey failed:
0x%08x\n", status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ todo_wine
+ ok( status == STATUS_OBJECT_TYPE_MISMATCH, "NtCreateKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Registry" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ todo_wine
+ ok( status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED,
+ "NtCreateKey failed: 0x%08x\n", status );
+ if (!status) pNtClose( subkey );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Registry\\" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ ok( status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED,
+ "NtCreateKey failed: 0x%08x\n", status );
+ if (!status) pNtClose( subkey );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Foobar" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ todo_wine
+ ok( status == STATUS_OBJECT_NAME_NOT_FOUND, "NtCreateKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Foobar\\Machine" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ todo_wine
+ ok( status == STATUS_OBJECT_PATH_NOT_FOUND, "NtCreateKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Machine\\Software\\Classes"
);
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ todo_wine
+ ok( status == STATUS_OBJECT_PATH_NOT_FOUND, "NtCreateKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "Machine\\Software\\Classes"
);
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ todo_wine
+ ok( status == STATUS_OBJECT_PATH_SYNTAX_BAD, "NtCreateKey failed:
0x%08x\n", status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str, "\\Device\\Null" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ todo_wine
+ ok( status == STATUS_OBJECT_TYPE_MISMATCH, "NtCreateKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str,
"\\Registry\\Machine\\Software\\Classes" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ ok( status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED,
+ "NtCreateKey failed: 0x%08x\n", status );
+ if (!status) pNtClose( subkey );
+ pRtlFreeUnicodeString( &str );
+
+ /* the REGISTRY part is case-sensitive unless OBJ_CASE_INSENSITIVE is specified */
+ attr.Attributes = 0;
+ pRtlCreateUnicodeStringFromAsciiz( &str,
"\\Registry\\Machine\\Software\\Classes" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ todo_wine
+ ok( status == STATUS_OBJECT_PATH_NOT_FOUND, "NtCreateKey failed: 0x%08x\n",
status );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str,
"\\REGISTRY\\Machine\\Software\\Classes" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ ok( status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED,
+ "NtCreateKey failed: 0x%08x\n", status );
+ if (!status) pNtClose( subkey );
+ pRtlFreeUnicodeString( &str );
+
+ pRtlCreateUnicodeStringFromAsciiz( &str,
"\\REGISTRY\\MACHINE\\SOFTWARE\\CLASSES" );
+ status = pNtCreateKey( &subkey, am, &attr, 0, 0, 0, 0 );
+ ok( status == STATUS_SUCCESS || status == STATUS_ACCESS_DENIED,
+ "NtCreateKey failed: 0x%08x\n", status );
+ if (!status) pNtClose( subkey );
+ pRtlFreeUnicodeString( &str );
pNtClose(key);
}
@@ -639,7 +809,7 @@
ok(status == STATUS_SUCCESS, "NtSetValueKey Failed: 0x%08x\n", status);
status = pNtQueryValueKey(key, &ValName, KeyValuePartialInformation, &pi,
sizeof(pi), &len);
- ok(status == STATUS_SUCCESS, "NtQueryValueKey should have returned
STATUS_BUFFER_TOO_SMALL instead of 0x%08x\n", status);
+ ok(status == STATUS_SUCCESS, "NtQueryValueKey should have returned
STATUS_SUCCESS instead of 0x%08x\n", status);
ok(pi.Type == 0xff00ff00, "Type=%x\n", pi.Type);
ok(pi.DataLength == 0, "DataLength=%u\n", pi.DataLength);
pRtlFreeUnicodeString(&ValName);
@@ -1524,6 +1694,7 @@
pRtlCreateUnicodeStringFromAsciiz(&str, "test_subkey");
status = pNtCreateKey(&subkey, GENERIC_ALL, &attr, 0, 0, 0, 0);
ok(status == STATUS_SUCCESS, "NtCreateKey failed: 0x%08x\n", status);
+ pRtlFreeUnicodeString(&str);
status = pNtQueryKey(subkey, KeyCachedInformation, &cached_info,
sizeof(cached_info), &len);
ok(status == STATUS_SUCCESS, "NtQueryKey Failed: 0x%08x\n", status);
@@ -1544,11 +1715,13 @@
pRtlCreateUnicodeStringFromAsciiz(&str, "test_subkey2");
status = pNtCreateKey(&subkey2, GENERIC_ALL, &attr, 0, 0, 0, 0);
ok(status == STATUS_SUCCESS, "NtCreateKey failed: 0x%08x\n", status);
+ pRtlFreeUnicodeString(&str);
pRtlCreateUnicodeStringFromAsciiz(&str, "val");
dw = 64;
status = pNtSetValueKey( subkey, &str, 0, REG_DWORD, &dw, sizeof(dw) );
ok( status == STATUS_SUCCESS, "NtSetValueKey failed: 0x%08x\n", status );
+ pRtlFreeUnicodeString(&str);
if (!winetest_interactive)
skip("ROSTESTS-198: Causes an assert in Cm.\n");
@@ -1614,6 +1787,7 @@
pRtlCreateUnicodeStringFromAsciiz(&str, "test_subkey");
status = pNtCreateKey(&subkey, GENERIC_ALL, &attr, 0, 0, 0, 0);
ok(status == STATUS_SUCCESS, "NtCreateKey failed: 0x%08x\n", status);
+ pRtlFreeUnicodeString(&str);
status = pNtWaitForSingleObject(events[0], FALSE, &timeout);
ok(status == STATUS_SUCCESS, "NtWaitForSingleObject returned %x\n",
status);
@@ -1665,6 +1839,7 @@
pRtlCreateUnicodeStringFromAsciiz(&str, "test_subkey");
status = pNtCreateKey(&subkey, GENERIC_ALL, &attr, 0, 0, 0, 0);
ok(status == STATUS_SUCCESS, "NtCreateKey failed: 0x%08x\n", status);
+ pRtlFreeUnicodeString(&str);
status = pNtWaitForSingleObject(events[0], FALSE, &timeout);
ok(status == STATUS_SUCCESS, "NtWaitForSingleObject returned %x\n",
status);
Modified: trunk/rostests/winetests/ntdll/rtl.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ntdll/rtl.c?rev…
==============================================================================
--- trunk/rostests/winetests/ntdll/rtl.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/ntdll/rtl.c [iso-8859-1] Tue Jul 12 20:40:20 2016
@@ -26,6 +26,9 @@
#include "ntdll_test.h"
#include "inaddr.h"
#include "in6addr.h"
+#include "initguid.h"
+#define COBJMACROS
+#include "shobjidl.h"
#ifndef __WINE_WINTERNL_H
@@ -63,9 +66,6 @@
/* Function ptrs for ntdll calls */
static HMODULE hntdll = 0;
-static PVOID (WINAPI *pWinSqmStartSession)(PVOID unknown1, DWORD unknown2, DWORD
unknown3);
-static BOOL (WINAPI *pWinSqmIsOptedIn)(void);
-static NTSTATUS (WINAPI *pWinSqmEndSession)(PVOID unknown1);
static SIZE_T (WINAPI *pRtlCompareMemory)(LPCVOID,LPCVOID,SIZE_T);
static SIZE_T (WINAPI *pRtlCompareMemoryUlong)(PULONG, SIZE_T, ULONG);
static NTSTATUS (WINAPI *pRtlDeleteTimer)(HANDLE, HANDLE, HANDLE);
@@ -110,6 +110,8 @@
static NTSTATUS (WINAPI *pRtlCompressBuffer)(USHORT, const UCHAR*, ULONG, PUCHAR, ULONG,
ULONG, PULONG, PVOID);
static BOOL (WINAPI *pRtlIsCriticalSectionLocked)(CRITICAL_SECTION *);
static BOOL (WINAPI *pRtlIsCriticalSectionLockedByThread)(CRITICAL_SECTION *);
+static NTSTATUS (WINAPI *pRtlInitializeCriticalSectionEx)(CRITICAL_SECTION *, ULONG,
ULONG);
+static NTSTATUS (WINAPI *pRtlQueryPackageIdentity)(HANDLE, WCHAR*, SIZE_T*, WCHAR*,
SIZE_T*, BOOLEAN*);
static HMODULE hkernel32 = 0;
static BOOL (WINAPI *pIsWow64Process)(HANDLE, PBOOL);
@@ -127,9 +129,6 @@
hntdll = LoadLibraryA("ntdll.dll");
ok(hntdll != 0, "LoadLibrary failed\n");
if (hntdll) {
- pWinSqmStartSession = (void *)GetProcAddress(hntdll,
"WinSqmStartSession");
- pWinSqmIsOptedIn = (void *)GetProcAddress(hntdll, "WinSqmIsOptedIn");
- pWinSqmEndSession = (void *)GetProcAddress(hntdll,
"WinSqmEndSession");
pRtlCompareMemory = (void *)GetProcAddress(hntdll, "RtlCompareMemory");
pRtlCompareMemoryUlong = (void *)GetProcAddress(hntdll,
"RtlCompareMemoryUlong");
pRtlDeleteTimer = (void *)GetProcAddress(hntdll, "RtlDeleteTimer");
@@ -174,6 +173,8 @@
pRtlCompressBuffer = (void *)GetProcAddress(hntdll,
"RtlCompressBuffer");
pRtlIsCriticalSectionLocked = (void *)GetProcAddress(hntdll,
"RtlIsCriticalSectionLocked");
pRtlIsCriticalSectionLockedByThread = (void *)GetProcAddress(hntdll,
"RtlIsCriticalSectionLockedByThread");
+ pRtlInitializeCriticalSectionEx = (void *)GetProcAddress(hntdll,
"RtlInitializeCriticalSectionEx");
+ pRtlQueryPackageIdentity = (void *)GetProcAddress(hntdll,
"RtlQueryPackageIdentity");
}
hkernel32 = LoadLibraryA("kernel32.dll");
ok(hkernel32 != 0, "LoadLibrary failed\n");
@@ -183,48 +184,6 @@
strcpy((char*)src_aligned_block, src_src);
ok(strlen(src) == 15, "Source must be 16 bytes long!\n");
}
-
-#ifdef __i386__
-const char stdcall3_thunk[] =
- "\x56" /* push %esi */
- "\x89\xE6" /* mov %esp, %esi */
- "\xFF\x74\x24\x14" /* pushl 20(%esp) */
- "\xFF\x74\x24\x14" /* pushl 20(%esp) */
- "\xFF\x74\x24\x14" /* pushl 20(%esp) */
- "\xFF\x54\x24\x14" /* calll 20(%esp) */
- "\x89\xF0" /* mov %esi, %eax */
- "\x29\xE0" /* sub %esp, %eax */
- "\x89\xF4" /* mov %esi, %esp */
- "\x5E" /* pop %esi */
- "\xC2\x10\x00" /* ret $16 */
-;
-
-static INT (WINAPI *call_stdcall_func3)(PVOID func, PVOID arg0, DWORD arg1, DWORD arg2) =
NULL;
-
-static void test_WinSqm(void)
-{
- INT args;
-
- if (!pWinSqmStartSession)
- {
- win_skip("WinSqmStartSession() is not available\n");
- return;
- }
-
- call_stdcall_func3 = (void*) VirtualAlloc( NULL, sizeof(stdcall3_thunk) - 1,
MEM_COMMIT,
- PAGE_EXECUTE_READWRITE );
- memcpy( call_stdcall_func3, stdcall3_thunk, sizeof(stdcall3_thunk) - 1 );
-
- args = 3 - call_stdcall_func3( pWinSqmStartSession, NULL, 0, 0 ) / 4;
- ok(args == 3, "WinSqmStartSession expected to take %d arguments instead of
3\n", args);
- args = 3 - call_stdcall_func3( pWinSqmIsOptedIn, NULL, 0, 0 ) / 4;
- ok(args == 0, "WinSqmIsOptedIn expected to take %d arguments instead of
0\n", args);
- args = 3 - call_stdcall_func3( pWinSqmEndSession, NULL, 0, 0 ) / 4;
- ok(args == 1, "WinSqmEndSession expected to take %d arguments instead of
1\n", args);
-
- VirtualFree( call_stdcall_func3, 0, MEM_RELEASE );
-}
-#endif
#define COMP(str1,str2,cmplen,len) size = pRtlCompareMemory(str1, str2, cmplen); \
ok(size == len, "Expected %ld, got %ld\n", size, (SIZE_T)len)
@@ -2010,7 +1969,7 @@
ok(res == STATUS_SUCCESS, "[validate] res = 0x%08x, expected
STATUS_SUCCESS\n", res);
ok(len == (strlen(tests[i].address) + 1) && !strcmp(buffer,
tests[i].address),
- "got len %d with '%s' (expected %d with '%s')\n",
len, buffer, strlen(tests[i].address), tests[i].address);
+ "got len %d with '%s' (expected %d with '%s')\n",
len, buffer, (int)strlen(tests[i].address), tests[i].address);
}
}
@@ -3165,15 +3124,113 @@
DeleteCriticalSection(&info.crit);
}
+static void test_RtlInitializeCriticalSectionEx(void)
+{
+ static const CRITICAL_SECTION_DEBUG *no_debug = (void *)~(ULONG_PTR)0;
+ CRITICAL_SECTION cs;
+
+ if (!pRtlInitializeCriticalSectionEx)
+ {
+ win_skip("RtlInitializeCriticalSectionEx is not available\n");
+ return;
+ }
+
+ memset(&cs, 0x11, sizeof(cs));
+ pRtlInitializeCriticalSectionEx(&cs, 0, 0);
+ ok((cs.DebugInfo != NULL && cs.DebugInfo != no_debug) || broken(cs.DebugInfo
== no_debug) /* >= Win 8 */,
+ "expected DebugInfo != NULL and DebugInfo != ~0, got %p\n",
cs.DebugInfo);
+ ok(cs.LockCount == -1, "expected LockCount == -1, got %d\n",
cs.LockCount);
+ ok(cs.RecursionCount == 0, "expected RecursionCount == 0, got %d\n",
cs.RecursionCount);
+ ok(cs.LockSemaphore == NULL, "expected LockSemaphore == NULL, got %p\n",
cs.LockSemaphore);
+ ok(cs.SpinCount == 0 || broken(cs.SpinCount != 0) /* >= Win 8 */,
+ "expected SpinCount == 0, got %ld\n", cs.SpinCount);
+ RtlDeleteCriticalSection((PRTL_CRITICAL_SECTION)&cs);
+
+ memset(&cs, 0x11, sizeof(cs));
+ pRtlInitializeCriticalSectionEx(&cs, 0,
RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO);
+ todo_wine
+ ok(cs.DebugInfo == no_debug, "expected DebugInfo == ~0, got %p\n",
cs.DebugInfo);
+ ok(cs.LockCount == -1, "expected LockCount == -1, got %d\n",
cs.LockCount);
+ ok(cs.RecursionCount == 0, "expected RecursionCount == 0, got %d\n",
cs.RecursionCount);
+ ok(cs.LockSemaphore == NULL, "expected LockSemaphore == NULL, got %p\n",
cs.LockSemaphore);
+ ok(cs.SpinCount == 0 || broken(cs.SpinCount != 0) /* >= Win 8 */,
+ "expected SpinCount == 0, got %ld\n", cs.SpinCount);
+ RtlDeleteCriticalSection((PRTL_CRITICAL_SECTION)&cs);
+}
+
+static void test_RtlQueryPackageIdentity(void)
+{
+ const WCHAR programW[] =
{'M','i','c','r','o','s','o','f','t','.','W','i','n','d','o','w','s','.',
+
'P','h','o','t','o','s','_','8','w','e','k','y','b','3','d','8','b','b','w','e','!','A','p','p',0};
+ const WCHAR fullnameW[] =
{'M','i','c','r','o','s','o','f','t','.','W','i','n','d','o','w','s','.',
+
'P','h','o','t','o','s', 0};
+ const WCHAR appidW[] = {'A','p','p',0};
+ IApplicationActivationManager *manager;
+ WCHAR buf1[MAX_PATH], buf2[MAX_PATH];
+ HANDLE process, token;
+ SIZE_T size1, size2;
+ NTSTATUS status;
+ DWORD processid;
+ HRESULT hr;
+ BOOL ret;
+
+ if (!pRtlQueryPackageIdentity)
+ {
+ win_skip("RtlQueryPackageIdentity not available\n");
+ return;
+ }
+
+ size1 = size2 = MAX_PATH * sizeof(WCHAR);
+ status = pRtlQueryPackageIdentity((HANDLE)~(ULONG_PTR)3, buf1, &size1, buf2,
&size2, NULL);
+ ok(status == STATUS_NOT_FOUND, "expected STATUS_NOT_FOUND, got %08x\n",
status);
+
+ CoInitializeEx(0, COINIT_APARTMENTTHREADED);
+ hr = CoCreateInstance(&CLSID_ApplicationActivationManager, NULL,
CLSCTX_LOCAL_SERVER,
+ &IID_IApplicationActivationManager, (void
**)&manager);
+ if (FAILED(hr))
+ {
+ todo_wine win_skip("Failed to create ApplicationActivationManager
(%x)\n", hr);
+ goto done;
+ }
+
+ hr = IApplicationActivationManager_ActivateApplication(manager, programW, NULL,
+ AO_NOERRORUI,
&processid);
+ if (FAILED(hr))
+ {
+ todo_wine win_skip("Failed to start program (%x)\n", hr);
+ IApplicationActivationManager_Release(manager);
+ goto done;
+ }
+
+ process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_TERMINATE, FALSE,
processid);
+ ok(process != NULL, "OpenProcess failed with %u\n", GetLastError());
+ ret = OpenProcessToken(process, TOKEN_QUERY, &token);
+ ok(ret, "OpenProcessToken failed with error %u\n", GetLastError());
+
+ size1 = size2 = MAX_PATH * sizeof(WCHAR);
+ status = pRtlQueryPackageIdentity(token, buf1, &size1, buf2, &size2, NULL);
+ ok(status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n",
status);
+
+ ok(!memcmp(buf1, fullnameW, sizeof(fullnameW) - sizeof(WCHAR)),
+ "Expected buf1 to begin with %s, got %s\n", wine_dbgstr_w(fullnameW),
wine_dbgstr_w(buf1));
+ ok(size1 >= sizeof(WCHAR) && !(size1 % sizeof(WCHAR)), "Unexpected
size1 = %lu\n", size1);
+ ok(buf1[size1 / sizeof(WCHAR) - 1] == 0, "Expected buf1[%lu] == 0\n", size1
/ sizeof(WCHAR) - 1);
+
+ ok(!lstrcmpW(buf2, appidW), "Expected buf2 to be %s, got %s\n",
wine_dbgstr_w(appidW), wine_dbgstr_w(buf2));
+ ok(size2 >= sizeof(WCHAR) && !(size2 % sizeof(WCHAR)), "Unexpected
size2 = %lu\n", size2);
+ ok(buf2[size2 / sizeof(WCHAR) - 1] == 0, "Expected buf2[%lu] == 0\n", size2
/ sizeof(WCHAR) - 1);
+
+ CloseHandle(token);
+ TerminateProcess(process, 0);
+ CloseHandle(process);
+
+done:
+ CoUninitialize();
+}
+
START_TEST(rtl)
{
InitFunctionPtrs();
-
-#ifdef __i386__
- test_WinSqm();
-#else
- skip("stdcall-style parameter checks are not supported on this
platform.\n");
-#endif
test_RtlCompareMemory();
test_RtlCompareMemoryUlong();
@@ -3206,4 +3263,6 @@
test_RtlGetCompressionWorkSpaceSize();
test_RtlDecompressBuffer();
test_RtlIsCriticalSectionLocked();
-}
+ test_RtlInitializeCriticalSectionEx();
+ test_RtlQueryPackageIdentity();
+}
Modified: trunk/rostests/winetests/ntdll/rtlstr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ntdll/rtlstr.c?…
==============================================================================
--- trunk/rostests/winetests/ntdll/rtlstr.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/ntdll/rtlstr.c [iso-8859-1] Tue Jul 12 20:40:20 2016
@@ -41,6 +41,8 @@
static NTSTATUS (WINAPI *pRtlAppendUnicodeStringToString)(UNICODE_STRING *, const
UNICODE_STRING *);
static NTSTATUS (WINAPI *pRtlAppendUnicodeToString)(UNICODE_STRING *, LPCWSTR);
static NTSTATUS (WINAPI *pRtlCharToInteger)(PCSZ, ULONG, int *);
+static LONG (WINAPI *pRtlCompareUnicodeString)(const UNICODE_STRING*, const
UNICODE_STRING*, BOOLEAN);
+static LONG (WINAPI *pRtlCompareUnicodeStrings)(const WCHAR *,SIZE_T,const WCHAR
*,SIZE_T,BOOLEAN);
static VOID (WINAPI *pRtlCopyString)(STRING *, const STRING *);
static BOOLEAN (WINAPI *pRtlCreateUnicodeString)(PUNICODE_STRING, LPCWSTR);
static BOOLEAN (WINAPI *pRtlCreateUnicodeStringFromAsciiz)(PUNICODE_STRING, LPCSTR);
@@ -75,7 +77,6 @@
/*static VOID (WINAPI *pRtlCopyUnicodeString)(UNICODE_STRING *, const UNICODE_STRING
*);*/
/*static VOID (WINAPI *pRtlEraseUnicodeString)(UNICODE_STRING *);*/
/*static LONG (WINAPI *pRtlCompareString)(const STRING *,const STRING *,BOOLEAN);*/
-/*static LONG (WINAPI *pRtlCompareUnicodeString)(const UNICODE_STRING *,const
UNICODE_STRING *,BOOLEAN);*/
/*static BOOLEAN (WINAPI *pRtlEqualString)(const STRING *,const STRING *,BOOLEAN);*/
/*static BOOLEAN (WINAPI *pRtlPrefixString)(const STRING *, const STRING *, BOOLEAN);*/
/*static BOOLEAN (WINAPI *pRtlPrefixUnicodeString)(const UNICODE_STRING *, const
UNICODE_STRING *, BOOLEAN);*/
@@ -112,6 +113,8 @@
pRtlAppendUnicodeStringToString = (void *)GetProcAddress(hntdll,
"RtlAppendUnicodeStringToString");
pRtlAppendUnicodeToString = (void *)GetProcAddress(hntdll,
"RtlAppendUnicodeToString");
pRtlCharToInteger = (void *)GetProcAddress(hntdll, "RtlCharToInteger");
+ pRtlCompareUnicodeString = (void *)GetProcAddress(hntdll,
"RtlCompareUnicodeString");
+ pRtlCompareUnicodeStrings = (void *)GetProcAddress(hntdll,
"RtlCompareUnicodeStrings");
pRtlCopyString = (void *)GetProcAddress(hntdll, "RtlCopyString");
pRtlCreateUnicodeString = (void *)GetProcAddress(hntdll,
"RtlCreateUnicodeString");
pRtlCreateUnicodeStringFromAsciiz = (void *)GetProcAddress(hntdll,
"RtlCreateUnicodeStringFromAsciiz");
@@ -1856,6 +1859,36 @@
HeapFree(GetProcessHeap(), 0, be_unicode_no_controls);
}
+static void test_RtlCompareUnicodeString(void)
+{
+ WCHAR ch1, ch2;
+ UNICODE_STRING str1, str2;
+
+ str1.Buffer = &ch1;
+ str1.Length = str1.MaximumLength = sizeof(WCHAR);
+ str2.Buffer = &ch2;
+ str2.Length = str2.MaximumLength = sizeof(WCHAR);
+ for (ch1 = 0; ch1 < 512; ch1++)
+ {
+ for (ch2 = 0; ch2 < 1024; ch2++)
+ {
+ LONG res = pRtlCompareUnicodeString( &str1, &str2, FALSE );
+ ok( res == (ch1 - ch2), "wrong result %d %04x %04x\n", res, ch1,
ch2 );
+ res = pRtlCompareUnicodeString( &str1, &str2, TRUE );
+ ok( res == (pRtlUpcaseUnicodeChar(ch1) - pRtlUpcaseUnicodeChar(ch2)),
+ "wrong result %d %04x %04x\n", res, ch1, ch2 );
+ if (pRtlCompareUnicodeStrings)
+ {
+ res = pRtlCompareUnicodeStrings( &ch1, 1, &ch2, 1, FALSE );
+ ok( res == (ch1 - ch2), "wrong result %d %04x %04x\n", res,
ch1, ch2 );
+ res = pRtlCompareUnicodeStrings( &ch1, 1, &ch2, 1, TRUE );
+ ok( res == (pRtlUpcaseUnicodeChar(ch1) - pRtlUpcaseUnicodeChar(ch2)),
+ "wrong result %d %04x %04x\n", res, ch1, ch2 );
+ }
+ }
+ }
+}
+
static const WCHAR szGuid[] = {
'{','0','1','0','2','0','3','0','4','-',
'0','5','0','6','-'
,'0','7','0','8','-','0','9','0','A','-',
'0','B','0','C','0','D','0','E','0','F','0','A','}','\0'
};
@@ -2522,6 +2555,7 @@
test_RtlGUIDFromString();
test_RtlStringFromGUID();
test_RtlIsTextUnicode();
+ test_RtlCompareUnicodeString();
if(0)
{
test_RtlUpcaseUnicodeChar();