187 ok(
FALSE,
"Got an exception\n");
480 ok(*(
PULONG)BaseAddress2 == 2,
"Value in memory was wrong\n");
526 "got wrong Status: 0x%lx\n",
Status);
570 "got wrong Status: 0x%lx\n",
Status);
593 "got wrong Status: 0x%lx\n",
Status);
626 (
void)(*(
volatile char*)BaseAddress2);
642 ok(OldProtect == 0,
"Wrong protection returned: 0x%lx\n", OldProtect);
664 ok(BaseAddress2 ==
BaseAddress,
"Invalid base address: %p\n", BaseAddress2);
671 ok(BaseAddress2 ==
BaseAddress,
"Invalid base address: %p\n", BaseAddress2);
677 (
void)(*(
volatile char*)BaseAddress2);
690 *(
char*)BaseAddress2 = 1;
709 *(
char*)BaseAddress2 = 1;
739 PVOID DataBase, ImageBase;
744 StringCbCatW(TestDllPath,
sizeof(TestDllPath),
L"testdata\\test.dll");
750 ok(0,
"RtlDosPathNameToNtPathName_U failed\n");
784 skip(
"Failed to create data section\n");
806 skip(
"Failed to map view of data section\n");
813 ok(*(
ULONG*)DataBase == 0x00905a4d,
"Header not ok\n");
816 *(
ULONG*)DataBase = 0xdeadbabe;
817 ok(*(
ULONG*)DataBase == 0xdeadbabe,
"Header not ok\n");
821 "Data in .data section invalid: 0x%lx!\n", *(
ULONG*)((
PUCHAR)DataBase + 0x800));
836 *(
ULONG*)DataBase = 0x00905a4d;
853 skip(
"Failed to create image section\n");
879 skip(
"Failed to map view of image section\n");
887 ok(*(
ULONG*)DataBase == 0x00905a4d,
"Header not ok\n");
888 ok(*(
ULONG*)ImageBase == 0x00905a4d,
"Header not ok\n");
892 (*(
ULONG*)((
PUCHAR)ImageBase + 0x80000) == 0x12345678),
893 "Wrong value in data section: 0x%lx!\n", *(
ULONG*)((
PUCHAR)ImageBase + 0x80000));
896 *(
ULONG*)DataBase = 0xdeadbabe;
900 ok(*(
ULONG*)DataBase == 0xdeadbabe,
"Header not ok\n");
901 ok(*(
ULONG*)ImageBase == 0x00905a4d,
"Data should not be synced!\n");
903 (*(
ULONG*)((
PUCHAR)ImageBase + 0x80000) == 0x12345678),
904 "Wrong value in data section: 0x%lx!\n", *(
ULONG*)((
PUCHAR)ImageBase + 0x80000));
915 ok(*(
ULONG*)ImageBase == 0x00905a4d,
"Data should not be synced!\n");
917 (*(
ULONG*)((
PUCHAR)ImageBase + 0x80000) == 0x12345678),
918 "Wrong value in data section: 0x%lx!\n", *(
ULONG*)((
PUCHAR)ImageBase + 0x80000));
921 *(
ULONG*)DataBase = 0x00905a4d;
922 ok(*(
ULONG*)DataBase == 0x00905a4d,
"Header not ok\n");
939 skip(
"Failed to create image section\n");
965 skip(
"Failed to map view of image section\n");
986 DataBase = (
PUCHAR)ImageBase + 0x20000;
1014 ok(0,
"RtlDosPathNameToNtPathName_U failed\n");
1044 printf(
"Created image section with handle %p\n", ImageSectionHandle);
1063 printf(
"Mapped image section at %p, value in text section: %lx\n",
1064 ImageBase, *((
ULONG*)((
PCHAR)ImageBase + 0x1196)));
1086 HANDLE SectionHandle1, SectionHandle2;
1088 PVOID BaseAddress1, BaseAddress2;
1103 BaseAddress1 =
NULL;
1134 BaseAddress2 =
NULL;
1152 "Invalid addresses: BaseAddress1=%p, BaseAddress2=%p\n", BaseAddress1, BaseAddress2);
1154 "Invalid addresses: BaseAddress1=%p, BaseAddress2=%p\n", BaseAddress1, BaseAddress2);
1158 #define BYTES4(x) x, x, x, x 1159 #define BYTES8(x) BYTES4(x), BYTES4(x) 1160 #define BYTES16(x) BYTES8(x), BYTES8(x) 1161 #define BYTES32(x) BYTES16(x), BYTES16(x) 1162 #define BYTES64(x) BYTES32(x), BYTES32(x) 1163 #define BYTES128(x) BYTES64(x), BYTES64(x) 1164 #define BYTES256(x) BYTES128(x), BYTES128(x) 1165 #define BYTES512(x) BYTES256(x), BYTES256(x) 1166 #define BYTES1024(x) BYTES512(x), BYTES512(x) 1186 IMAGE_DOS_SIGNATURE, 144, 3, 0, 4, 0, 0xFFFF, 0, 0xB8, 0, 0, 0, 0x40,
1187 0, { 0 }, 0, 0, { 0 }, 0x80
1191 0x1F0E, 0x0EBA, 0xB400, 0xCD09, 0xB821, 0x4C01, 0x21CD, 0x6854, 0x7369,
1192 0x7020, 0x6F72, 0x7267, 0x6D61, 0x6320, 0x6E61, 0x6F6E, 0x2074, 0x6562,
1193 0x7220, 0x6E75, 0x6920, 0x206E, 0x4F44, 0x2053, 0x6F6D, 0x6564, 0x0D2E,
1194 0x0A0D, 0x0024, 0x0000, 0x0000, 0x0000
1329 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1448 #define TEST_BYTE(n, v) StartSeh() ok_hex(Bytes[n], v); EndSeh(STATUS_SUCCESS); 1449 #define TEST_WRITE(n) StartSeh() *(volatile UCHAR *)&Bytes[n] = Bytes[n]; EndSeh(STATUS_SUCCESS); 1450 #define TEST_NOWRITE(n) StartSeh() *(volatile UCHAR *)&Bytes[n] = Bytes[n]; EndSeh(STATUS_ACCESS_VIOLATION); 1507 IMAGE_DOS_SIGNATURE, 144, 3, 0, 4, 0, 0xFFFF, 0, 0xB8, 0, 0, 0, 0x40,
1508 0, { 0 }, 0, 0, { 0 }, 0x80
1512 0x1F0E, 0x0EBA, 0xB400, 0xCD09, 0xB821, 0x4C01, 0x21CD, 0x6854, 0x7369,
1513 0x7020, 0x6F72, 0x7267, 0x6D61, 0x6320, 0x6E61, 0x6F6E, 0x2074, 0x6562,
1514 0x7220, 0x6E75, 0x6920, 0x206E, 0x4F44, 0x2053, 0x6F6D, 0x6564, 0x0D2E,
1515 0x0A0D, 0x0024, 0x0000, 0x0000, 0x0000
1651 0xc3, 0, 0, 0, 0, 0, 0, 0,
1666 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
1687 0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01,
1729 if (TestNumber == 1)
1737 else if (TestNumber == 2)
1759 if (TestNumber == 2)
1803 #define TEST_BYTE(n, v) \ 1805 ok(Bytes[n] == v, "[%lu] Bytes[%u] = 0x%x, expected 0x%x\n", \ 1806 TestNumber, n, Bytes[n], v); \ 1807 EndSeh(STATUS_SUCCESS); 1922 ok(Written == 8,
"WriteFile wrote %lu bytes\n", Written);
1925 ok(Written == 6,
"SetFilePointer returned %lu bytes\n", Written);
1943 ok(
Length == 6,
"Old data was not properly erased! (Length=%lu)\n",
Length);
1948 ok(Written == 4,
"SetFilePointer returned %lu bytes\n", Written);
1957 ok(
Length == 6,
"Length should not have changed! (Length=%lu)\n",
Length);
1967 ok(Written == 4,
"SetFilePointer returned %lu bytes\n", Written);
#define ERROR_USER_MAPPED_FILE
IMAGE_SECTION_HEADER zdata_header
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR ZeroBits
NTSTATUS NTAPI NtUnmapViewOfSection(IN HANDLE ProcessHandle, IN PVOID BaseAddress)
#define STATUS_INSUFFICIENT_RESOURCES
_In_ ULONG _In_ ULONG _In_ ULONG Length
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
NTSTATUS NTAPI NtCreateSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection OPTIONAL, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL)
static void Test_Truncate(VOID)
ACPI_SIZE strlen(const char *String)
IMAGE_SECTION_HEADER text_header
BOOL WINAPI SetEndOfFile(HANDLE hFile)
NTSTATUS NTAPI NtProtectVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *UnsafeBaseAddress, IN OUT SIZE_T *UnsafeNumberOfBytesToProtect, IN ULONG NewAccessProtection, OUT PULONG UnsafeOldAccessProtection)
static struct _SECTION_CONTENTS_IMAGE_FILE SectionContentsImageFile
#define STATUS_INVALID_PARAMETER_9
#define IMAGE_NT_OPTIONAL_HDR32_MAGIC
#define IMAGE_SCN_MEM_READ
IMAGE_SECTION_HEADER text_header
C_ASSERT(FIELD_OFFSET(struct _SECTION_CONTENTS_IMAGE_FILE, text_data)==0x400)
#define INVALID_HANDLE_VALUE
DWORD WINAPI GetLastError(VOID)
#define IMAGE_DLLCHARACTERISTICS_NO_SEH
#define ok_hex(expression, result)
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
_In_ PWDFDEVICE_INIT _In_ PWDF_FILEOBJECT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
#define IMAGE_DOS_SIGNATURE
#define SECTION_ALL_ACCESS
#define STATUS_INVALID_PARAMETER_3
DWORD WINAPI GetTempPathW(IN DWORD count, OUT LPWSTR path)
static struct _RAW_SIZE_IMAGE_FILE RawSizeImageFile
static void Test_RawSize(ULONG TestNumber)
IMAGE_SECTION_HEADER rossym_header
#define STATUS_MAPPED_ALIGNMENT
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
NTSTATUS NTAPI NtMapViewOfSection(IN HANDLE SectionHandle, IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG_PTR ZeroBits, IN SIZE_T CommitSize, IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, IN OUT PSIZE_T ViewSize, IN SECTION_INHERIT InheritDisposition, IN ULONG AllocationType, IN ULONG Protect)
NTSTATUS NTAPI NtFlushVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T NumberOfBytesToFlush, OUT PIO_STATUS_BLOCK IoStatusBlock)
#define EXCEPTION_EXECUTE_HANDLER
#define IMAGE_SUBSYSTEM_WINDOWS_CUI
#define STATUS_SECTION_TOO_BIG
IMAGE_SECTION_HEADER rsrc_header
int __cdecl system(_In_opt_z_ const char *_Command)
void Test_ImageSection2(void)
#define IMAGE_FILE_LINE_NUMS_STRIPPED
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER SectionOffset
#define NtCurrentProcess()
#define IMAGE_NT_SIGNATURE
#define IMAGE_FILE_MACHINE_I386
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID * BaseAddress
#define STATUS_INVALID_IMAGE_NOT_MZ
#define IMAGE_SCN_CNT_INITIALIZED_DATA
#define STATUS_INVALID_IMAGE_FORMAT
#define NT_SUCCESS(StatCode)
UINT WINAPI GetTempFileNameW(IN LPCWSTR lpPathName, IN LPCWSTR lpPrefixString, IN UINT uUnique, OUT LPWSTR lpTempFileName)
void Test_PageFileSection(void)
#define IMAGE_FILE_EXECUTABLE_IMAGE
#define STATUS_SECTION_PROTECTION
#define STATUS_INVALID_FILE_FOR_SECTION
IMAGE_SECTION_HEADER data_header
IMAGE_NT_HEADERS32 nthdrs
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
#define IMAGE_SCN_MEM_WRITE
#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH
START_TEST(NtMapViewOfSection)
#define STATUS_COMMITMENT_LIMIT
#define IMAGE_SCN_CNT_CODE
#define IMAGE_FILE_LOCAL_SYMS_STRIPPED
const char * wine_dbgstr_wn(const WCHAR *str, int n)
#define IMAGE_SCN_CNT_UNINITIALIZED_DATA
#define STATUS_INVALID_PAGE_PROTECTION
void Test_ImageSection(void)
void Test_BasedSection(void)
#define STATUS_IMAGE_NOT_AT_BASE
#define IMAGE_SCN_TYPE_NOLOAD
struct _FileName FileName
#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
IMAGE_SECTION_HEADER clc_header
#define STATUS_INVALID_VIEW_SIZE
NTSTATUS NTAPI NtAllocateVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *UBaseAddress, IN ULONG_PTR ZeroBits, IN OUT PSIZE_T URegionSize, IN ULONG AllocationType, IN ULONG Protect)
#define STATUS_ACCESS_VIOLATION
IMAGE_SECTION_HEADER rsrc_header
#define FIELD_OFFSET(t, f)
static OUT PIO_STATUS_BLOCK IoStatusBlock
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER MaximumSize
#define FILE_SYNCHRONOUS_IO_NONALERT
#define ok_ntstatus(status, expected)
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T _Inout_opt_ PLARGE_INTEGER _Inout_ PSIZE_T ViewSize
#define STANDARD_RIGHTS_REQUIRED
#define InitializeObjectAttributes(p, n, a, r, s)
static void Test_EmptyFile(VOID)
IMAGE_NT_HEADERS32 nthdrs
#define _SEH2_EXCEPT(...)
#define PAGE_EXECUTE_READWRITE
#define _SEH2_GetExceptionCode()
#define STATUS_MAPPED_FILE_SIZE_ZERO
#define STATUS_INVALID_PARAMETER_4
static void Test_SectionContents(BOOL Relocate)
#define STATUS_CONFLICTING_ADDRESSES
#define STATUS_UNABLE_TO_DELETE_SECTION
NTSYSAPI BOOLEAN NTAPI RtlDosPathNameToNtPathName_U(_In_opt_z_ PCWSTR DosPathName, _Out_ PUNICODE_STRING NtPathName, _Out_opt_ PCWSTR *NtFileNamePart, _Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo)
#define IMAGE_SCN_MEM_EXECUTE
#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT
#define IMAGE_FILE_32BIT_MACHINE
NTSTATUS NTAPI NtFreeVirtualMemory(IN HANDLE ProcessHandle, IN PVOID *UBaseAddress, IN PSIZE_T URegionSize, IN ULONG FreeType)