/* File generated automatically from tools/winapi/tests.dat; do not edit! */
/* This file can be copied, modified and distributed without restriction. */

/*
 * Unit tests for data structure packing
 */

#define WINVER 0x0501
#define _WIN32_IE 0x0501
#define _WIN32_WINNT 0x0501

#define WINE_NOWINSOCK

#include "ntdll_test.h"

#include "wine/test.h"

/***********************************************************************
 * Compatibility macros
 */

#define DWORD_PTR UINT_PTR
#define LONG_PTR INT_PTR
#define ULONG_PTR UINT_PTR

/***********************************************************************
 * Windows API extension
 */

#if defined(_MSC_VER) && (_MSC_VER >= 1300) && defined(__cplusplus)
# define _TYPE_ALIGNMENT(type) __alignof(type)
#elif defined(__GNUC__)
# define _TYPE_ALIGNMENT(type) __alignof__(type)
#else
/*
 * FIXME: May not be possible without a compiler extension
 *        (if type is not just a name that is, otherwise the normal
 *         TYPE_ALIGNMENT can be used)
 */
#endif

#if defined(TYPE_ALIGNMENT) && defined(_MSC_VER) && _MSC_VER >= 800 && !defined(__cplusplus)
#pragma warning(disable:4116)
#endif

#if !defined(TYPE_ALIGNMENT) && defined(_TYPE_ALIGNMENT)
# define TYPE_ALIGNMENT _TYPE_ALIGNMENT
#endif

/***********************************************************************
 * Test helper macros
 */

#define TEST_TYPE_SIZE(type, size)             C_ASSERT(sizeof(type) == size);

#ifdef TYPE_ALIGNMENT
# define TEST_TYPE_ALIGN(type, align)          C_ASSERT(TYPE_ALIGNMENT(type) == align);
#else
# define TEST_TYPE_ALIGN(type, align)
#endif

#ifdef _TYPE_ALIGNMENT
# define TEST_TARGET_ALIGN(type, align)        C_ASSERT(_TYPE_ALIGNMENT(*(type)0) == align);
# define TEST_FIELD_ALIGN(type, field, align)  C_ASSERT(_TYPE_ALIGNMENT(((type*)0)->field) == align);
#else
# define TEST_TARGET_ALIGN(type, align)
# define TEST_FIELD_ALIGN(type, field, align)
#endif

#define TEST_FIELD_OFFSET(type, field, offset) C_ASSERT(FIELD_OFFSET(type, field) == offset);

#define TEST_TARGET_SIZE(type, size)            TEST_TYPE_SIZE(*(type)0, size)
#define TEST_FIELD_SIZE(type, field, size)      TEST_TYPE_SIZE((((type*)0)->field), size)
#define TEST_TYPE_SIGNED(type)                  C_ASSERT((type) -1 < 0);
#define TEST_TYPE_UNSIGNED(type)                C_ASSERT((type) -1 > 0);


#ifdef _WIN64

static void test_pack_DWORD32(void)
{
    /* DWORD32 */
    TEST_TYPE_SIZE   (DWORD32, 4)
    TEST_TYPE_ALIGN  (DWORD32, 4)
    TEST_TYPE_UNSIGNED(DWORD32)
}

static void test_pack_DWORD64(void)
{
    /* DWORD64 */
    TEST_TYPE_SIZE   (DWORD64, 8)
    TEST_TYPE_ALIGN  (DWORD64, 8)
    TEST_TYPE_UNSIGNED(DWORD64)
}

static void test_pack_DWORD_PTR(void)
{
    /* DWORD_PTR */
    TEST_TYPE_SIZE   (DWORD_PTR, 8)
    TEST_TYPE_ALIGN  (DWORD_PTR, 8)
}

static void test_pack_HALF_PTR(void)
{
    /* HALF_PTR */
    TEST_TYPE_SIZE   (HALF_PTR, 4)
    TEST_TYPE_ALIGN  (HALF_PTR, 4)
    TEST_TYPE_SIGNED(HALF_PTR)
}

static void test_pack_INT16(void)
{
    /* INT16 */
    TEST_TYPE_SIZE   (INT16, 2)
    TEST_TYPE_ALIGN  (INT16, 2)
    TEST_TYPE_SIGNED(INT16)
}

static void test_pack_INT32(void)
{
    /* INT32 */
    TEST_TYPE_SIZE   (INT32, 4)
    TEST_TYPE_ALIGN  (INT32, 4)
    TEST_TYPE_SIGNED(INT32)
}

static void test_pack_INT64(void)
{
    /* INT64 */
    TEST_TYPE_SIZE   (INT64, 8)
    TEST_TYPE_ALIGN  (INT64, 8)
    TEST_TYPE_SIGNED(INT64)
}

static void test_pack_INT8(void)
{
    /* INT8 */
    TEST_TYPE_SIZE   (INT8, 1)
    TEST_TYPE_ALIGN  (INT8, 1)
    TEST_TYPE_SIGNED(INT8)
}

static void test_pack_INT_PTR(void)
{
    /* INT_PTR */
    TEST_TYPE_SIZE   (INT_PTR, 8)
    TEST_TYPE_ALIGN  (INT_PTR, 8)
    TEST_TYPE_SIGNED(INT_PTR)
}

static void test_pack_LONG32(void)
{
    /* LONG32 */
    TEST_TYPE_SIZE   (LONG32, 4)
    TEST_TYPE_ALIGN  (LONG32, 4)
    TEST_TYPE_SIGNED(LONG32)
}

static void test_pack_LONG64(void)
{
    /* LONG64 */
    TEST_TYPE_SIZE   (LONG64, 8)
    TEST_TYPE_ALIGN  (LONG64, 8)
    TEST_TYPE_SIGNED(LONG64)
}

static void test_pack_LONG_PTR(void)
{
    /* LONG_PTR */
    TEST_TYPE_SIZE   (LONG_PTR, 8)
    TEST_TYPE_ALIGN  (LONG_PTR, 8)
    TEST_TYPE_SIGNED(LONG_PTR)
}

static void test_pack_SIZE_T(void)
{
    /* SIZE_T */
    TEST_TYPE_SIZE   (SIZE_T, 8)
    TEST_TYPE_ALIGN  (SIZE_T, 8)
}

static void test_pack_SSIZE_T(void)
{
    /* SSIZE_T */
    TEST_TYPE_SIZE   (SSIZE_T, 8)
    TEST_TYPE_ALIGN  (SSIZE_T, 8)
}

static void test_pack_UHALF_PTR(void)
{
    /* UHALF_PTR */
    TEST_TYPE_SIZE   (UHALF_PTR, 4)
    TEST_TYPE_ALIGN  (UHALF_PTR, 4)
    TEST_TYPE_UNSIGNED(UHALF_PTR)
}

static void test_pack_UINT16(void)
{
    /* UINT16 */
    TEST_TYPE_SIZE   (UINT16, 2)
    TEST_TYPE_ALIGN  (UINT16, 2)
    TEST_TYPE_UNSIGNED(UINT16)
}

static void test_pack_UINT32(void)
{
    /* UINT32 */
    TEST_TYPE_SIZE   (UINT32, 4)
    TEST_TYPE_ALIGN  (UINT32, 4)
    TEST_TYPE_UNSIGNED(UINT32)
}

static void test_pack_UINT64(void)
{
    /* UINT64 */
    TEST_TYPE_SIZE   (UINT64, 8)
    TEST_TYPE_ALIGN  (UINT64, 8)
    TEST_TYPE_UNSIGNED(UINT64)
}

static void test_pack_UINT8(void)
{
    /* UINT8 */
    TEST_TYPE_SIZE   (UINT8, 1)
    TEST_TYPE_ALIGN  (UINT8, 1)
    TEST_TYPE_UNSIGNED(UINT8)
}

static void test_pack_UINT_PTR(void)
{
    /* UINT_PTR */
    TEST_TYPE_SIZE   (UINT_PTR, 8)
    TEST_TYPE_ALIGN  (UINT_PTR, 8)
    TEST_TYPE_UNSIGNED(UINT_PTR)
}

static void test_pack_ULONG32(void)
{
    /* ULONG32 */
    TEST_TYPE_SIZE   (ULONG32, 4)
    TEST_TYPE_ALIGN  (ULONG32, 4)
    TEST_TYPE_UNSIGNED(ULONG32)
}

static void test_pack_ULONG64(void)
{
    /* ULONG64 */
    TEST_TYPE_SIZE   (ULONG64, 8)
    TEST_TYPE_ALIGN  (ULONG64, 8)
    TEST_TYPE_UNSIGNED(ULONG64)
}

static void test_pack_ULONG_PTR(void)
{
    /* ULONG_PTR */
    TEST_TYPE_SIZE   (ULONG_PTR, 8)
    TEST_TYPE_ALIGN  (ULONG_PTR, 8)
    TEST_TYPE_UNSIGNED(ULONG_PTR)
}

static void test_pack_ACCESS_ALLOWED_ACE(void)
{
    /* ACCESS_ALLOWED_ACE */
    TEST_TYPE_SIZE   (ACCESS_ALLOWED_ACE, 12)
    TEST_TYPE_ALIGN  (ACCESS_ALLOWED_ACE, 4)
    TEST_FIELD_SIZE  (ACCESS_ALLOWED_ACE, Header, 4)
    TEST_FIELD_ALIGN (ACCESS_ALLOWED_ACE, Header, 2)
    TEST_FIELD_OFFSET(ACCESS_ALLOWED_ACE, Header, 0)
    TEST_FIELD_SIZE  (ACCESS_ALLOWED_ACE, Mask, 4)
    TEST_FIELD_ALIGN (ACCESS_ALLOWED_ACE, Mask, 4)
    TEST_FIELD_OFFSET(ACCESS_ALLOWED_ACE, Mask, 4)
    TEST_FIELD_SIZE  (ACCESS_ALLOWED_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (ACCESS_ALLOWED_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart, 8)
}

static void test_pack_ACCESS_DENIED_ACE(void)
{
    /* ACCESS_DENIED_ACE */
    TEST_TYPE_SIZE   (ACCESS_DENIED_ACE, 12)
    TEST_TYPE_ALIGN  (ACCESS_DENIED_ACE, 4)
    TEST_FIELD_SIZE  (ACCESS_DENIED_ACE, Header, 4)
    TEST_FIELD_ALIGN (ACCESS_DENIED_ACE, Header, 2)
    TEST_FIELD_OFFSET(ACCESS_DENIED_ACE, Header, 0)
    TEST_FIELD_SIZE  (ACCESS_DENIED_ACE, Mask, 4)
    TEST_FIELD_ALIGN (ACCESS_DENIED_ACE, Mask, 4)
    TEST_FIELD_OFFSET(ACCESS_DENIED_ACE, Mask, 4)
    TEST_FIELD_SIZE  (ACCESS_DENIED_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (ACCESS_DENIED_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(ACCESS_DENIED_ACE, SidStart, 8)
}

static void test_pack_ACCESS_MASK(void)
{
    /* ACCESS_MASK */
    TEST_TYPE_SIZE   (ACCESS_MASK, 4)
    TEST_TYPE_ALIGN  (ACCESS_MASK, 4)
    TEST_TYPE_UNSIGNED(ACCESS_MASK)
}

static void test_pack_ACE_HEADER(void)
{
    /* ACE_HEADER */
    TEST_TYPE_SIZE   (ACE_HEADER, 4)
    TEST_TYPE_ALIGN  (ACE_HEADER, 2)
    TEST_FIELD_SIZE  (ACE_HEADER, AceType, 1)
    TEST_FIELD_ALIGN (ACE_HEADER, AceType, 1)
    TEST_FIELD_OFFSET(ACE_HEADER, AceType, 0)
    TEST_FIELD_SIZE  (ACE_HEADER, AceFlags, 1)
    TEST_FIELD_ALIGN (ACE_HEADER, AceFlags, 1)
    TEST_FIELD_OFFSET(ACE_HEADER, AceFlags, 1)
    TEST_FIELD_SIZE  (ACE_HEADER, AceSize, 2)
    TEST_FIELD_ALIGN (ACE_HEADER, AceSize, 2)
    TEST_FIELD_OFFSET(ACE_HEADER, AceSize, 2)
}

static void test_pack_ACL(void)
{
    /* ACL */
    TEST_TYPE_SIZE   (ACL, 8)
    TEST_TYPE_ALIGN  (ACL, 2)
    TEST_FIELD_SIZE  (ACL, AclRevision, 1)
    TEST_FIELD_ALIGN (ACL, AclRevision, 1)
    TEST_FIELD_OFFSET(ACL, AclRevision, 0)
    TEST_FIELD_SIZE  (ACL, Sbz1, 1)
    TEST_FIELD_ALIGN (ACL, Sbz1, 1)
    TEST_FIELD_OFFSET(ACL, Sbz1, 1)
    TEST_FIELD_SIZE  (ACL, AclSize, 2)
    TEST_FIELD_ALIGN (ACL, AclSize, 2)
    TEST_FIELD_OFFSET(ACL, AclSize, 2)
    TEST_FIELD_SIZE  (ACL, AceCount, 2)
    TEST_FIELD_ALIGN (ACL, AceCount, 2)
    TEST_FIELD_OFFSET(ACL, AceCount, 4)
    TEST_FIELD_SIZE  (ACL, Sbz2, 2)
    TEST_FIELD_ALIGN (ACL, Sbz2, 2)
    TEST_FIELD_OFFSET(ACL, Sbz2, 6)
}

static void test_pack_ACL_REVISION_INFORMATION(void)
{
    /* ACL_REVISION_INFORMATION */
    TEST_TYPE_SIZE   (ACL_REVISION_INFORMATION, 4)
    TEST_TYPE_ALIGN  (ACL_REVISION_INFORMATION, 4)
    TEST_FIELD_SIZE  (ACL_REVISION_INFORMATION, AclRevision, 4)
    TEST_FIELD_ALIGN (ACL_REVISION_INFORMATION, AclRevision, 4)
    TEST_FIELD_OFFSET(ACL_REVISION_INFORMATION, AclRevision, 0)
}

static void test_pack_ACL_SIZE_INFORMATION(void)
{
    /* ACL_SIZE_INFORMATION */
    TEST_TYPE_SIZE   (ACL_SIZE_INFORMATION, 12)
    TEST_TYPE_ALIGN  (ACL_SIZE_INFORMATION, 4)
    TEST_FIELD_SIZE  (ACL_SIZE_INFORMATION, AceCount, 4)
    TEST_FIELD_ALIGN (ACL_SIZE_INFORMATION, AceCount, 4)
    TEST_FIELD_OFFSET(ACL_SIZE_INFORMATION, AceCount, 0)
    TEST_FIELD_SIZE  (ACL_SIZE_INFORMATION, AclBytesInUse, 4)
    TEST_FIELD_ALIGN (ACL_SIZE_INFORMATION, AclBytesInUse, 4)
    TEST_FIELD_OFFSET(ACL_SIZE_INFORMATION, AclBytesInUse, 4)
    TEST_FIELD_SIZE  (ACL_SIZE_INFORMATION, AclBytesFree, 4)
    TEST_FIELD_ALIGN (ACL_SIZE_INFORMATION, AclBytesFree, 4)
    TEST_FIELD_OFFSET(ACL_SIZE_INFORMATION, AclBytesFree, 8)
}

static void test_pack_BOOLEAN(void)
{
    /* BOOLEAN */
    TEST_TYPE_SIZE   (BOOLEAN, 1)
    TEST_TYPE_ALIGN  (BOOLEAN, 1)
    TEST_TYPE_UNSIGNED(BOOLEAN)
}

static void test_pack_CCHAR(void)
{
    /* CCHAR */
    TEST_TYPE_SIZE   (CCHAR, 1)
    TEST_TYPE_ALIGN  (CCHAR, 1)
    TEST_TYPE_SIGNED(CCHAR)
}

static void test_pack_CHAR(void)
{
    /* CHAR */
    TEST_TYPE_SIZE   (CHAR, 1)
    TEST_TYPE_ALIGN  (CHAR, 1)
    TEST_TYPE_SIGNED(CHAR)
}

static void test_pack_DWORDLONG(void)
{
    /* DWORDLONG */
    TEST_TYPE_SIZE   (DWORDLONG, 8)
    TEST_TYPE_ALIGN  (DWORDLONG, 8)
    TEST_TYPE_UNSIGNED(DWORDLONG)
}

static void test_pack_EXCEPTION_POINTERS(void)
{
    /* EXCEPTION_POINTERS */
    TEST_TYPE_SIZE   (EXCEPTION_POINTERS, 16)
    TEST_TYPE_ALIGN  (EXCEPTION_POINTERS, 8)
    TEST_FIELD_SIZE  (EXCEPTION_POINTERS, ExceptionRecord, 8)
    TEST_FIELD_ALIGN (EXCEPTION_POINTERS, ExceptionRecord, 8)
    TEST_FIELD_OFFSET(EXCEPTION_POINTERS, ExceptionRecord, 0)
    TEST_FIELD_SIZE  (EXCEPTION_POINTERS, ContextRecord, 8)
    TEST_FIELD_ALIGN (EXCEPTION_POINTERS, ContextRecord, 8)
    TEST_FIELD_OFFSET(EXCEPTION_POINTERS, ContextRecord, 8)
}

static void test_pack_EXCEPTION_RECORD(void)
{
    /* EXCEPTION_RECORD */
    TEST_TYPE_SIZE   (EXCEPTION_RECORD, 152)
    TEST_TYPE_ALIGN  (EXCEPTION_RECORD, 8)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionCode, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionCode, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionCode, 0)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionFlags, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionFlags, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionFlags, 4)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionRecord, 8)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionRecord, 8)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionRecord, 8)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionAddress, 8)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionAddress, 8)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionAddress, 16)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, NumberParameters, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, NumberParameters, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, NumberParameters, 24)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionInformation, 120)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionInformation, 8)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionInformation, 32)
}

static void test_pack_EXECUTION_STATE(void)
{
    /* EXECUTION_STATE */
    TEST_TYPE_SIZE   (EXECUTION_STATE, 4)
    TEST_TYPE_ALIGN  (EXECUTION_STATE, 4)
    TEST_TYPE_UNSIGNED(EXECUTION_STATE)
}

static void test_pack_FLOATING_SAVE_AREA(void)
{
    /* FLOATING_SAVE_AREA */
    TEST_TYPE_SIZE   (FLOATING_SAVE_AREA, 112)
    TEST_TYPE_ALIGN  (FLOATING_SAVE_AREA, 4)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, ControlWord, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, ControlWord, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, ControlWord, 0)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, StatusWord, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, StatusWord, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, StatusWord, 4)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, TagWord, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, TagWord, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, TagWord, 8)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, ErrorOffset, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, ErrorOffset, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, ErrorOffset, 12)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, ErrorSelector, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, ErrorSelector, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, ErrorSelector, 16)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, DataOffset, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, DataOffset, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, DataOffset, 20)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, DataSelector, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, DataSelector, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, DataSelector, 24)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, RegisterArea, 80)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, RegisterArea, 1)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, RegisterArea, 28)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, Cr0NpxState, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, Cr0NpxState, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, Cr0NpxState, 108)
}

static void test_pack_FPO_DATA(void)
{
    /* FPO_DATA */
    TEST_TYPE_SIZE   (FPO_DATA, 16)
    TEST_TYPE_ALIGN  (FPO_DATA, 4)
    TEST_FIELD_SIZE  (FPO_DATA, ulOffStart, 4)
    TEST_FIELD_ALIGN (FPO_DATA, ulOffStart, 4)
    TEST_FIELD_OFFSET(FPO_DATA, ulOffStart, 0)
    TEST_FIELD_SIZE  (FPO_DATA, cbProcSize, 4)
    TEST_FIELD_ALIGN (FPO_DATA, cbProcSize, 4)
    TEST_FIELD_OFFSET(FPO_DATA, cbProcSize, 4)
    TEST_FIELD_SIZE  (FPO_DATA, cdwLocals, 4)
    TEST_FIELD_ALIGN (FPO_DATA, cdwLocals, 4)
    TEST_FIELD_OFFSET(FPO_DATA, cdwLocals, 8)
    TEST_FIELD_SIZE  (FPO_DATA, cdwParams, 2)
    TEST_FIELD_ALIGN (FPO_DATA, cdwParams, 2)
    TEST_FIELD_OFFSET(FPO_DATA, cdwParams, 12)
}

static void test_pack_GENERIC_MAPPING(void)
{
    /* GENERIC_MAPPING */
    TEST_TYPE_SIZE   (GENERIC_MAPPING, 16)
    TEST_TYPE_ALIGN  (GENERIC_MAPPING, 4)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericRead, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericRead, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericRead, 0)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericWrite, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericWrite, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericWrite, 4)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericExecute, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericExecute, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericExecute, 8)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericAll, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericAll, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericAll, 12)
}

static void test_pack_HANDLE(void)
{
    /* HANDLE */
    TEST_TYPE_SIZE   (HANDLE, 8)
    TEST_TYPE_ALIGN  (HANDLE, 8)
}

static void test_pack_HRESULT(void)
{
    /* HRESULT */
    TEST_TYPE_SIZE   (HRESULT, 4)
    TEST_TYPE_ALIGN  (HRESULT, 4)
}

static void test_pack_IMAGE_ARCHIVE_MEMBER_HEADER(void)
{
    /* IMAGE_ARCHIVE_MEMBER_HEADER */
    TEST_TYPE_SIZE   (IMAGE_ARCHIVE_MEMBER_HEADER, 60)
    TEST_TYPE_ALIGN  (IMAGE_ARCHIVE_MEMBER_HEADER, 1)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Name, 16)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Name, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Name, 0)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Date, 12)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Date, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Date, 16)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, UserID, 6)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, UserID, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, UserID, 28)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, GroupID, 6)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, GroupID, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, GroupID, 34)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Mode, 8)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Mode, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Mode, 40)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Size, 10)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Size, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Size, 48)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, EndHeader, 2)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, EndHeader, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, EndHeader, 58)
}

static void test_pack_IMAGE_AUX_SYMBOL(void)
{
    /* IMAGE_AUX_SYMBOL (pack 2) */
}

static void test_pack_IMAGE_BASE_RELOCATION(void)
{
    /* IMAGE_BASE_RELOCATION */
    TEST_TYPE_SIZE   (IMAGE_BASE_RELOCATION, 8)
    TEST_TYPE_ALIGN  (IMAGE_BASE_RELOCATION, 4)
    TEST_FIELD_SIZE  (IMAGE_BASE_RELOCATION, VirtualAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_BASE_RELOCATION, VirtualAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_BASE_RELOCATION, VirtualAddress, 0)
    TEST_FIELD_SIZE  (IMAGE_BASE_RELOCATION, SizeOfBlock, 4)
    TEST_FIELD_ALIGN (IMAGE_BASE_RELOCATION, SizeOfBlock, 4)
    TEST_FIELD_OFFSET(IMAGE_BASE_RELOCATION, SizeOfBlock, 4)
}

static void test_pack_IMAGE_BOUND_FORWARDER_REF(void)
{
    /* IMAGE_BOUND_FORWARDER_REF */
    TEST_TYPE_SIZE   (IMAGE_BOUND_FORWARDER_REF, 8)
    TEST_TYPE_ALIGN  (IMAGE_BOUND_FORWARDER_REF, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_FORWARDER_REF, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_BOUND_FORWARDER_REF, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_BOUND_FORWARDER_REF, TimeDateStamp, 0)
    TEST_FIELD_SIZE  (IMAGE_BOUND_FORWARDER_REF, OffsetModuleName, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_FORWARDER_REF, OffsetModuleName, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_FORWARDER_REF, OffsetModuleName, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_FORWARDER_REF, Reserved, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_FORWARDER_REF, Reserved, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_FORWARDER_REF, Reserved, 6)
}

static void test_pack_IMAGE_BOUND_IMPORT_DESCRIPTOR(void)
{
    /* IMAGE_BOUND_IMPORT_DESCRIPTOR */
    TEST_TYPE_SIZE   (IMAGE_BOUND_IMPORT_DESCRIPTOR, 8)
    TEST_TYPE_ALIGN  (IMAGE_BOUND_IMPORT_DESCRIPTOR, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_IMPORT_DESCRIPTOR, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_BOUND_IMPORT_DESCRIPTOR, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_BOUND_IMPORT_DESCRIPTOR, TimeDateStamp, 0)
    TEST_FIELD_SIZE  (IMAGE_BOUND_IMPORT_DESCRIPTOR, OffsetModuleName, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_IMPORT_DESCRIPTOR, OffsetModuleName, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_IMPORT_DESCRIPTOR, OffsetModuleName, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_IMPORT_DESCRIPTOR, NumberOfModuleForwarderRefs, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_IMPORT_DESCRIPTOR, NumberOfModuleForwarderRefs, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_IMPORT_DESCRIPTOR, NumberOfModuleForwarderRefs, 6)
}

static void test_pack_IMAGE_COFF_SYMBOLS_HEADER(void)
{
    /* IMAGE_COFF_SYMBOLS_HEADER */
    TEST_TYPE_SIZE   (IMAGE_COFF_SYMBOLS_HEADER, 32)
    TEST_TYPE_ALIGN  (IMAGE_COFF_SYMBOLS_HEADER, 4)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, NumberOfSymbols, 0)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstSymbol, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstSymbol, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstSymbol, 4)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, NumberOfLinenumbers, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, NumberOfLinenumbers, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, NumberOfLinenumbers, 8)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstLinenumber, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstLinenumber, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstLinenumber, 12)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfCode, 16)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfCode, 20)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfData, 24)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfData, 28)
}

static void test_pack_IMAGE_DATA_DIRECTORY(void)
{
    /* IMAGE_DATA_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_DATA_DIRECTORY, 8)
    TEST_TYPE_ALIGN  (IMAGE_DATA_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_DATA_DIRECTORY, VirtualAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_DATA_DIRECTORY, VirtualAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_DATA_DIRECTORY, VirtualAddress, 0)
    TEST_FIELD_SIZE  (IMAGE_DATA_DIRECTORY, Size, 4)
    TEST_FIELD_ALIGN (IMAGE_DATA_DIRECTORY, Size, 4)
    TEST_FIELD_OFFSET(IMAGE_DATA_DIRECTORY, Size, 4)
}

static void test_pack_IMAGE_DEBUG_DIRECTORY(void)
{
    /* IMAGE_DEBUG_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_DEBUG_DIRECTORY, 28)
    TEST_TYPE_ALIGN  (IMAGE_DEBUG_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, Characteristics, 0)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, Type, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, Type, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, Type, 12)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, SizeOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, SizeOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, SizeOfData, 16)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, AddressOfRawData, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, AddressOfRawData, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, AddressOfRawData, 20)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, PointerToRawData, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, PointerToRawData, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, PointerToRawData, 24)
}

static void test_pack_IMAGE_DEBUG_MISC(void)
{
    /* IMAGE_DEBUG_MISC */
    TEST_TYPE_SIZE   (IMAGE_DEBUG_MISC, 16)
    TEST_TYPE_ALIGN  (IMAGE_DEBUG_MISC, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, DataType, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, DataType, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, DataType, 0)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Length, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Length, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Length, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Unicode, 1)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Unicode, 1)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Unicode, 8)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Reserved, 3)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Reserved, 1)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Reserved, 9)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Data, 1)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Data, 1)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Data, 12)
}

static void test_pack_IMAGE_DOS_HEADER(void)
{
    /* IMAGE_DOS_HEADER (pack 2) */
    TEST_TYPE_SIZE   (IMAGE_DOS_HEADER, 64)
    TEST_TYPE_ALIGN  (IMAGE_DOS_HEADER, 2)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_magic, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_magic, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_magic, 0)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cblp, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cblp, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cblp, 2)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cp, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cp, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cp, 4)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_crlc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_crlc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_crlc, 6)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cparhdr, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cparhdr, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cparhdr, 8)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_minalloc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_minalloc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_minalloc, 10)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_maxalloc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_maxalloc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_maxalloc, 12)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_ss, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_ss, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_ss, 14)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_sp, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_sp, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_sp, 16)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_csum, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_csum, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_csum, 18)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_ip, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_ip, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_ip, 20)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cs, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cs, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cs, 22)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_lfarlc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_lfarlc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_lfarlc, 24)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_ovno, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_ovno, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_ovno, 26)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_res, 8)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_res, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_res, 28)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_oemid, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_oemid, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_oemid, 36)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_oeminfo, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_oeminfo, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_oeminfo, 38)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_res2, 20)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_res2, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_res2, 40)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_lfanew, 4)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_lfanew, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_lfanew, 60)
}

static void test_pack_IMAGE_EXPORT_DIRECTORY(void)
{
    /* IMAGE_EXPORT_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_EXPORT_DIRECTORY, 40)
    TEST_TYPE_ALIGN  (IMAGE_EXPORT_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, Characteristics, 0)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, Name, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, Name, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, Name, 12)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, Base, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, Base, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, Base, 16)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, NumberOfFunctions, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, NumberOfFunctions, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, NumberOfFunctions, 20)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, NumberOfNames, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, NumberOfNames, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, NumberOfNames, 24)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, AddressOfFunctions, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, AddressOfFunctions, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, AddressOfFunctions, 28)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, AddressOfNames, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, AddressOfNames, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, AddressOfNames, 32)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, AddressOfNameOrdinals, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, AddressOfNameOrdinals, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, AddressOfNameOrdinals, 36)
}

static void test_pack_IMAGE_FILE_HEADER(void)
{
    /* IMAGE_FILE_HEADER */
    TEST_TYPE_SIZE   (IMAGE_FILE_HEADER, 20)
    TEST_TYPE_ALIGN  (IMAGE_FILE_HEADER, 4)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, Machine, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, Machine, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, Machine, 0)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, NumberOfSections, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, NumberOfSections, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, NumberOfSections, 2)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, PointerToSymbolTable, 4)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, PointerToSymbolTable, 4)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, PointerToSymbolTable, 8)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, NumberOfSymbols, 12)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, SizeOfOptionalHeader, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, SizeOfOptionalHeader, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, SizeOfOptionalHeader, 16)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, Characteristics, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, Characteristics, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, Characteristics, 18)
}

static void test_pack_IMAGE_FUNCTION_ENTRY(void)
{
    /* IMAGE_FUNCTION_ENTRY */
    TEST_TYPE_SIZE   (IMAGE_FUNCTION_ENTRY, 12)
    TEST_TYPE_ALIGN  (IMAGE_FUNCTION_ENTRY, 4)
    TEST_FIELD_SIZE  (IMAGE_FUNCTION_ENTRY, StartingAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_FUNCTION_ENTRY, StartingAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_FUNCTION_ENTRY, StartingAddress, 0)
    TEST_FIELD_SIZE  (IMAGE_FUNCTION_ENTRY, EndingAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_FUNCTION_ENTRY, EndingAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_FUNCTION_ENTRY, EndingAddress, 4)
    TEST_FIELD_SIZE  (IMAGE_FUNCTION_ENTRY, EndOfPrologue, 4)
    TEST_FIELD_ALIGN (IMAGE_FUNCTION_ENTRY, EndOfPrologue, 4)
    TEST_FIELD_OFFSET(IMAGE_FUNCTION_ENTRY, EndOfPrologue, 8)
}

static void test_pack_IMAGE_IMPORT_BY_NAME(void)
{
    /* IMAGE_IMPORT_BY_NAME */
    TEST_TYPE_SIZE   (IMAGE_IMPORT_BY_NAME, 4)
    TEST_TYPE_ALIGN  (IMAGE_IMPORT_BY_NAME, 2)
    TEST_FIELD_SIZE  (IMAGE_IMPORT_BY_NAME, Hint, 2)
    TEST_FIELD_ALIGN (IMAGE_IMPORT_BY_NAME, Hint, 2)
    TEST_FIELD_OFFSET(IMAGE_IMPORT_BY_NAME, Hint, 0)
    TEST_FIELD_SIZE  (IMAGE_IMPORT_BY_NAME, Name, 1)
    TEST_FIELD_ALIGN (IMAGE_IMPORT_BY_NAME, Name, 1)
    TEST_FIELD_OFFSET(IMAGE_IMPORT_BY_NAME, Name, 2)
}

static void test_pack_IMAGE_IMPORT_DESCRIPTOR(void)
{
    /* IMAGE_IMPORT_DESCRIPTOR */
}

static void test_pack_IMAGE_LINENUMBER(void)
{
    /* IMAGE_LINENUMBER (pack 2) */
}

static void test_pack_IMAGE_LOAD_CONFIG_DIRECTORY(void)
{
    /* IMAGE_LOAD_CONFIG_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_LOAD_CONFIG_DIRECTORY, 88)
    TEST_TYPE_ALIGN  (IMAGE_LOAD_CONFIG_DIRECTORY, 8)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, Size, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, Size, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, Size, 0)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsClear, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsClear, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsClear, 12)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsSet, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsSet, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsSet, 16)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 20)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 24)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitTotalFreeThreshold, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitTotalFreeThreshold, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitTotalFreeThreshold, 28)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, LockPrefixTable, 8)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, LockPrefixTable, 8)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, LockPrefixTable, 32)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, MaximumAllocationSize, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, MaximumAllocationSize, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, MaximumAllocationSize, 40)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, VirtualMemoryThreshold, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, VirtualMemoryThreshold, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, VirtualMemoryThreshold, 44)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessHeapFlags, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessHeapFlags, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, ProcessHeapFlags, 48)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessAffinityMask, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessAffinityMask, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, ProcessAffinityMask, 52)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, CSDVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, CSDVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, CSDVersion, 56)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, Reserved1, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, Reserved1, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, Reserved1, 58)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, EditList, 8)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, EditList, 8)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, EditList, 64)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie, 72)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerTable, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerTable, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerTable, 76)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 80)
}

static void test_pack_IMAGE_NT_HEADERS(void)
{
    /* IMAGE_NT_HEADERS */
    TEST_TYPE_SIZE   (IMAGE_NT_HEADERS, 264)
    TEST_TYPE_ALIGN  (IMAGE_NT_HEADERS, 8)
}

static void test_pack_IMAGE_NT_HEADERS32(void)
{
    /* IMAGE_NT_HEADERS32 */
    TEST_TYPE_SIZE   (IMAGE_NT_HEADERS32, 248)
    TEST_TYPE_ALIGN  (IMAGE_NT_HEADERS32, 4)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS32, Signature, 4)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS32, Signature, 4)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS32, Signature, 0)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS32, FileHeader, 20)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS32, FileHeader, 4)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS32, FileHeader, 4)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS32, OptionalHeader, 224)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS32, OptionalHeader, 4)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS32, OptionalHeader, 24)
}

static void test_pack_IMAGE_NT_HEADERS64(void)
{
    /* IMAGE_NT_HEADERS64 */
    TEST_TYPE_SIZE   (IMAGE_NT_HEADERS64, 264)
    TEST_TYPE_ALIGN  (IMAGE_NT_HEADERS64, 8)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS64, Signature, 4)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS64, Signature, 4)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS64, Signature, 0)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS64, FileHeader, 20)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS64, FileHeader, 4)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS64, FileHeader, 4)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS64, OptionalHeader, 240)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS64, OptionalHeader, 8)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS64, OptionalHeader, 24)
}

static void test_pack_IMAGE_OPTIONAL_HEADER(void)
{
    /* IMAGE_OPTIONAL_HEADER */
    TEST_TYPE_SIZE   (IMAGE_OPTIONAL_HEADER, 240)
    TEST_TYPE_ALIGN  (IMAGE_OPTIONAL_HEADER, 8)
}

static void test_pack_IMAGE_OPTIONAL_HEADER32(void)
{
    /* IMAGE_OPTIONAL_HEADER32 */
    TEST_TYPE_SIZE   (IMAGE_OPTIONAL_HEADER32, 224)
    TEST_TYPE_ALIGN  (IMAGE_OPTIONAL_HEADER32, 4)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, Magic, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, Magic, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, Magic, 0)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MajorLinkerVersion, 1)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MajorLinkerVersion, 1)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MajorLinkerVersion, 2)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MinorLinkerVersion, 1)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MinorLinkerVersion, 1)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MinorLinkerVersion, 3)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfCode, 4)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfInitializedData, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfInitializedData, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfInitializedData, 8)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfUninitializedData, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfUninitializedData, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfUninitializedData, 12)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, AddressOfEntryPoint, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, AddressOfEntryPoint, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, AddressOfEntryPoint, 16)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, BaseOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, BaseOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, BaseOfCode, 20)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, BaseOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, BaseOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, BaseOfData, 24)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, ImageBase, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, ImageBase, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, ImageBase, 28)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SectionAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SectionAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SectionAlignment, 32)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, FileAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, FileAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, FileAlignment, 36)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MajorOperatingSystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MajorOperatingSystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MajorOperatingSystemVersion, 40)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MinorOperatingSystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MinorOperatingSystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MinorOperatingSystemVersion, 42)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MajorImageVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MajorImageVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MajorImageVersion, 44)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MinorImageVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MinorImageVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MinorImageVersion, 46)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MajorSubsystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MajorSubsystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MajorSubsystemVersion, 48)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MinorSubsystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MinorSubsystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MinorSubsystemVersion, 50)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, Win32VersionValue, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, Win32VersionValue, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, Win32VersionValue, 52)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfImage, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfImage, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfImage, 56)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfHeaders, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfHeaders, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfHeaders, 60)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, CheckSum, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, CheckSum, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, CheckSum, 64)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, Subsystem, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, Subsystem, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, Subsystem, 68)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, DllCharacteristics, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, DllCharacteristics, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, DllCharacteristics, 70)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfStackReserve, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfStackReserve, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfStackReserve, 72)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfStackCommit, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfStackCommit, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfStackCommit, 76)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfHeapReserve, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfHeapReserve, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfHeapReserve, 80)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfHeapCommit, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfHeapCommit, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfHeapCommit, 84)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, LoaderFlags, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, LoaderFlags, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, LoaderFlags, 88)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, NumberOfRvaAndSizes, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, NumberOfRvaAndSizes, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, NumberOfRvaAndSizes, 92)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, DataDirectory, 128)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, DataDirectory, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, DataDirectory, 96)
}

static void test_pack_IMAGE_OPTIONAL_HEADER64(void)
{
    /* IMAGE_OPTIONAL_HEADER64 */
    TEST_TYPE_SIZE   (IMAGE_OPTIONAL_HEADER64, 240)
    TEST_TYPE_ALIGN  (IMAGE_OPTIONAL_HEADER64, 8)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, Magic, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, Magic, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, Magic, 0)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MajorLinkerVersion, 1)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MajorLinkerVersion, 1)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MajorLinkerVersion, 2)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MinorLinkerVersion, 1)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MinorLinkerVersion, 1)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MinorLinkerVersion, 3)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfCode, 4)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfInitializedData, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfInitializedData, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfInitializedData, 8)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfUninitializedData, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfUninitializedData, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfUninitializedData, 12)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, AddressOfEntryPoint, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, AddressOfEntryPoint, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, AddressOfEntryPoint, 16)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, BaseOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, BaseOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, BaseOfCode, 20)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, ImageBase, 8)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, ImageBase, 8)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, ImageBase, 24)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SectionAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SectionAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SectionAlignment, 32)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, FileAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, FileAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, FileAlignment, 36)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MajorOperatingSystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MajorOperatingSystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MajorOperatingSystemVersion, 40)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MinorOperatingSystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MinorOperatingSystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MinorOperatingSystemVersion, 42)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MajorImageVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MajorImageVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MajorImageVersion, 44)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MinorImageVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MinorImageVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MinorImageVersion, 46)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MajorSubsystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MajorSubsystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MajorSubsystemVersion, 48)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MinorSubsystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MinorSubsystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MinorSubsystemVersion, 50)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, Win32VersionValue, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, Win32VersionValue, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, Win32VersionValue, 52)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfImage, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfImage, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfImage, 56)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfHeaders, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfHeaders, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfHeaders, 60)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, CheckSum, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, CheckSum, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, CheckSum, 64)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, Subsystem, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, Subsystem, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, Subsystem, 68)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, DllCharacteristics, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, DllCharacteristics, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, DllCharacteristics, 70)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfStackReserve, 8)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfStackReserve, 8)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfStackReserve, 72)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfStackCommit, 8)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfStackCommit, 8)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfStackCommit, 80)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfHeapReserve, 8)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfHeapReserve, 8)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfHeapReserve, 88)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfHeapCommit, 8)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfHeapCommit, 8)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfHeapCommit, 96)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, LoaderFlags, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, LoaderFlags, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, LoaderFlags, 104)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, NumberOfRvaAndSizes, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, NumberOfRvaAndSizes, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, NumberOfRvaAndSizes, 108)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, DataDirectory, 128)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, DataDirectory, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, DataDirectory, 112)
}

static void test_pack_IMAGE_OS2_HEADER(void)
{
    /* IMAGE_OS2_HEADER (pack 2) */
    TEST_TYPE_SIZE   (IMAGE_OS2_HEADER, 64)
    TEST_TYPE_ALIGN  (IMAGE_OS2_HEADER, 2)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_magic, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_magic, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_magic, 0)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_ver, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_ver, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_ver, 2)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_rev, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_rev, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_rev, 3)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_enttab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_enttab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_enttab, 4)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cbenttab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cbenttab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cbenttab, 6)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_crc, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_crc, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_crc, 8)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_flags, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_flags, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_flags, 12)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_autodata, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_autodata, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_autodata, 14)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_heap, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_heap, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_heap, 16)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_stack, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_stack, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_stack, 18)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_csip, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_csip, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_csip, 20)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_sssp, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_sssp, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_sssp, 24)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cseg, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cseg, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cseg, 28)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cmod, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cmod, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cmod, 30)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cbnrestab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cbnrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cbnrestab, 32)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_segtab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_segtab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_segtab, 34)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_rsrctab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_rsrctab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_rsrctab, 36)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_restab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_restab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_restab, 38)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_modtab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_modtab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_modtab, 40)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_imptab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_imptab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_imptab, 42)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_nrestab, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_nrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_nrestab, 44)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cmovent, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cmovent, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cmovent, 48)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_align, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_align, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_align, 50)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cres, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cres, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cres, 52)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_exetyp, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_exetyp, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_exetyp, 54)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_flagsothers, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_flagsothers, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_flagsothers, 55)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_pretthunks, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_pretthunks, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_pretthunks, 56)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_psegrefbytes, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_psegrefbytes, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_psegrefbytes, 58)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_swaparea, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_swaparea, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_swaparea, 60)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_expver, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_expver, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_expver, 62)
}

static void test_pack_IMAGE_RELOCATION(void)
{
    /* IMAGE_RELOCATION (pack 2) */
}

static void test_pack_IMAGE_RESOURCE_DATA_ENTRY(void)
{
    /* IMAGE_RESOURCE_DATA_ENTRY */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DATA_ENTRY, 16)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DATA_ENTRY, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, OffsetToData, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, OffsetToData, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, OffsetToData, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, Size, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, Size, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, Size, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, CodePage, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, CodePage, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, CodePage, 8)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, Reserved, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, Reserved, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, Reserved, 12)
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY(void)
{
    /* IMAGE_RESOURCE_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DIRECTORY, 16)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, Characteristics, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, NumberOfNamedEntries, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, NumberOfNamedEntries, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, NumberOfNamedEntries, 12)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, NumberOfIdEntries, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, NumberOfIdEntries, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, NumberOfIdEntries, 14)
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY_ENTRY(void)
{
    /* IMAGE_RESOURCE_DIRECTORY_ENTRY */
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY_STRING(void)
{
    /* IMAGE_RESOURCE_DIRECTORY_STRING */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DIRECTORY_STRING, 4)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DIRECTORY_STRING, 2)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY_STRING, Length, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY_STRING, Length, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY_STRING, Length, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY_STRING, NameString, 1)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY_STRING, NameString, 1)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY_STRING, NameString, 2)
}

static void test_pack_IMAGE_RESOURCE_DIR_STRING_U(void)
{
    /* IMAGE_RESOURCE_DIR_STRING_U */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DIR_STRING_U, 4)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DIR_STRING_U, 2)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIR_STRING_U, Length, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIR_STRING_U, Length, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIR_STRING_U, Length, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIR_STRING_U, NameString, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIR_STRING_U, NameString, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIR_STRING_U, NameString, 2)
}

static void test_pack_IMAGE_SECTION_HEADER(void)
{
    /* IMAGE_SECTION_HEADER */
    TEST_FIELD_SIZE  (IMAGE_SECTION_HEADER, Name, 8)
    TEST_FIELD_ALIGN (IMAGE_SECTION_HEADER, Name, 1)
    TEST_FIELD_OFFSET(IMAGE_SECTION_HEADER, Name, 0)
}

static void test_pack_IMAGE_SEPARATE_DEBUG_HEADER(void)
{
    /* IMAGE_SEPARATE_DEBUG_HEADER */
    TEST_TYPE_SIZE   (IMAGE_SEPARATE_DEBUG_HEADER, 48)
    TEST_TYPE_ALIGN  (IMAGE_SEPARATE_DEBUG_HEADER, 4)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Signature, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Signature, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Signature, 0)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Flags, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Flags, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Flags, 2)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Machine, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Machine, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Machine, 4)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Characteristics, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Characteristics, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Characteristics, 6)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, TimeDateStamp, 8)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, CheckSum, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, CheckSum, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, CheckSum, 12)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, ImageBase, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, ImageBase, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, ImageBase, 16)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, SizeOfImage, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, SizeOfImage, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, SizeOfImage, 20)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, NumberOfSections, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, NumberOfSections, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, NumberOfSections, 24)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, ExportedNamesSize, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, ExportedNamesSize, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, ExportedNamesSize, 28)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, DebugDirectorySize, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, DebugDirectorySize, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, DebugDirectorySize, 32)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, SectionAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, SectionAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, SectionAlignment, 36)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Reserved, 8)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Reserved, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Reserved, 40)
}

static void test_pack_IMAGE_SYMBOL(void)
{
    /* IMAGE_SYMBOL (pack 2) */
}

static void test_pack_IMAGE_THUNK_DATA(void)
{
    /* IMAGE_THUNK_DATA */
}

static void test_pack_IMAGE_TLS_DIRECTORY(void)
{
    /* IMAGE_TLS_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_TLS_DIRECTORY, 40)
    TEST_TYPE_ALIGN  (IMAGE_TLS_DIRECTORY, 8)
}

static void test_pack_IMAGE_TLS_DIRECTORY32(void)
{
    /* IMAGE_TLS_DIRECTORY32 */
    TEST_TYPE_SIZE   (IMAGE_TLS_DIRECTORY32, 24)
    TEST_TYPE_ALIGN  (IMAGE_TLS_DIRECTORY32, 4)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, StartAddressOfRawData, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, StartAddressOfRawData, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, StartAddressOfRawData, 0)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, EndAddressOfRawData, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, EndAddressOfRawData, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, EndAddressOfRawData, 4)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, AddressOfIndex, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, AddressOfIndex, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, AddressOfIndex, 8)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, AddressOfCallBacks, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, AddressOfCallBacks, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, AddressOfCallBacks, 12)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, SizeOfZeroFill, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, SizeOfZeroFill, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, SizeOfZeroFill, 16)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, Characteristics, 20)
}

static void test_pack_IMAGE_TLS_DIRECTORY64(void)
{
    /* IMAGE_TLS_DIRECTORY64 */
    TEST_TYPE_SIZE   (IMAGE_TLS_DIRECTORY64, 40)
    TEST_TYPE_ALIGN  (IMAGE_TLS_DIRECTORY64, 8)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, StartAddressOfRawData, 8)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, StartAddressOfRawData, 8)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, StartAddressOfRawData, 0)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, EndAddressOfRawData, 8)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, EndAddressOfRawData, 8)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, EndAddressOfRawData, 8)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, AddressOfIndex, 8)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, AddressOfIndex, 8)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, AddressOfIndex, 16)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, AddressOfCallBacks, 8)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, AddressOfCallBacks, 8)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, AddressOfCallBacks, 24)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, SizeOfZeroFill, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, SizeOfZeroFill, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, SizeOfZeroFill, 32)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, Characteristics, 36)
}

static void test_pack_IMAGE_VXD_HEADER(void)
{
    /* IMAGE_VXD_HEADER (pack 2) */
    TEST_TYPE_SIZE   (IMAGE_VXD_HEADER, 196)
    TEST_TYPE_ALIGN  (IMAGE_VXD_HEADER, 2)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_magic, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_magic, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_magic, 0)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_border, 1)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_border, 1)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_border, 2)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_worder, 1)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_worder, 1)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_worder, 3)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_level, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_level, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_level, 4)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_cpu, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_cpu, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_cpu, 8)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_os, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_os, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_os, 10)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ver, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ver, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ver, 12)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_mflags, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_mflags, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_mflags, 16)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_mpages, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_mpages, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_mpages, 20)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_startobj, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_startobj, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_startobj, 24)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_eip, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_eip, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_eip, 28)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_stackobj, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_stackobj, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_stackobj, 32)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_esp, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_esp, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_esp, 36)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_pagesize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_pagesize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_pagesize, 40)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_lastpagesize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_lastpagesize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_lastpagesize, 44)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_fixupsize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_fixupsize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_fixupsize, 48)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_fixupsum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_fixupsum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_fixupsum, 52)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ldrsize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ldrsize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ldrsize, 56)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ldrsum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ldrsum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ldrsum, 60)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_objtab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_objtab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_objtab, 64)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_objcnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_objcnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_objcnt, 68)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_objmap, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_objmap, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_objmap, 72)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_itermap, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_itermap, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_itermap, 76)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_rsrctab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_rsrctab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_rsrctab, 80)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_rsrccnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_rsrccnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_rsrccnt, 84)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_restab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_restab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_restab, 88)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_enttab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_enttab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_enttab, 92)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_dirtab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_dirtab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_dirtab, 96)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_dircnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_dircnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_dircnt, 100)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_fpagetab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_fpagetab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_fpagetab, 104)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_frectab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_frectab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_frectab, 108)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_impmod, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_impmod, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_impmod, 112)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_impmodcnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_impmodcnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_impmodcnt, 116)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_impproc, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_impproc, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_impproc, 120)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_pagesum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_pagesum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_pagesum, 124)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_datapage, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_datapage, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_datapage, 128)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_preload, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_preload, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_preload, 132)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_nrestab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_nrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_nrestab, 136)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_cbnrestab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_cbnrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_cbnrestab, 140)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_nressum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_nressum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_nressum, 144)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_autodata, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_autodata, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_autodata, 148)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_debuginfo, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_debuginfo, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_debuginfo, 152)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_debuglen, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_debuglen, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_debuglen, 156)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_instpreload, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_instpreload, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_instpreload, 160)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_instdemand, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_instdemand, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_instdemand, 164)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_heapsize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_heapsize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_heapsize, 168)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_res3, 12)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_res3, 1)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_res3, 172)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_winresoff, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_winresoff, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_winresoff, 184)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_winreslen, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_winreslen, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_winreslen, 188)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_devid, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_devid, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_devid, 192)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ddkver, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ddkver, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ddkver, 194)
}

static void test_pack_IO_COUNTERS(void)
{
    /* IO_COUNTERS (pack 8) */
    TEST_TYPE_SIZE   (IO_COUNTERS, 48)
    TEST_TYPE_ALIGN  (IO_COUNTERS, 8)
    TEST_FIELD_SIZE  (IO_COUNTERS, ReadOperationCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, ReadOperationCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, ReadOperationCount, 0)
    TEST_FIELD_SIZE  (IO_COUNTERS, WriteOperationCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, WriteOperationCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, WriteOperationCount, 8)
    TEST_FIELD_SIZE  (IO_COUNTERS, OtherOperationCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, OtherOperationCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, OtherOperationCount, 16)
    TEST_FIELD_SIZE  (IO_COUNTERS, ReadTransferCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, ReadTransferCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, ReadTransferCount, 24)
    TEST_FIELD_SIZE  (IO_COUNTERS, WriteTransferCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, WriteTransferCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, WriteTransferCount, 32)
    TEST_FIELD_SIZE  (IO_COUNTERS, OtherTransferCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, OtherTransferCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, OtherTransferCount, 40)
}

static void test_pack_LANGID(void)
{
    /* LANGID */
    TEST_TYPE_SIZE   (LANGID, 2)
    TEST_TYPE_ALIGN  (LANGID, 2)
    TEST_TYPE_UNSIGNED(LANGID)
}

static void test_pack_LARGE_INTEGER(void)
{
    /* LARGE_INTEGER */
}

static void test_pack_LCID(void)
{
    /* LCID */
    TEST_TYPE_SIZE   (LCID, 4)
    TEST_TYPE_ALIGN  (LCID, 4)
    TEST_TYPE_UNSIGNED(LCID)
}

static void test_pack_LIST_ENTRY(void)
{
    /* LIST_ENTRY */
    TEST_TYPE_SIZE   (LIST_ENTRY, 16)
    TEST_TYPE_ALIGN  (LIST_ENTRY, 8)
    TEST_FIELD_SIZE  (LIST_ENTRY, Flink, 8)
    TEST_FIELD_ALIGN (LIST_ENTRY, Flink, 8)
    TEST_FIELD_OFFSET(LIST_ENTRY, Flink, 0)
    TEST_FIELD_SIZE  (LIST_ENTRY, Blink, 8)
    TEST_FIELD_ALIGN (LIST_ENTRY, Blink, 8)
    TEST_FIELD_OFFSET(LIST_ENTRY, Blink, 8)
}

static void test_pack_LONG(void)
{
    /* LONG */
    TEST_TYPE_SIZE   (LONG, 4)
    TEST_TYPE_ALIGN  (LONG, 4)
    TEST_TYPE_SIGNED(LONG)
}

static void test_pack_LONGLONG(void)
{
    /* LONGLONG */
    TEST_TYPE_SIZE   (LONGLONG, 8)
    TEST_TYPE_ALIGN  (LONGLONG, 8)
    TEST_TYPE_SIGNED(LONGLONG)
}

static void test_pack_LUID(void)
{
    /* LUID */
    TEST_TYPE_SIZE   (LUID, 8)
    TEST_TYPE_ALIGN  (LUID, 4)
    TEST_FIELD_SIZE  (LUID, LowPart, 4)
    TEST_FIELD_ALIGN (LUID, LowPart, 4)
    TEST_FIELD_OFFSET(LUID, LowPart, 0)
    TEST_FIELD_SIZE  (LUID, HighPart, 4)
    TEST_FIELD_ALIGN (LUID, HighPart, 4)
    TEST_FIELD_OFFSET(LUID, HighPart, 4)
}

static void test_pack_LUID_AND_ATTRIBUTES(void)
{
    /* LUID_AND_ATTRIBUTES (pack 4) */
    TEST_TYPE_SIZE   (LUID_AND_ATTRIBUTES, 12)
    TEST_TYPE_ALIGN  (LUID_AND_ATTRIBUTES, 4)
    TEST_FIELD_SIZE  (LUID_AND_ATTRIBUTES, Luid, 8)
    TEST_FIELD_ALIGN (LUID_AND_ATTRIBUTES, Luid, 4)
    TEST_FIELD_OFFSET(LUID_AND_ATTRIBUTES, Luid, 0)
    TEST_FIELD_SIZE  (LUID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_ALIGN (LUID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_OFFSET(LUID_AND_ATTRIBUTES, Attributes, 8)
}

static void test_pack_MEMORY_BASIC_INFORMATION(void)
{
    /* MEMORY_BASIC_INFORMATION */
    TEST_TYPE_SIZE   (MEMORY_BASIC_INFORMATION, 48)
    TEST_TYPE_ALIGN  (MEMORY_BASIC_INFORMATION, 8)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, BaseAddress, 8)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, BaseAddress, 8)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, BaseAddress, 0)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, AllocationBase, 8)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, AllocationBase, 8)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, AllocationBase, 8)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, AllocationProtect, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, AllocationProtect, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, AllocationProtect, 16)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, RegionSize, 8)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, RegionSize, 8)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, RegionSize, 24)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, State, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, State, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, State, 32)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, Protect, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, Protect, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, Protect, 36)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, Type, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, Type, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, Type, 40)
}

static void test_pack_MESSAGE_RESOURCE_BLOCK(void)
{
    /* MESSAGE_RESOURCE_BLOCK */
    TEST_TYPE_SIZE   (MESSAGE_RESOURCE_BLOCK, 12)
    TEST_TYPE_ALIGN  (MESSAGE_RESOURCE_BLOCK, 4)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_BLOCK, LowId, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_BLOCK, LowId, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_BLOCK, LowId, 0)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_BLOCK, HighId, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_BLOCK, HighId, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_BLOCK, HighId, 4)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_BLOCK, OffsetToEntries, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_BLOCK, OffsetToEntries, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_BLOCK, OffsetToEntries, 8)
}

static void test_pack_MESSAGE_RESOURCE_DATA(void)
{
    /* MESSAGE_RESOURCE_DATA */
    TEST_TYPE_SIZE   (MESSAGE_RESOURCE_DATA, 16)
    TEST_TYPE_ALIGN  (MESSAGE_RESOURCE_DATA, 4)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_DATA, NumberOfBlocks, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_DATA, NumberOfBlocks, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_DATA, NumberOfBlocks, 0)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_DATA, Blocks, 12)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_DATA, Blocks, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_DATA, Blocks, 4)
}

static void test_pack_MESSAGE_RESOURCE_ENTRY(void)
{
    /* MESSAGE_RESOURCE_ENTRY */
    TEST_TYPE_SIZE   (MESSAGE_RESOURCE_ENTRY, 6)
    TEST_TYPE_ALIGN  (MESSAGE_RESOURCE_ENTRY, 2)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_ENTRY, Length, 2)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_ENTRY, Length, 2)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_ENTRY, Length, 0)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_ENTRY, Flags, 2)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_ENTRY, Flags, 2)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_ENTRY, Flags, 2)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_ENTRY, Text, 1)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_ENTRY, Text, 1)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_ENTRY, Text, 4)
}

static void test_pack_NT_TIB(void)
{
    /* NT_TIB */
    TEST_FIELD_SIZE  (NT_TIB, ExceptionList, 8)
    TEST_FIELD_ALIGN (NT_TIB, ExceptionList, 8)
    TEST_FIELD_OFFSET(NT_TIB, ExceptionList, 0)
    TEST_FIELD_SIZE  (NT_TIB, StackBase, 8)
    TEST_FIELD_ALIGN (NT_TIB, StackBase, 8)
    TEST_FIELD_OFFSET(NT_TIB, StackBase, 8)
    TEST_FIELD_SIZE  (NT_TIB, StackLimit, 8)
    TEST_FIELD_ALIGN (NT_TIB, StackLimit, 8)
    TEST_FIELD_OFFSET(NT_TIB, StackLimit, 16)
    TEST_FIELD_SIZE  (NT_TIB, SubSystemTib, 8)
    TEST_FIELD_ALIGN (NT_TIB, SubSystemTib, 8)
    TEST_FIELD_OFFSET(NT_TIB, SubSystemTib, 24)
}

static void test_pack_OBJECT_TYPE_LIST(void)
{
    /* OBJECT_TYPE_LIST */
    TEST_TYPE_SIZE   (OBJECT_TYPE_LIST, 16)
    TEST_TYPE_ALIGN  (OBJECT_TYPE_LIST, 8)
    TEST_FIELD_SIZE  (OBJECT_TYPE_LIST, Level, 2)
    TEST_FIELD_ALIGN (OBJECT_TYPE_LIST, Level, 2)
    TEST_FIELD_OFFSET(OBJECT_TYPE_LIST, Level, 0)
    TEST_FIELD_SIZE  (OBJECT_TYPE_LIST, Sbz, 2)
    TEST_FIELD_ALIGN (OBJECT_TYPE_LIST, Sbz, 2)
    TEST_FIELD_OFFSET(OBJECT_TYPE_LIST, Sbz, 2)
    TEST_FIELD_SIZE  (OBJECT_TYPE_LIST, ObjectType, 8)
    TEST_FIELD_ALIGN (OBJECT_TYPE_LIST, ObjectType, 8)
    TEST_FIELD_OFFSET(OBJECT_TYPE_LIST, ObjectType, 8)
}

static void test_pack_PACCESS_ALLOWED_ACE(void)
{
    /* PACCESS_ALLOWED_ACE */
    TEST_TYPE_SIZE   (PACCESS_ALLOWED_ACE, 8)
    TEST_TYPE_ALIGN  (PACCESS_ALLOWED_ACE, 8)
    TEST_TARGET_SIZE (PACCESS_ALLOWED_ACE, 12)
    TEST_TARGET_ALIGN(PACCESS_ALLOWED_ACE, 4)
}

static void test_pack_PACCESS_DENIED_ACE(void)
{
    /* PACCESS_DENIED_ACE */
    TEST_TYPE_SIZE   (PACCESS_DENIED_ACE, 8)
    TEST_TYPE_ALIGN  (PACCESS_DENIED_ACE, 8)
    TEST_TARGET_SIZE (PACCESS_DENIED_ACE, 12)
    TEST_TARGET_ALIGN(PACCESS_DENIED_ACE, 4)
}

static void test_pack_PACCESS_TOKEN(void)
{
    /* PACCESS_TOKEN */
    TEST_TYPE_SIZE   (PACCESS_TOKEN, 8)
    TEST_TYPE_ALIGN  (PACCESS_TOKEN, 8)
}

static void test_pack_PACE_HEADER(void)
{
    /* PACE_HEADER */
    TEST_TYPE_SIZE   (PACE_HEADER, 8)
    TEST_TYPE_ALIGN  (PACE_HEADER, 8)
    TEST_TARGET_SIZE (PACE_HEADER, 4)
    TEST_TARGET_ALIGN(PACE_HEADER, 2)
}

static void test_pack_PACL(void)
{
    /* PACL */
    TEST_TYPE_SIZE   (PACL, 8)
    TEST_TYPE_ALIGN  (PACL, 8)
    TEST_TARGET_SIZE (PACL, 8)
    TEST_TARGET_ALIGN(PACL, 2)
}

static void test_pack_PACL_REVISION_INFORMATION(void)
{
    /* PACL_REVISION_INFORMATION */
    TEST_TYPE_SIZE   (PACL_REVISION_INFORMATION, 8)
    TEST_TYPE_ALIGN  (PACL_REVISION_INFORMATION, 8)
    TEST_TARGET_SIZE (PACL_REVISION_INFORMATION, 4)
    TEST_TARGET_ALIGN(PACL_REVISION_INFORMATION, 4)
}

static void test_pack_PACL_SIZE_INFORMATION(void)
{
    /* PACL_SIZE_INFORMATION */
    TEST_TYPE_SIZE   (PACL_SIZE_INFORMATION, 8)
    TEST_TYPE_ALIGN  (PACL_SIZE_INFORMATION, 8)
    TEST_TARGET_SIZE (PACL_SIZE_INFORMATION, 12)
    TEST_TARGET_ALIGN(PACL_SIZE_INFORMATION, 4)
}

static void test_pack_PCCH(void)
{
    /* PCCH */
    TEST_TYPE_SIZE   (PCCH, 8)
    TEST_TYPE_ALIGN  (PCCH, 8)
    TEST_TARGET_SIZE (PCCH, 1)
    TEST_TARGET_ALIGN(PCCH, 1)
}

static void test_pack_PCH(void)
{
    /* PCH */
    TEST_TYPE_SIZE   (PCH, 8)
    TEST_TYPE_ALIGN  (PCH, 8)
    TEST_TARGET_SIZE (PCH, 1)
    TEST_TARGET_ALIGN(PCH, 1)
}

static void test_pack_PCSTR(void)
{
    /* PCSTR */
    TEST_TYPE_SIZE   (PCSTR, 8)
    TEST_TYPE_ALIGN  (PCSTR, 8)
    TEST_TARGET_SIZE (PCSTR, 1)
    TEST_TARGET_ALIGN(PCSTR, 1)
}

static void test_pack_PCTSTR(void)
{
    /* PCTSTR */
    TEST_TYPE_SIZE   (PCTSTR, 8)
    TEST_TYPE_ALIGN  (PCTSTR, 8)
}

static void test_pack_PCWCH(void)
{
    /* PCWCH */
    TEST_TYPE_SIZE   (PCWCH, 8)
    TEST_TYPE_ALIGN  (PCWCH, 8)
    TEST_TARGET_SIZE (PCWCH, 2)
    TEST_TARGET_ALIGN(PCWCH, 2)
}

static void test_pack_PCWSTR(void)
{
    /* PCWSTR */
    TEST_TYPE_SIZE   (PCWSTR, 8)
    TEST_TYPE_ALIGN  (PCWSTR, 8)
    TEST_TARGET_SIZE (PCWSTR, 2)
    TEST_TARGET_ALIGN(PCWSTR, 2)
}

static void test_pack_PEXCEPTION_POINTERS(void)
{
    /* PEXCEPTION_POINTERS */
    TEST_TYPE_SIZE   (PEXCEPTION_POINTERS, 8)
    TEST_TYPE_ALIGN  (PEXCEPTION_POINTERS, 8)
    TEST_TARGET_SIZE (PEXCEPTION_POINTERS, 16)
    TEST_TARGET_ALIGN(PEXCEPTION_POINTERS, 8)
}

static void test_pack_PEXCEPTION_RECORD(void)
{
    /* PEXCEPTION_RECORD */
    TEST_TYPE_SIZE   (PEXCEPTION_RECORD, 8)
    TEST_TYPE_ALIGN  (PEXCEPTION_RECORD, 8)
    TEST_TARGET_SIZE (PEXCEPTION_RECORD, 152)
    TEST_TARGET_ALIGN(PEXCEPTION_RECORD, 8)
}

static void test_pack_PFLOATING_SAVE_AREA(void)
{
    /* PFLOATING_SAVE_AREA */
    TEST_TYPE_SIZE   (PFLOATING_SAVE_AREA, 8)
    TEST_TYPE_ALIGN  (PFLOATING_SAVE_AREA, 8)
    TEST_TARGET_SIZE (PFLOATING_SAVE_AREA, 112)
    TEST_TARGET_ALIGN(PFLOATING_SAVE_AREA, 4)
}

static void test_pack_PFPO_DATA(void)
{
    /* PFPO_DATA */
    TEST_TYPE_SIZE   (PFPO_DATA, 8)
    TEST_TYPE_ALIGN  (PFPO_DATA, 8)
    TEST_TARGET_SIZE (PFPO_DATA, 16)
    TEST_TARGET_ALIGN(PFPO_DATA, 4)
}

static void test_pack_PGENERIC_MAPPING(void)
{
    /* PGENERIC_MAPPING */
    TEST_TYPE_SIZE   (PGENERIC_MAPPING, 8)
    TEST_TYPE_ALIGN  (PGENERIC_MAPPING, 8)
    TEST_TARGET_SIZE (PGENERIC_MAPPING, 16)
    TEST_TARGET_ALIGN(PGENERIC_MAPPING, 4)
}

static void test_pack_PHANDLE(void)
{
    /* PHANDLE */
    TEST_TYPE_SIZE   (PHANDLE, 8)
    TEST_TYPE_ALIGN  (PHANDLE, 8)
    TEST_TARGET_SIZE (PHANDLE, 8)
    TEST_TARGET_ALIGN(PHANDLE, 8)
}

static void test_pack_PIMAGE_ARCHIVE_MEMBER_HEADER(void)
{
    /* PIMAGE_ARCHIVE_MEMBER_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_ARCHIVE_MEMBER_HEADER, 8)
    TEST_TYPE_ALIGN  (PIMAGE_ARCHIVE_MEMBER_HEADER, 8)
    TEST_TARGET_SIZE (PIMAGE_ARCHIVE_MEMBER_HEADER, 60)
    TEST_TARGET_ALIGN(PIMAGE_ARCHIVE_MEMBER_HEADER, 1)
}

static void test_pack_PIMAGE_AUX_SYMBOL(void)
{
    /* PIMAGE_AUX_SYMBOL */
    TEST_TYPE_SIZE   (PIMAGE_AUX_SYMBOL, 8)
    TEST_TYPE_ALIGN  (PIMAGE_AUX_SYMBOL, 8)
}

static void test_pack_PIMAGE_BASE_RELOCATION(void)
{
    /* PIMAGE_BASE_RELOCATION */
    TEST_TYPE_SIZE   (PIMAGE_BASE_RELOCATION, 8)
    TEST_TYPE_ALIGN  (PIMAGE_BASE_RELOCATION, 8)
    TEST_TARGET_SIZE (PIMAGE_BASE_RELOCATION, 8)
    TEST_TARGET_ALIGN(PIMAGE_BASE_RELOCATION, 4)
}

static void test_pack_PIMAGE_BOUND_FORWARDER_REF(void)
{
    /* PIMAGE_BOUND_FORWARDER_REF */
    TEST_TYPE_SIZE   (PIMAGE_BOUND_FORWARDER_REF, 8)
    TEST_TYPE_ALIGN  (PIMAGE_BOUND_FORWARDER_REF, 8)
    TEST_TARGET_SIZE (PIMAGE_BOUND_FORWARDER_REF, 8)
    TEST_TARGET_ALIGN(PIMAGE_BOUND_FORWARDER_REF, 4)
}

static void test_pack_PIMAGE_BOUND_IMPORT_DESCRIPTOR(void)
{
    /* PIMAGE_BOUND_IMPORT_DESCRIPTOR */
    TEST_TYPE_SIZE   (PIMAGE_BOUND_IMPORT_DESCRIPTOR, 8)
    TEST_TYPE_ALIGN  (PIMAGE_BOUND_IMPORT_DESCRIPTOR, 8)
    TEST_TARGET_SIZE (PIMAGE_BOUND_IMPORT_DESCRIPTOR, 8)
    TEST_TARGET_ALIGN(PIMAGE_BOUND_IMPORT_DESCRIPTOR, 4)
}

static void test_pack_PIMAGE_COFF_SYMBOLS_HEADER(void)
{
    /* PIMAGE_COFF_SYMBOLS_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_COFF_SYMBOLS_HEADER, 8)
    TEST_TYPE_ALIGN  (PIMAGE_COFF_SYMBOLS_HEADER, 8)
    TEST_TARGET_SIZE (PIMAGE_COFF_SYMBOLS_HEADER, 32)
    TEST_TARGET_ALIGN(PIMAGE_COFF_SYMBOLS_HEADER, 4)
}

static void test_pack_PIMAGE_DATA_DIRECTORY(void)
{
    /* PIMAGE_DATA_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_DATA_DIRECTORY, 8)
    TEST_TYPE_ALIGN  (PIMAGE_DATA_DIRECTORY, 8)
    TEST_TARGET_SIZE (PIMAGE_DATA_DIRECTORY, 8)
    TEST_TARGET_ALIGN(PIMAGE_DATA_DIRECTORY, 4)
}

static void test_pack_PIMAGE_DEBUG_DIRECTORY(void)
{
    /* PIMAGE_DEBUG_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_DEBUG_DIRECTORY, 8)
    TEST_TYPE_ALIGN  (PIMAGE_DEBUG_DIRECTORY, 8)
    TEST_TARGET_SIZE (PIMAGE_DEBUG_DIRECTORY, 28)
    TEST_TARGET_ALIGN(PIMAGE_DEBUG_DIRECTORY, 4)
}

static void test_pack_PIMAGE_DEBUG_MISC(void)
{
    /* PIMAGE_DEBUG_MISC */
    TEST_TYPE_SIZE   (PIMAGE_DEBUG_MISC, 8)
    TEST_TYPE_ALIGN  (PIMAGE_DEBUG_MISC, 8)
    TEST_TARGET_SIZE (PIMAGE_DEBUG_MISC, 16)
    TEST_TARGET_ALIGN(PIMAGE_DEBUG_MISC, 4)
}

static void test_pack_PIMAGE_DOS_HEADER(void)
{
    /* PIMAGE_DOS_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_DOS_HEADER, 8)
    TEST_TYPE_ALIGN  (PIMAGE_DOS_HEADER, 8)
    TEST_TARGET_SIZE (PIMAGE_DOS_HEADER, 64)
    TEST_TARGET_ALIGN(PIMAGE_DOS_HEADER, 2)
}

static void test_pack_PIMAGE_EXPORT_DIRECTORY(void)
{
    /* PIMAGE_EXPORT_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_EXPORT_DIRECTORY, 8)
    TEST_TYPE_ALIGN  (PIMAGE_EXPORT_DIRECTORY, 8)
    TEST_TARGET_SIZE (PIMAGE_EXPORT_DIRECTORY, 40)
    TEST_TARGET_ALIGN(PIMAGE_EXPORT_DIRECTORY, 4)
}

static void test_pack_PIMAGE_FILE_HEADER(void)
{
    /* PIMAGE_FILE_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_FILE_HEADER, 8)
    TEST_TYPE_ALIGN  (PIMAGE_FILE_HEADER, 8)
    TEST_TARGET_SIZE (PIMAGE_FILE_HEADER, 20)
    TEST_TARGET_ALIGN(PIMAGE_FILE_HEADER, 4)
}

static void test_pack_PIMAGE_FUNCTION_ENTRY(void)
{
    /* PIMAGE_FUNCTION_ENTRY */
    TEST_TYPE_SIZE   (PIMAGE_FUNCTION_ENTRY, 8)
    TEST_TYPE_ALIGN  (PIMAGE_FUNCTION_ENTRY, 8)
    TEST_TARGET_SIZE (PIMAGE_FUNCTION_ENTRY, 12)
    TEST_TARGET_ALIGN(PIMAGE_FUNCTION_ENTRY, 4)
}

static void test_pack_PIMAGE_IMPORT_BY_NAME(void)
{
    /* PIMAGE_IMPORT_BY_NAME */
    TEST_TYPE_SIZE   (PIMAGE_IMPORT_BY_NAME, 8)
    TEST_TYPE_ALIGN  (PIMAGE_IMPORT_BY_NAME, 8)
    TEST_TARGET_SIZE (PIMAGE_IMPORT_BY_NAME, 4)
    TEST_TARGET_ALIGN(PIMAGE_IMPORT_BY_NAME, 2)
}

static void test_pack_PIMAGE_IMPORT_DESCRIPTOR(void)
{
    /* PIMAGE_IMPORT_DESCRIPTOR */
    TEST_TYPE_SIZE   (PIMAGE_IMPORT_DESCRIPTOR, 8)
    TEST_TYPE_ALIGN  (PIMAGE_IMPORT_DESCRIPTOR, 8)
}

static void test_pack_PIMAGE_LINENUMBER(void)
{
    /* PIMAGE_LINENUMBER */
    TEST_TYPE_SIZE   (PIMAGE_LINENUMBER, 8)
    TEST_TYPE_ALIGN  (PIMAGE_LINENUMBER, 8)
}

static void test_pack_PIMAGE_LOAD_CONFIG_DIRECTORY(void)
{
    /* PIMAGE_LOAD_CONFIG_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_LOAD_CONFIG_DIRECTORY, 8)
    TEST_TYPE_ALIGN  (PIMAGE_LOAD_CONFIG_DIRECTORY, 8)
    TEST_TARGET_SIZE (PIMAGE_LOAD_CONFIG_DIRECTORY, 88)
    TEST_TARGET_ALIGN(PIMAGE_LOAD_CONFIG_DIRECTORY, 8)
}

static void test_pack_PIMAGE_NT_HEADERS(void)
{
    /* PIMAGE_NT_HEADERS */
    TEST_TYPE_SIZE   (PIMAGE_NT_HEADERS, 8)
    TEST_TYPE_ALIGN  (PIMAGE_NT_HEADERS, 8)
}

static void test_pack_PIMAGE_NT_HEADERS32(void)
{
    /* PIMAGE_NT_HEADERS32 */
    TEST_TYPE_SIZE   (PIMAGE_NT_HEADERS32, 8)
    TEST_TYPE_ALIGN  (PIMAGE_NT_HEADERS32, 8)
    TEST_TARGET_SIZE (PIMAGE_NT_HEADERS32, 248)
    TEST_TARGET_ALIGN(PIMAGE_NT_HEADERS32, 4)
}

static void test_pack_PIMAGE_NT_HEADERS64(void)
{
    /* PIMAGE_NT_HEADERS64 */
    TEST_TYPE_SIZE   (PIMAGE_NT_HEADERS64, 8)
    TEST_TYPE_ALIGN  (PIMAGE_NT_HEADERS64, 8)
    TEST_TARGET_SIZE (PIMAGE_NT_HEADERS64, 264)
    TEST_TARGET_ALIGN(PIMAGE_NT_HEADERS64, 8)
}

static void test_pack_PIMAGE_OPTIONAL_HEADER(void)
{
    /* PIMAGE_OPTIONAL_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_OPTIONAL_HEADER, 8)
    TEST_TYPE_ALIGN  (PIMAGE_OPTIONAL_HEADER, 8)
}

static void test_pack_PIMAGE_OPTIONAL_HEADER32(void)
{
    /* PIMAGE_OPTIONAL_HEADER32 */
    TEST_TYPE_SIZE   (PIMAGE_OPTIONAL_HEADER32, 8)
    TEST_TYPE_ALIGN  (PIMAGE_OPTIONAL_HEADER32, 8)
    TEST_TARGET_SIZE (PIMAGE_OPTIONAL_HEADER32, 224)
    TEST_TARGET_ALIGN(PIMAGE_OPTIONAL_HEADER32, 4)
}

static void test_pack_PIMAGE_OPTIONAL_HEADER64(void)
{
    /* PIMAGE_OPTIONAL_HEADER64 */
    TEST_TYPE_SIZE   (PIMAGE_OPTIONAL_HEADER64, 8)
    TEST_TYPE_ALIGN  (PIMAGE_OPTIONAL_HEADER64, 8)
    TEST_TARGET_SIZE (PIMAGE_OPTIONAL_HEADER64, 240)
    TEST_TARGET_ALIGN(PIMAGE_OPTIONAL_HEADER64, 8)
}

static void test_pack_PIMAGE_OS2_HEADER(void)
{
    /* PIMAGE_OS2_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_OS2_HEADER, 8)
    TEST_TYPE_ALIGN  (PIMAGE_OS2_HEADER, 8)
    TEST_TARGET_SIZE (PIMAGE_OS2_HEADER, 64)
    TEST_TARGET_ALIGN(PIMAGE_OS2_HEADER, 2)
}

static void test_pack_PIMAGE_RELOCATION(void)
{
    /* PIMAGE_RELOCATION */
    TEST_TYPE_SIZE   (PIMAGE_RELOCATION, 8)
    TEST_TYPE_ALIGN  (PIMAGE_RELOCATION, 8)
}

static void test_pack_PIMAGE_RESOURCE_DATA_ENTRY(void)
{
    /* PIMAGE_RESOURCE_DATA_ENTRY */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DATA_ENTRY, 8)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DATA_ENTRY, 8)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DATA_ENTRY, 16)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DATA_ENTRY, 4)
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIRECTORY, 8)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIRECTORY, 8)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DIRECTORY, 16)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DIRECTORY, 4)
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY_ENTRY(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY_ENTRY */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIRECTORY_ENTRY, 8)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIRECTORY_ENTRY, 8)
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY_STRING(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY_STRING */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIRECTORY_STRING, 8)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIRECTORY_STRING, 8)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DIRECTORY_STRING, 4)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DIRECTORY_STRING, 2)
}

static void test_pack_PIMAGE_RESOURCE_DIR_STRING_U(void)
{
    /* PIMAGE_RESOURCE_DIR_STRING_U */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIR_STRING_U, 8)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIR_STRING_U, 8)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DIR_STRING_U, 4)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DIR_STRING_U, 2)
}

static void test_pack_PIMAGE_SECTION_HEADER(void)
{
    /* PIMAGE_SECTION_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_SECTION_HEADER, 8)
    TEST_TYPE_ALIGN  (PIMAGE_SECTION_HEADER, 8)
}

static void test_pack_PIMAGE_SEPARATE_DEBUG_HEADER(void)
{
    /* PIMAGE_SEPARATE_DEBUG_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_SEPARATE_DEBUG_HEADER, 8)
    TEST_TYPE_ALIGN  (PIMAGE_SEPARATE_DEBUG_HEADER, 8)
    TEST_TARGET_SIZE (PIMAGE_SEPARATE_DEBUG_HEADER, 48)
    TEST_TARGET_ALIGN(PIMAGE_SEPARATE_DEBUG_HEADER, 4)
}

static void test_pack_PIMAGE_SYMBOL(void)
{
    /* PIMAGE_SYMBOL */
    TEST_TYPE_SIZE   (PIMAGE_SYMBOL, 8)
    TEST_TYPE_ALIGN  (PIMAGE_SYMBOL, 8)
}

static void test_pack_PIMAGE_THUNK_DATA(void)
{
    /* PIMAGE_THUNK_DATA */
    TEST_TYPE_SIZE   (PIMAGE_THUNK_DATA, 8)
    TEST_TYPE_ALIGN  (PIMAGE_THUNK_DATA, 8)
}

static void test_pack_PIMAGE_TLS_CALLBACK(void)
{
    /* PIMAGE_TLS_CALLBACK */
    TEST_TYPE_SIZE   (PIMAGE_TLS_CALLBACK, 8)
    TEST_TYPE_ALIGN  (PIMAGE_TLS_CALLBACK, 8)
}

static void test_pack_PIMAGE_TLS_DIRECTORY(void)
{
    /* PIMAGE_TLS_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_TLS_DIRECTORY, 8)
    TEST_TYPE_ALIGN  (PIMAGE_TLS_DIRECTORY, 8)
}

static void test_pack_PIMAGE_VXD_HEADER(void)
{
    /* PIMAGE_VXD_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_VXD_HEADER, 8)
    TEST_TYPE_ALIGN  (PIMAGE_VXD_HEADER, 8)
    TEST_TARGET_SIZE (PIMAGE_VXD_HEADER, 196)
    TEST_TARGET_ALIGN(PIMAGE_VXD_HEADER, 2)
}

static void test_pack_PIO_COUNTERS(void)
{
    /* PIO_COUNTERS */
    TEST_TYPE_SIZE   (PIO_COUNTERS, 8)
    TEST_TYPE_ALIGN  (PIO_COUNTERS, 8)
    TEST_TARGET_SIZE (PIO_COUNTERS, 48)
    TEST_TARGET_ALIGN(PIO_COUNTERS, 8)
}

static void test_pack_PISECURITY_DESCRIPTOR(void)
{
    /* PISECURITY_DESCRIPTOR */
    TEST_TYPE_SIZE   (PISECURITY_DESCRIPTOR, 8)
    TEST_TYPE_ALIGN  (PISECURITY_DESCRIPTOR, 8)
    TEST_TARGET_SIZE (PISECURITY_DESCRIPTOR, 40)
    TEST_TARGET_ALIGN(PISECURITY_DESCRIPTOR, 8)
}

static void test_pack_PISECURITY_DESCRIPTOR_RELATIVE(void)
{
    /* PISECURITY_DESCRIPTOR_RELATIVE */
    TEST_TYPE_SIZE   (PISECURITY_DESCRIPTOR_RELATIVE, 8)
    TEST_TYPE_ALIGN  (PISECURITY_DESCRIPTOR_RELATIVE, 8)
    TEST_TARGET_SIZE (PISECURITY_DESCRIPTOR_RELATIVE, 20)
    TEST_TARGET_ALIGN(PISECURITY_DESCRIPTOR_RELATIVE, 4)
}

static void test_pack_PISID(void)
{
    /* PISID */
    TEST_TYPE_SIZE   (PISID, 8)
    TEST_TYPE_ALIGN  (PISID, 8)
    TEST_TARGET_SIZE (PISID, 12)
    TEST_TARGET_ALIGN(PISID, 4)
}

static void test_pack_PLARGE_INTEGER(void)
{
    /* PLARGE_INTEGER */
    TEST_TYPE_SIZE   (PLARGE_INTEGER, 8)
    TEST_TYPE_ALIGN  (PLARGE_INTEGER, 8)
}

static void test_pack_PLIST_ENTRY(void)
{
    /* PLIST_ENTRY */
    TEST_TYPE_SIZE   (PLIST_ENTRY, 8)
    TEST_TYPE_ALIGN  (PLIST_ENTRY, 8)
    TEST_TARGET_SIZE (PLIST_ENTRY, 16)
    TEST_TARGET_ALIGN(PLIST_ENTRY, 8)
}

static void test_pack_PLUID(void)
{
    /* PLUID */
    TEST_TYPE_SIZE   (PLUID, 8)
    TEST_TYPE_ALIGN  (PLUID, 8)
    TEST_TARGET_SIZE (PLUID, 8)
    TEST_TARGET_ALIGN(PLUID, 4)
}

static void test_pack_PLUID_AND_ATTRIBUTES(void)
{
    /* PLUID_AND_ATTRIBUTES */
    TEST_TYPE_SIZE   (PLUID_AND_ATTRIBUTES, 8)
    TEST_TYPE_ALIGN  (PLUID_AND_ATTRIBUTES, 8)
    TEST_TARGET_SIZE (PLUID_AND_ATTRIBUTES, 12)
    TEST_TARGET_ALIGN(PLUID_AND_ATTRIBUTES, 4)
}

static void test_pack_PMEMORY_BASIC_INFORMATION(void)
{
    /* PMEMORY_BASIC_INFORMATION */
    TEST_TYPE_SIZE   (PMEMORY_BASIC_INFORMATION, 8)
    TEST_TYPE_ALIGN  (PMEMORY_BASIC_INFORMATION, 8)
    TEST_TARGET_SIZE (PMEMORY_BASIC_INFORMATION, 48)
    TEST_TARGET_ALIGN(PMEMORY_BASIC_INFORMATION, 8)
}

static void test_pack_PMESSAGE_RESOURCE_BLOCK(void)
{
    /* PMESSAGE_RESOURCE_BLOCK */
    TEST_TYPE_SIZE   (PMESSAGE_RESOURCE_BLOCK, 8)
    TEST_TYPE_ALIGN  (PMESSAGE_RESOURCE_BLOCK, 8)
    TEST_TARGET_SIZE (PMESSAGE_RESOURCE_BLOCK, 12)
    TEST_TARGET_ALIGN(PMESSAGE_RESOURCE_BLOCK, 4)
}

static void test_pack_PMESSAGE_RESOURCE_DATA(void)
{
    /* PMESSAGE_RESOURCE_DATA */
    TEST_TYPE_SIZE   (PMESSAGE_RESOURCE_DATA, 8)
    TEST_TYPE_ALIGN  (PMESSAGE_RESOURCE_DATA, 8)
    TEST_TARGET_SIZE (PMESSAGE_RESOURCE_DATA, 16)
    TEST_TARGET_ALIGN(PMESSAGE_RESOURCE_DATA, 4)
}

static void test_pack_PMESSAGE_RESOURCE_ENTRY(void)
{
    /* PMESSAGE_RESOURCE_ENTRY */
    TEST_TYPE_SIZE   (PMESSAGE_RESOURCE_ENTRY, 8)
    TEST_TYPE_ALIGN  (PMESSAGE_RESOURCE_ENTRY, 8)
    TEST_TARGET_SIZE (PMESSAGE_RESOURCE_ENTRY, 6)
    TEST_TARGET_ALIGN(PMESSAGE_RESOURCE_ENTRY, 2)
}

static void test_pack_PNT_TIB(void)
{
    /* PNT_TIB */
    TEST_TYPE_SIZE   (PNT_TIB, 8)
    TEST_TYPE_ALIGN  (PNT_TIB, 8)
}

static void test_pack_POBJECT_TYPE_LIST(void)
{
    /* POBJECT_TYPE_LIST */
    TEST_TYPE_SIZE   (POBJECT_TYPE_LIST, 8)
    TEST_TYPE_ALIGN  (POBJECT_TYPE_LIST, 8)
    TEST_TARGET_SIZE (POBJECT_TYPE_LIST, 16)
    TEST_TARGET_ALIGN(POBJECT_TYPE_LIST, 8)
}

static void test_pack_PPRIVILEGE_SET(void)
{
    /* PPRIVILEGE_SET */
    TEST_TYPE_SIZE   (PPRIVILEGE_SET, 8)
    TEST_TYPE_ALIGN  (PPRIVILEGE_SET, 8)
    TEST_TARGET_SIZE (PPRIVILEGE_SET, 20)
    TEST_TARGET_ALIGN(PPRIVILEGE_SET, 4)
}

static void test_pack_PRIVILEGE_SET(void)
{
    /* PRIVILEGE_SET */
    TEST_TYPE_SIZE   (PRIVILEGE_SET, 20)
    TEST_TYPE_ALIGN  (PRIVILEGE_SET, 4)
    TEST_FIELD_SIZE  (PRIVILEGE_SET, PrivilegeCount, 4)
    TEST_FIELD_ALIGN (PRIVILEGE_SET, PrivilegeCount, 4)
    TEST_FIELD_OFFSET(PRIVILEGE_SET, PrivilegeCount, 0)
    TEST_FIELD_SIZE  (PRIVILEGE_SET, Control, 4)
    TEST_FIELD_ALIGN (PRIVILEGE_SET, Control, 4)
    TEST_FIELD_OFFSET(PRIVILEGE_SET, Control, 4)
    TEST_FIELD_SIZE  (PRIVILEGE_SET, Privilege, 12)
    TEST_FIELD_ALIGN (PRIVILEGE_SET, Privilege, 4)
    TEST_FIELD_OFFSET(PRIVILEGE_SET, Privilege, 8)
}

static void test_pack_PRLIST_ENTRY(void)
{
    /* PRLIST_ENTRY */
    TEST_TYPE_SIZE   (PRLIST_ENTRY, 8)
    TEST_TYPE_ALIGN  (PRLIST_ENTRY, 8)
    TEST_TARGET_SIZE (PRLIST_ENTRY, 16)
    TEST_TARGET_ALIGN(PRLIST_ENTRY, 8)
}

static void test_pack_PRTL_CRITICAL_SECTION(void)
{
    /* PRTL_CRITICAL_SECTION */
    TEST_TYPE_SIZE   (PRTL_CRITICAL_SECTION, 8)
    TEST_TYPE_ALIGN  (PRTL_CRITICAL_SECTION, 8)
    TEST_TARGET_SIZE (PRTL_CRITICAL_SECTION, 40)
    TEST_TARGET_ALIGN(PRTL_CRITICAL_SECTION, 8)
}

static void test_pack_PRTL_CRITICAL_SECTION_DEBUG(void)
{
    /* PRTL_CRITICAL_SECTION_DEBUG */
    TEST_TYPE_SIZE   (PRTL_CRITICAL_SECTION_DEBUG, 8)
    TEST_TYPE_ALIGN  (PRTL_CRITICAL_SECTION_DEBUG, 8)
}

static void test_pack_PRTL_OSVERSIONINFOEXW(void)
{
    /* PRTL_OSVERSIONINFOEXW */
    TEST_TYPE_SIZE   (PRTL_OSVERSIONINFOEXW, 8)
    TEST_TYPE_ALIGN  (PRTL_OSVERSIONINFOEXW, 8)
    TEST_TARGET_SIZE (PRTL_OSVERSIONINFOEXW, 284)
    TEST_TARGET_ALIGN(PRTL_OSVERSIONINFOEXW, 4)
}

static void test_pack_PRTL_OSVERSIONINFOW(void)
{
    /* PRTL_OSVERSIONINFOW */
    TEST_TYPE_SIZE   (PRTL_OSVERSIONINFOW, 8)
    TEST_TYPE_ALIGN  (PRTL_OSVERSIONINFOW, 8)
    TEST_TARGET_SIZE (PRTL_OSVERSIONINFOW, 276)
    TEST_TARGET_ALIGN(PRTL_OSVERSIONINFOW, 4)
}

static void test_pack_PRTL_RESOURCE_DEBUG(void)
{
    /* PRTL_RESOURCE_DEBUG */
    TEST_TYPE_SIZE   (PRTL_RESOURCE_DEBUG, 8)
    TEST_TYPE_ALIGN  (PRTL_RESOURCE_DEBUG, 8)
}

static void test_pack_PSECURITY_DESCRIPTOR(void)
{
    /* PSECURITY_DESCRIPTOR */
    TEST_TYPE_SIZE   (PSECURITY_DESCRIPTOR, 8)
    TEST_TYPE_ALIGN  (PSECURITY_DESCRIPTOR, 8)
}

static void test_pack_PSECURITY_QUALITY_OF_SERVICE(void)
{
    /* PSECURITY_QUALITY_OF_SERVICE */
    TEST_TYPE_SIZE   (PSECURITY_QUALITY_OF_SERVICE, 8)
    TEST_TYPE_ALIGN  (PSECURITY_QUALITY_OF_SERVICE, 8)
}

static void test_pack_PSID(void)
{
    /* PSID */
    TEST_TYPE_SIZE   (PSID, 8)
    TEST_TYPE_ALIGN  (PSID, 8)
}

static void test_pack_PSID_IDENTIFIER_AUTHORITY(void)
{
    /* PSID_IDENTIFIER_AUTHORITY */
    TEST_TYPE_SIZE   (PSID_IDENTIFIER_AUTHORITY, 8)
    TEST_TYPE_ALIGN  (PSID_IDENTIFIER_AUTHORITY, 8)
    TEST_TARGET_SIZE (PSID_IDENTIFIER_AUTHORITY, 6)
    TEST_TARGET_ALIGN(PSID_IDENTIFIER_AUTHORITY, 1)
}

static void test_pack_PSINGLE_LIST_ENTRY(void)
{
    /* PSINGLE_LIST_ENTRY */
    TEST_TYPE_SIZE   (PSINGLE_LIST_ENTRY, 8)
    TEST_TYPE_ALIGN  (PSINGLE_LIST_ENTRY, 8)
    TEST_TARGET_SIZE (PSINGLE_LIST_ENTRY, 8)
    TEST_TARGET_ALIGN(PSINGLE_LIST_ENTRY, 8)
}

static void test_pack_PSTR(void)
{
    /* PSTR */
    TEST_TYPE_SIZE   (PSTR, 8)
    TEST_TYPE_ALIGN  (PSTR, 8)
    TEST_TARGET_SIZE (PSTR, 1)
    TEST_TARGET_ALIGN(PSTR, 1)
}

static void test_pack_PSYSTEM_ALARM_ACE(void)
{
    /* PSYSTEM_ALARM_ACE */
    TEST_TYPE_SIZE   (PSYSTEM_ALARM_ACE, 8)
    TEST_TYPE_ALIGN  (PSYSTEM_ALARM_ACE, 8)
    TEST_TARGET_SIZE (PSYSTEM_ALARM_ACE, 12)
    TEST_TARGET_ALIGN(PSYSTEM_ALARM_ACE, 4)
}

static void test_pack_PSYSTEM_AUDIT_ACE(void)
{
    /* PSYSTEM_AUDIT_ACE */
    TEST_TYPE_SIZE   (PSYSTEM_AUDIT_ACE, 8)
    TEST_TYPE_ALIGN  (PSYSTEM_AUDIT_ACE, 8)
    TEST_TARGET_SIZE (PSYSTEM_AUDIT_ACE, 12)
    TEST_TARGET_ALIGN(PSYSTEM_AUDIT_ACE, 4)
}

static void test_pack_PTOKEN_GROUPS(void)
{
    /* PTOKEN_GROUPS */
    TEST_TYPE_SIZE   (PTOKEN_GROUPS, 8)
    TEST_TYPE_ALIGN  (PTOKEN_GROUPS, 8)
    TEST_TARGET_SIZE (PTOKEN_GROUPS, 24)
    TEST_TARGET_ALIGN(PTOKEN_GROUPS, 8)
}

static void test_pack_PTOKEN_PRIVILEGES(void)
{
    /* PTOKEN_PRIVILEGES */
    TEST_TYPE_SIZE   (PTOKEN_PRIVILEGES, 8)
    TEST_TYPE_ALIGN  (PTOKEN_PRIVILEGES, 8)
    TEST_TARGET_SIZE (PTOKEN_PRIVILEGES, 16)
    TEST_TARGET_ALIGN(PTOKEN_PRIVILEGES, 4)
}

static void test_pack_PTOKEN_USER(void)
{
    /* PTOKEN_USER */
    TEST_TYPE_SIZE   (PTOKEN_USER, 8)
    TEST_TYPE_ALIGN  (PTOKEN_USER, 8)
    TEST_TARGET_SIZE (PTOKEN_USER, 16)
    TEST_TARGET_ALIGN(PTOKEN_USER, 8)
}

static void test_pack_PTSTR(void)
{
    /* PTSTR */
    TEST_TYPE_SIZE   (PTSTR, 8)
    TEST_TYPE_ALIGN  (PTSTR, 8)
}

static void test_pack_PULARGE_INTEGER(void)
{
    /* PULARGE_INTEGER */
    TEST_TYPE_SIZE   (PULARGE_INTEGER, 8)
    TEST_TYPE_ALIGN  (PULARGE_INTEGER, 8)
}

static void test_pack_PVECTORED_EXCEPTION_HANDLER(void)
{
    /* PVECTORED_EXCEPTION_HANDLER */
    TEST_TYPE_SIZE   (PVECTORED_EXCEPTION_HANDLER, 8)
    TEST_TYPE_ALIGN  (PVECTORED_EXCEPTION_HANDLER, 8)
}

static void test_pack_PVOID(void)
{
    /* PVOID */
    TEST_TYPE_SIZE   (PVOID, 8)
    TEST_TYPE_ALIGN  (PVOID, 8)
}

static void test_pack_PWCH(void)
{
    /* PWCH */
    TEST_TYPE_SIZE   (PWCH, 8)
    TEST_TYPE_ALIGN  (PWCH, 8)
    TEST_TARGET_SIZE (PWCH, 2)
    TEST_TARGET_ALIGN(PWCH, 2)
}

static void test_pack_PWSTR(void)
{
    /* PWSTR */
    TEST_TYPE_SIZE   (PWSTR, 8)
    TEST_TYPE_ALIGN  (PWSTR, 8)
    TEST_TARGET_SIZE (PWSTR, 2)
    TEST_TARGET_ALIGN(PWSTR, 2)
}

static void test_pack_RTL_CRITICAL_SECTION(void)
{
    /* RTL_CRITICAL_SECTION */
    TEST_TYPE_SIZE   (RTL_CRITICAL_SECTION, 40)
    TEST_TYPE_ALIGN  (RTL_CRITICAL_SECTION, 8)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, DebugInfo, 8)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, DebugInfo, 8)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, DebugInfo, 0)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, LockCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, LockCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, LockCount, 8)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, RecursionCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, RecursionCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, RecursionCount, 12)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, OwningThread, 8)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, OwningThread, 8)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, OwningThread, 16)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, LockSemaphore, 8)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, LockSemaphore, 8)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, LockSemaphore, 24)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, SpinCount, 8)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, SpinCount, 8)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, SpinCount, 32)
}

static void test_pack_RTL_CRITICAL_SECTION_DEBUG(void)
{
    /* RTL_CRITICAL_SECTION_DEBUG */
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, Type, 2)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, Type, 2)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, Type, 0)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, CriticalSection, 8)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, CriticalSection, 8)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, CriticalSection, 8)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, ProcessLocksList, 16)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, ProcessLocksList, 8)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, ProcessLocksList, 16)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, EntryCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, EntryCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, EntryCount, 32)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, ContentionCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, ContentionCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, ContentionCount, 36)
}

static void test_pack_RTL_OSVERSIONINFOEXW(void)
{
    /* RTL_OSVERSIONINFOEXW */
    TEST_TYPE_SIZE   (RTL_OSVERSIONINFOEXW, 284)
    TEST_TYPE_ALIGN  (RTL_OSVERSIONINFOEXW, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwOSVersionInfoSize, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwOSVersionInfoSize, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwOSVersionInfoSize, 0)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwMajorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwMajorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwMajorVersion, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwMinorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwMinorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwMinorVersion, 8)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwBuildNumber, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwBuildNumber, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwBuildNumber, 12)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwPlatformId, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwPlatformId, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwPlatformId, 16)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, szCSDVersion, 256)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, szCSDVersion, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, szCSDVersion, 20)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wServicePackMajor, 2)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wServicePackMajor, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wServicePackMajor, 276)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wServicePackMinor, 2)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wServicePackMinor, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wServicePackMinor, 278)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wSuiteMask, 2)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wSuiteMask, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wSuiteMask, 280)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wProductType, 1)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wProductType, 1)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wProductType, 282)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wReserved, 1)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wReserved, 1)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wReserved, 283)
}

static void test_pack_RTL_OSVERSIONINFOW(void)
{
    /* RTL_OSVERSIONINFOW */
    TEST_TYPE_SIZE   (RTL_OSVERSIONINFOW, 276)
    TEST_TYPE_ALIGN  (RTL_OSVERSIONINFOW, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwOSVersionInfoSize, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwOSVersionInfoSize, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwOSVersionInfoSize, 0)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwMajorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwMajorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwMajorVersion, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwMinorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwMinorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwMinorVersion, 8)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwBuildNumber, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwBuildNumber, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwBuildNumber, 12)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwPlatformId, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwPlatformId, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwPlatformId, 16)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, szCSDVersion, 256)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, szCSDVersion, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, szCSDVersion, 20)
}

static void test_pack_RTL_RESOURCE_DEBUG(void)
{
    /* RTL_RESOURCE_DEBUG */
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, Type, 2)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, Type, 2)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, Type, 0)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, CriticalSection, 8)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, CriticalSection, 8)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, CriticalSection, 8)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, ProcessLocksList, 16)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, ProcessLocksList, 8)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, ProcessLocksList, 16)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, EntryCount, 4)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, EntryCount, 4)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, EntryCount, 32)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, ContentionCount, 4)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, ContentionCount, 4)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, ContentionCount, 36)
}

static void test_pack_SECURITY_CONTEXT_TRACKING_MODE(void)
{
    /* SECURITY_CONTEXT_TRACKING_MODE */
    TEST_TYPE_SIZE   (SECURITY_CONTEXT_TRACKING_MODE, 1)
    TEST_TYPE_ALIGN  (SECURITY_CONTEXT_TRACKING_MODE, 1)
}

static void test_pack_SECURITY_DESCRIPTOR(void)
{
    /* SECURITY_DESCRIPTOR */
    TEST_TYPE_SIZE   (SECURITY_DESCRIPTOR, 40)
    TEST_TYPE_ALIGN  (SECURITY_DESCRIPTOR, 8)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Revision, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Revision, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Revision, 0)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Sbz1, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Sbz1, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Sbz1, 1)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Control, 2)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Control, 2)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Control, 2)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Owner, 8)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Owner, 8)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Owner, 8)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Group, 8)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Group, 8)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Group, 16)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Sacl, 8)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Sacl, 8)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Sacl, 24)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Dacl, 8)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Dacl, 8)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Dacl, 32)
}

static void test_pack_SECURITY_DESCRIPTOR_CONTROL(void)
{
    /* SECURITY_DESCRIPTOR_CONTROL */
    TEST_TYPE_SIZE   (SECURITY_DESCRIPTOR_CONTROL, 2)
    TEST_TYPE_ALIGN  (SECURITY_DESCRIPTOR_CONTROL, 2)
    TEST_TYPE_UNSIGNED(SECURITY_DESCRIPTOR_CONTROL)
}

static void test_pack_SECURITY_DESCRIPTOR_RELATIVE(void)
{
    /* SECURITY_DESCRIPTOR_RELATIVE */
    TEST_TYPE_SIZE   (SECURITY_DESCRIPTOR_RELATIVE, 20)
    TEST_TYPE_ALIGN  (SECURITY_DESCRIPTOR_RELATIVE, 4)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Revision, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Revision, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Revision, 0)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Sbz1, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Sbz1, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Sbz1, 1)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Control, 2)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Control, 2)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Control, 2)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Owner, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Owner, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Owner, 4)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Group, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Group, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Group, 8)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Sacl, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Sacl, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Sacl, 12)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Dacl, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Dacl, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Dacl, 16)
}

static void test_pack_SECURITY_INFORMATION(void)
{
    /* SECURITY_INFORMATION */
    TEST_TYPE_SIZE   (SECURITY_INFORMATION, 4)
    TEST_TYPE_ALIGN  (SECURITY_INFORMATION, 4)
    TEST_TYPE_UNSIGNED(SECURITY_INFORMATION)
}

static void test_pack_SECURITY_QUALITY_OF_SERVICE(void)
{
    /* SECURITY_QUALITY_OF_SERVICE */
    TEST_FIELD_SIZE  (SECURITY_QUALITY_OF_SERVICE, Length, 4)
    TEST_FIELD_ALIGN (SECURITY_QUALITY_OF_SERVICE, Length, 4)
    TEST_FIELD_OFFSET(SECURITY_QUALITY_OF_SERVICE, Length, 0)
}

static void test_pack_SHORT(void)
{
    /* SHORT */
    TEST_TYPE_SIZE   (SHORT, 2)
    TEST_TYPE_ALIGN  (SHORT, 2)
    TEST_TYPE_SIGNED(SHORT)
}

static void test_pack_SID(void)
{
    /* SID */
    TEST_TYPE_SIZE   (SID, 12)
    TEST_TYPE_ALIGN  (SID, 4)
    TEST_FIELD_SIZE  (SID, Revision, 1)
    TEST_FIELD_ALIGN (SID, Revision, 1)
    TEST_FIELD_OFFSET(SID, Revision, 0)
    TEST_FIELD_SIZE  (SID, SubAuthorityCount, 1)
    TEST_FIELD_ALIGN (SID, SubAuthorityCount, 1)
    TEST_FIELD_OFFSET(SID, SubAuthorityCount, 1)
    TEST_FIELD_SIZE  (SID, IdentifierAuthority, 6)
    TEST_FIELD_ALIGN (SID, IdentifierAuthority, 1)
    TEST_FIELD_OFFSET(SID, IdentifierAuthority, 2)
    TEST_FIELD_SIZE  (SID, SubAuthority, 4)
    TEST_FIELD_ALIGN (SID, SubAuthority, 4)
    TEST_FIELD_OFFSET(SID, SubAuthority, 8)
}

static void test_pack_SID_AND_ATTRIBUTES(void)
{
    /* SID_AND_ATTRIBUTES */
    TEST_TYPE_SIZE   (SID_AND_ATTRIBUTES, 16)
    TEST_TYPE_ALIGN  (SID_AND_ATTRIBUTES, 8)
    TEST_FIELD_SIZE  (SID_AND_ATTRIBUTES, Sid, 8)
    TEST_FIELD_ALIGN (SID_AND_ATTRIBUTES, Sid, 8)
    TEST_FIELD_OFFSET(SID_AND_ATTRIBUTES, Sid, 0)
    TEST_FIELD_SIZE  (SID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_ALIGN (SID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_OFFSET(SID_AND_ATTRIBUTES, Attributes, 8)
}

static void test_pack_SID_IDENTIFIER_AUTHORITY(void)
{
    /* SID_IDENTIFIER_AUTHORITY */
    TEST_TYPE_SIZE   (SID_IDENTIFIER_AUTHORITY, 6)
    TEST_TYPE_ALIGN  (SID_IDENTIFIER_AUTHORITY, 1)
    TEST_FIELD_SIZE  (SID_IDENTIFIER_AUTHORITY, Value, 6)
    TEST_FIELD_ALIGN (SID_IDENTIFIER_AUTHORITY, Value, 1)
    TEST_FIELD_OFFSET(SID_IDENTIFIER_AUTHORITY, Value, 0)
}

static void test_pack_SINGLE_LIST_ENTRY(void)
{
    /* SINGLE_LIST_ENTRY */
    TEST_TYPE_SIZE   (SINGLE_LIST_ENTRY, 8)
    TEST_TYPE_ALIGN  (SINGLE_LIST_ENTRY, 8)
    TEST_FIELD_SIZE  (SINGLE_LIST_ENTRY, Next, 8)
    TEST_FIELD_ALIGN (SINGLE_LIST_ENTRY, Next, 8)
    TEST_FIELD_OFFSET(SINGLE_LIST_ENTRY, Next, 0)
}

static void test_pack_SYSTEM_ALARM_ACE(void)
{
    /* SYSTEM_ALARM_ACE */
    TEST_TYPE_SIZE   (SYSTEM_ALARM_ACE, 12)
    TEST_TYPE_ALIGN  (SYSTEM_ALARM_ACE, 4)
    TEST_FIELD_SIZE  (SYSTEM_ALARM_ACE, Header, 4)
    TEST_FIELD_ALIGN (SYSTEM_ALARM_ACE, Header, 2)
    TEST_FIELD_OFFSET(SYSTEM_ALARM_ACE, Header, 0)
    TEST_FIELD_SIZE  (SYSTEM_ALARM_ACE, Mask, 4)
    TEST_FIELD_ALIGN (SYSTEM_ALARM_ACE, Mask, 4)
    TEST_FIELD_OFFSET(SYSTEM_ALARM_ACE, Mask, 4)
    TEST_FIELD_SIZE  (SYSTEM_ALARM_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (SYSTEM_ALARM_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(SYSTEM_ALARM_ACE, SidStart, 8)
}

static void test_pack_SYSTEM_AUDIT_ACE(void)
{
    /* SYSTEM_AUDIT_ACE */
    TEST_TYPE_SIZE   (SYSTEM_AUDIT_ACE, 12)
    TEST_TYPE_ALIGN  (SYSTEM_AUDIT_ACE, 4)
    TEST_FIELD_SIZE  (SYSTEM_AUDIT_ACE, Header, 4)
    TEST_FIELD_ALIGN (SYSTEM_AUDIT_ACE, Header, 2)
    TEST_FIELD_OFFSET(SYSTEM_AUDIT_ACE, Header, 0)
    TEST_FIELD_SIZE  (SYSTEM_AUDIT_ACE, Mask, 4)
    TEST_FIELD_ALIGN (SYSTEM_AUDIT_ACE, Mask, 4)
    TEST_FIELD_OFFSET(SYSTEM_AUDIT_ACE, Mask, 4)
    TEST_FIELD_SIZE  (SYSTEM_AUDIT_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (SYSTEM_AUDIT_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(SYSTEM_AUDIT_ACE, SidStart, 8)
}

static void test_pack_TCHAR(void)
{
    /* TCHAR */
    TEST_TYPE_SIZE   (TCHAR, 1)
    TEST_TYPE_ALIGN  (TCHAR, 1)
}

static void test_pack_TOKEN_DEFAULT_DACL(void)
{
    /* TOKEN_DEFAULT_DACL */
    TEST_TYPE_SIZE   (TOKEN_DEFAULT_DACL, 8)
    TEST_TYPE_ALIGN  (TOKEN_DEFAULT_DACL, 8)
    TEST_FIELD_SIZE  (TOKEN_DEFAULT_DACL, DefaultDacl, 8)
    TEST_FIELD_ALIGN (TOKEN_DEFAULT_DACL, DefaultDacl, 8)
    TEST_FIELD_OFFSET(TOKEN_DEFAULT_DACL, DefaultDacl, 0)
}

static void test_pack_TOKEN_GROUPS(void)
{
    /* TOKEN_GROUPS */
    TEST_TYPE_SIZE   (TOKEN_GROUPS, 24)
    TEST_TYPE_ALIGN  (TOKEN_GROUPS, 8)
    TEST_FIELD_SIZE  (TOKEN_GROUPS, GroupCount, 4)
    TEST_FIELD_ALIGN (TOKEN_GROUPS, GroupCount, 4)
    TEST_FIELD_OFFSET(TOKEN_GROUPS, GroupCount, 0)
    TEST_FIELD_SIZE  (TOKEN_GROUPS, Groups, 16)
    TEST_FIELD_ALIGN (TOKEN_GROUPS, Groups, 8)
    TEST_FIELD_OFFSET(TOKEN_GROUPS, Groups, 8)
}

static void test_pack_TOKEN_OWNER(void)
{
    /* TOKEN_OWNER */
    TEST_TYPE_SIZE   (TOKEN_OWNER, 8)
    TEST_TYPE_ALIGN  (TOKEN_OWNER, 8)
    TEST_FIELD_SIZE  (TOKEN_OWNER, Owner, 8)
    TEST_FIELD_ALIGN (TOKEN_OWNER, Owner, 8)
    TEST_FIELD_OFFSET(TOKEN_OWNER, Owner, 0)
}

static void test_pack_TOKEN_PRIMARY_GROUP(void)
{
    /* TOKEN_PRIMARY_GROUP */
    TEST_TYPE_SIZE   (TOKEN_PRIMARY_GROUP, 8)
    TEST_TYPE_ALIGN  (TOKEN_PRIMARY_GROUP, 8)
    TEST_FIELD_SIZE  (TOKEN_PRIMARY_GROUP, PrimaryGroup, 8)
    TEST_FIELD_ALIGN (TOKEN_PRIMARY_GROUP, PrimaryGroup, 8)
    TEST_FIELD_OFFSET(TOKEN_PRIMARY_GROUP, PrimaryGroup, 0)
}

static void test_pack_TOKEN_PRIVILEGES(void)
{
    /* TOKEN_PRIVILEGES */
    TEST_TYPE_SIZE   (TOKEN_PRIVILEGES, 16)
    TEST_TYPE_ALIGN  (TOKEN_PRIVILEGES, 4)
    TEST_FIELD_SIZE  (TOKEN_PRIVILEGES, PrivilegeCount, 4)
    TEST_FIELD_ALIGN (TOKEN_PRIVILEGES, PrivilegeCount, 4)
    TEST_FIELD_OFFSET(TOKEN_PRIVILEGES, PrivilegeCount, 0)
    TEST_FIELD_SIZE  (TOKEN_PRIVILEGES, Privileges, 12)
    TEST_FIELD_ALIGN (TOKEN_PRIVILEGES, Privileges, 4)
    TEST_FIELD_OFFSET(TOKEN_PRIVILEGES, Privileges, 4)
}

static void test_pack_TOKEN_SOURCE(void)
{
    /* TOKEN_SOURCE */
    TEST_TYPE_SIZE   (TOKEN_SOURCE, 16)
    TEST_TYPE_ALIGN  (TOKEN_SOURCE, 4)
    TEST_FIELD_SIZE  (TOKEN_SOURCE, SourceName, 8)
    TEST_FIELD_ALIGN (TOKEN_SOURCE, SourceName, 1)
    TEST_FIELD_OFFSET(TOKEN_SOURCE, SourceName, 0)
    TEST_FIELD_SIZE  (TOKEN_SOURCE, SourceIdentifier, 8)
    TEST_FIELD_ALIGN (TOKEN_SOURCE, SourceIdentifier, 4)
    TEST_FIELD_OFFSET(TOKEN_SOURCE, SourceIdentifier, 8)
}

static void test_pack_TOKEN_STATISTICS(void)
{
    /* TOKEN_STATISTICS (pack 4) */
    TEST_FIELD_SIZE  (TOKEN_STATISTICS, TokenId, 8)
    TEST_FIELD_ALIGN (TOKEN_STATISTICS, TokenId, 4)
    TEST_FIELD_OFFSET(TOKEN_STATISTICS, TokenId, 0)
    TEST_FIELD_SIZE  (TOKEN_STATISTICS, AuthenticationId, 8)
    TEST_FIELD_ALIGN (TOKEN_STATISTICS, AuthenticationId, 4)
    TEST_FIELD_OFFSET(TOKEN_STATISTICS, AuthenticationId, 8)
    TEST_FIELD_SIZE  (TOKEN_STATISTICS, ExpirationTime, 8)
    TEST_FIELD_ALIGN (TOKEN_STATISTICS, ExpirationTime, 4)
    TEST_FIELD_OFFSET(TOKEN_STATISTICS, ExpirationTime, 16)
}

static void test_pack_TOKEN_USER(void)
{
    /* TOKEN_USER */
    TEST_TYPE_SIZE   (TOKEN_USER, 16)
    TEST_TYPE_ALIGN  (TOKEN_USER, 8)
    TEST_FIELD_SIZE  (TOKEN_USER, User, 16)
    TEST_FIELD_ALIGN (TOKEN_USER, User, 8)
    TEST_FIELD_OFFSET(TOKEN_USER, User, 0)
}

static void test_pack_ULARGE_INTEGER(void)
{
    /* ULARGE_INTEGER */
}

static void test_pack_ULONGLONG(void)
{
    /* ULONGLONG */
    TEST_TYPE_SIZE   (ULONGLONG, 8)
    TEST_TYPE_ALIGN  (ULONGLONG, 8)
    TEST_TYPE_UNSIGNED(ULONGLONG)
}

static void test_pack_WAITORTIMERCALLBACKFUNC(void)
{
    /* WAITORTIMERCALLBACKFUNC */
    TEST_TYPE_SIZE   (WAITORTIMERCALLBACKFUNC, 8)
    TEST_TYPE_ALIGN  (WAITORTIMERCALLBACKFUNC, 8)
}

static void test_pack_WCHAR(void)
{
    /* WCHAR */
    TEST_TYPE_SIZE   (WCHAR, 2)
    TEST_TYPE_ALIGN  (WCHAR, 2)
    TEST_TYPE_UNSIGNED(WCHAR)
}

static void test_pack_ATOM(void)
{
    /* ATOM */
    TEST_TYPE_SIZE   (ATOM, 2)
    TEST_TYPE_ALIGN  (ATOM, 2)
    TEST_TYPE_UNSIGNED(ATOM)
}

static void test_pack_BOOL(void)
{
    /* BOOL */
    TEST_TYPE_SIZE   (BOOL, 4)
    TEST_TYPE_ALIGN  (BOOL, 4)
    TEST_TYPE_SIGNED(BOOL)
}

static void test_pack_BYTE(void)
{
    /* BYTE */
    TEST_TYPE_SIZE   (BYTE, 1)
    TEST_TYPE_ALIGN  (BYTE, 1)
    TEST_TYPE_UNSIGNED(BYTE)
}

static void test_pack_COLORREF(void)
{
    /* COLORREF */
    TEST_TYPE_SIZE   (COLORREF, 4)
    TEST_TYPE_ALIGN  (COLORREF, 4)
    TEST_TYPE_UNSIGNED(COLORREF)
}

static void test_pack_DWORD(void)
{
    /* DWORD */
    TEST_TYPE_SIZE   (DWORD, 4)
    TEST_TYPE_ALIGN  (DWORD, 4)
    TEST_TYPE_UNSIGNED(DWORD)
}

static void test_pack_FARPROC(void)
{
    /* FARPROC */
    TEST_TYPE_SIZE   (FARPROC, 8)
    TEST_TYPE_ALIGN  (FARPROC, 8)
}

static void test_pack_FLOAT(void)
{
    /* FLOAT */
    TEST_TYPE_SIZE   (FLOAT, 4)
    TEST_TYPE_ALIGN  (FLOAT, 4)
}

static void test_pack_GLOBALHANDLE(void)
{
    /* GLOBALHANDLE */
    TEST_TYPE_SIZE   (GLOBALHANDLE, 8)
    TEST_TYPE_ALIGN  (GLOBALHANDLE, 8)
}

static void test_pack_HCURSOR(void)
{
    /* HCURSOR */
    TEST_TYPE_SIZE   (HCURSOR, 8)
    TEST_TYPE_ALIGN  (HCURSOR, 8)
}

static void test_pack_HFILE(void)
{
    /* HFILE */
    TEST_TYPE_SIZE   (HFILE, 4)
    TEST_TYPE_ALIGN  (HFILE, 4)
    TEST_TYPE_SIGNED(HFILE)
}

static void test_pack_HGDIOBJ(void)
{
    /* HGDIOBJ */
    TEST_TYPE_SIZE   (HGDIOBJ, 8)
    TEST_TYPE_ALIGN  (HGDIOBJ, 8)
}

static void test_pack_HGLOBAL(void)
{
    /* HGLOBAL */
    TEST_TYPE_SIZE   (HGLOBAL, 8)
    TEST_TYPE_ALIGN  (HGLOBAL, 8)
}

static void test_pack_HLOCAL(void)
{
    /* HLOCAL */
    TEST_TYPE_SIZE   (HLOCAL, 8)
    TEST_TYPE_ALIGN  (HLOCAL, 8)
}

static void test_pack_HMODULE(void)
{
    /* HMODULE */
    TEST_TYPE_SIZE   (HMODULE, 8)
    TEST_TYPE_ALIGN  (HMODULE, 8)
}

static void test_pack_INT(void)
{
    /* INT */
    TEST_TYPE_SIZE   (INT, 4)
    TEST_TYPE_ALIGN  (INT, 4)
    TEST_TYPE_SIGNED(INT)
}

static void test_pack_LOCALHANDLE(void)
{
    /* LOCALHANDLE */
    TEST_TYPE_SIZE   (LOCALHANDLE, 8)
    TEST_TYPE_ALIGN  (LOCALHANDLE, 8)
}

static void test_pack_LPARAM(void)
{
    /* LPARAM */
    TEST_TYPE_SIZE   (LPARAM, 8)
    TEST_TYPE_ALIGN  (LPARAM, 8)
}

static void test_pack_LPCRECT(void)
{
    /* LPCRECT */
    TEST_TYPE_SIZE   (LPCRECT, 8)
    TEST_TYPE_ALIGN  (LPCRECT, 8)
    TEST_TARGET_SIZE (LPCRECT, 16)
    TEST_TARGET_ALIGN(LPCRECT, 4)
}

static void test_pack_LPCRECTL(void)
{
    /* LPCRECTL */
    TEST_TYPE_SIZE   (LPCRECTL, 8)
    TEST_TYPE_ALIGN  (LPCRECTL, 8)
    TEST_TARGET_SIZE (LPCRECTL, 16)
    TEST_TARGET_ALIGN(LPCRECTL, 4)
}

static void test_pack_LPCVOID(void)
{
    /* LPCVOID */
    TEST_TYPE_SIZE   (LPCVOID, 8)
    TEST_TYPE_ALIGN  (LPCVOID, 8)
}

static void test_pack_LPPOINT(void)
{
    /* LPPOINT */
    TEST_TYPE_SIZE   (LPPOINT, 8)
    TEST_TYPE_ALIGN  (LPPOINT, 8)
    TEST_TARGET_SIZE (LPPOINT, 8)
    TEST_TARGET_ALIGN(LPPOINT, 4)
}

static void test_pack_LPRECT(void)
{
    /* LPRECT */
    TEST_TYPE_SIZE   (LPRECT, 8)
    TEST_TYPE_ALIGN  (LPRECT, 8)
    TEST_TARGET_SIZE (LPRECT, 16)
    TEST_TARGET_ALIGN(LPRECT, 4)
}

static void test_pack_LPRECTL(void)
{
    /* LPRECTL */
    TEST_TYPE_SIZE   (LPRECTL, 8)
    TEST_TYPE_ALIGN  (LPRECTL, 8)
    TEST_TARGET_SIZE (LPRECTL, 16)
    TEST_TARGET_ALIGN(LPRECTL, 4)
}

static void test_pack_LPSIZE(void)
{
    /* LPSIZE */
    TEST_TYPE_SIZE   (LPSIZE, 8)
    TEST_TYPE_ALIGN  (LPSIZE, 8)
    TEST_TARGET_SIZE (LPSIZE, 8)
    TEST_TARGET_ALIGN(LPSIZE, 4)
}

static void test_pack_LRESULT(void)
{
    /* LRESULT */
    TEST_TYPE_SIZE   (LRESULT, 8)
    TEST_TYPE_ALIGN  (LRESULT, 8)
}

static void test_pack_POINT(void)
{
    /* POINT */
    TEST_TYPE_SIZE   (POINT, 8)
    TEST_TYPE_ALIGN  (POINT, 4)
    TEST_FIELD_SIZE  (POINT, x, 4)
    TEST_FIELD_ALIGN (POINT, x, 4)
    TEST_FIELD_OFFSET(POINT, x, 0)
    TEST_FIELD_SIZE  (POINT, y, 4)
    TEST_FIELD_ALIGN (POINT, y, 4)
    TEST_FIELD_OFFSET(POINT, y, 4)
}

static void test_pack_POINTL(void)
{
    /* POINTL */
    TEST_TYPE_SIZE   (POINTL, 8)
    TEST_TYPE_ALIGN  (POINTL, 4)
    TEST_FIELD_SIZE  (POINTL, x, 4)
    TEST_FIELD_ALIGN (POINTL, x, 4)
    TEST_FIELD_OFFSET(POINTL, x, 0)
    TEST_FIELD_SIZE  (POINTL, y, 4)
    TEST_FIELD_ALIGN (POINTL, y, 4)
    TEST_FIELD_OFFSET(POINTL, y, 4)
}

static void test_pack_PPOINT(void)
{
    /* PPOINT */
    TEST_TYPE_SIZE   (PPOINT, 8)
    TEST_TYPE_ALIGN  (PPOINT, 8)
    TEST_TARGET_SIZE (PPOINT, 8)
    TEST_TARGET_ALIGN(PPOINT, 4)
}

static void test_pack_PPOINTL(void)
{
    /* PPOINTL */
    TEST_TYPE_SIZE   (PPOINTL, 8)
    TEST_TYPE_ALIGN  (PPOINTL, 8)
    TEST_TARGET_SIZE (PPOINTL, 8)
    TEST_TARGET_ALIGN(PPOINTL, 4)
}

static void test_pack_PRECT(void)
{
    /* PRECT */
    TEST_TYPE_SIZE   (PRECT, 8)
    TEST_TYPE_ALIGN  (PRECT, 8)
    TEST_TARGET_SIZE (PRECT, 16)
    TEST_TARGET_ALIGN(PRECT, 4)
}

static void test_pack_PRECTL(void)
{
    /* PRECTL */
    TEST_TYPE_SIZE   (PRECTL, 8)
    TEST_TYPE_ALIGN  (PRECTL, 8)
    TEST_TARGET_SIZE (PRECTL, 16)
    TEST_TARGET_ALIGN(PRECTL, 4)
}

static void test_pack_PROC(void)
{
    /* PROC */
    TEST_TYPE_SIZE   (PROC, 8)
    TEST_TYPE_ALIGN  (PROC, 8)
}

static void test_pack_PSIZE(void)
{
    /* PSIZE */
    TEST_TYPE_SIZE   (PSIZE, 8)
    TEST_TYPE_ALIGN  (PSIZE, 8)
    TEST_TARGET_SIZE (PSIZE, 8)
    TEST_TARGET_ALIGN(PSIZE, 4)
}

static void test_pack_PSZ(void)
{
    /* PSZ */
    TEST_TYPE_SIZE   (PSZ, 8)
    TEST_TYPE_ALIGN  (PSZ, 8)
}

static void test_pack_RECT(void)
{
    /* RECT */
    TEST_TYPE_SIZE   (RECT, 16)
    TEST_TYPE_ALIGN  (RECT, 4)
    TEST_FIELD_SIZE  (RECT, left, 4)
    TEST_FIELD_ALIGN (RECT, left, 4)
    TEST_FIELD_OFFSET(RECT, left, 0)
    TEST_FIELD_SIZE  (RECT, top, 4)
    TEST_FIELD_ALIGN (RECT, top, 4)
    TEST_FIELD_OFFSET(RECT, top, 4)
    TEST_FIELD_SIZE  (RECT, right, 4)
    TEST_FIELD_ALIGN (RECT, right, 4)
    TEST_FIELD_OFFSET(RECT, right, 8)
    TEST_FIELD_SIZE  (RECT, bottom, 4)
    TEST_FIELD_ALIGN (RECT, bottom, 4)
    TEST_FIELD_OFFSET(RECT, bottom, 12)
}

static void test_pack_RECTL(void)
{
    /* RECTL */
    TEST_TYPE_SIZE   (RECTL, 16)
    TEST_TYPE_ALIGN  (RECTL, 4)
    TEST_FIELD_SIZE  (RECTL, left, 4)
    TEST_FIELD_ALIGN (RECTL, left, 4)
    TEST_FIELD_OFFSET(RECTL, left, 0)
    TEST_FIELD_SIZE  (RECTL, top, 4)
    TEST_FIELD_ALIGN (RECTL, top, 4)
    TEST_FIELD_OFFSET(RECTL, top, 4)
    TEST_FIELD_SIZE  (RECTL, right, 4)
    TEST_FIELD_ALIGN (RECTL, right, 4)
    TEST_FIELD_OFFSET(RECTL, right, 8)
    TEST_FIELD_SIZE  (RECTL, bottom, 4)
    TEST_FIELD_ALIGN (RECTL, bottom, 4)
    TEST_FIELD_OFFSET(RECTL, bottom, 12)
}

static void test_pack_SIZE(void)
{
    /* SIZE */
    TEST_TYPE_SIZE   (SIZE, 8)
    TEST_TYPE_ALIGN  (SIZE, 4)
    TEST_FIELD_SIZE  (SIZE, cx, 4)
    TEST_FIELD_ALIGN (SIZE, cx, 4)
    TEST_FIELD_OFFSET(SIZE, cx, 0)
    TEST_FIELD_SIZE  (SIZE, cy, 4)
    TEST_FIELD_ALIGN (SIZE, cy, 4)
    TEST_FIELD_OFFSET(SIZE, cy, 4)
}

static void test_pack_SIZEL(void)
{
    /* SIZEL */
    TEST_TYPE_SIZE   (SIZEL, 8)
    TEST_TYPE_ALIGN  (SIZEL, 4)
}

static void test_pack_UCHAR(void)
{
    /* UCHAR */
    TEST_TYPE_SIZE   (UCHAR, 1)
    TEST_TYPE_ALIGN  (UCHAR, 1)
    TEST_TYPE_UNSIGNED(UCHAR)
}

static void test_pack_UINT(void)
{
    /* UINT */
    TEST_TYPE_SIZE   (UINT, 4)
    TEST_TYPE_ALIGN  (UINT, 4)
    TEST_TYPE_UNSIGNED(UINT)
}

static void test_pack_ULONG(void)
{
    /* ULONG */
    TEST_TYPE_SIZE   (ULONG, 4)
    TEST_TYPE_ALIGN  (ULONG, 4)
    TEST_TYPE_UNSIGNED(ULONG)
}

static void test_pack_USHORT(void)
{
    /* USHORT */
    TEST_TYPE_SIZE   (USHORT, 2)
    TEST_TYPE_ALIGN  (USHORT, 2)
    TEST_TYPE_UNSIGNED(USHORT)
}

static void test_pack_WORD(void)
{
    /* WORD */
    TEST_TYPE_SIZE   (WORD, 2)
    TEST_TYPE_ALIGN  (WORD, 2)
    TEST_TYPE_UNSIGNED(WORD)
}

static void test_pack_WPARAM(void)
{
    /* WPARAM */
    TEST_TYPE_SIZE   (WPARAM, 8)
    TEST_TYPE_ALIGN  (WPARAM, 8)
}

#else /* _WIN64 */

static void test_pack_DWORD32(void)
{
    /* DWORD32 */
    TEST_TYPE_SIZE   (DWORD32, 4)
    TEST_TYPE_ALIGN  (DWORD32, 4)
    TEST_TYPE_UNSIGNED(DWORD32)
}

static void test_pack_DWORD64(void)
{
    /* DWORD64 */
    TEST_TYPE_SIZE   (DWORD64, 8)
    TEST_TYPE_ALIGN  (DWORD64, 8)
    TEST_TYPE_UNSIGNED(DWORD64)
}

static void test_pack_DWORD_PTR(void)
{
    /* DWORD_PTR */
    TEST_TYPE_SIZE   (DWORD_PTR, 4)
    TEST_TYPE_ALIGN  (DWORD_PTR, 4)
}

static void test_pack_HALF_PTR(void)
{
    /* HALF_PTR */
    TEST_TYPE_SIZE   (HALF_PTR, 2)
    TEST_TYPE_ALIGN  (HALF_PTR, 2)
    TEST_TYPE_SIGNED(HALF_PTR)
}

static void test_pack_INT16(void)
{
    /* INT16 */
    TEST_TYPE_SIZE   (INT16, 2)
    TEST_TYPE_ALIGN  (INT16, 2)
    TEST_TYPE_SIGNED(INT16)
}

static void test_pack_INT32(void)
{
    /* INT32 */
    TEST_TYPE_SIZE   (INT32, 4)
    TEST_TYPE_ALIGN  (INT32, 4)
    TEST_TYPE_SIGNED(INT32)
}

static void test_pack_INT64(void)
{
    /* INT64 */
    TEST_TYPE_SIZE   (INT64, 8)
    TEST_TYPE_ALIGN  (INT64, 8)
    TEST_TYPE_SIGNED(INT64)
}

static void test_pack_INT8(void)
{
    /* INT8 */
    TEST_TYPE_SIZE   (INT8, 1)
    TEST_TYPE_ALIGN  (INT8, 1)
    TEST_TYPE_SIGNED(INT8)
}

static void test_pack_INT_PTR(void)
{
    /* INT_PTR */
    TEST_TYPE_SIZE   (INT_PTR, 4)
    TEST_TYPE_ALIGN  (INT_PTR, 4)
    TEST_TYPE_SIGNED(INT_PTR)
}

static void test_pack_LONG32(void)
{
    /* LONG32 */
    TEST_TYPE_SIZE   (LONG32, 4)
    TEST_TYPE_ALIGN  (LONG32, 4)
    TEST_TYPE_SIGNED(LONG32)
}

static void test_pack_LONG64(void)
{
    /* LONG64 */
    TEST_TYPE_SIZE   (LONG64, 8)
    TEST_TYPE_ALIGN  (LONG64, 8)
    TEST_TYPE_SIGNED(LONG64)
}

static void test_pack_LONG_PTR(void)
{
    /* LONG_PTR */
    TEST_TYPE_SIZE   (LONG_PTR, 4)
    TEST_TYPE_ALIGN  (LONG_PTR, 4)
    TEST_TYPE_SIGNED(LONG_PTR)
}

static void test_pack_SIZE_T(void)
{
    /* SIZE_T */
    TEST_TYPE_SIZE   (SIZE_T, 4)
    TEST_TYPE_ALIGN  (SIZE_T, 4)
}

static void test_pack_SSIZE_T(void)
{
    /* SSIZE_T */
    TEST_TYPE_SIZE   (SSIZE_T, 4)
    TEST_TYPE_ALIGN  (SSIZE_T, 4)
}

static void test_pack_UHALF_PTR(void)
{
    /* UHALF_PTR */
    TEST_TYPE_SIZE   (UHALF_PTR, 2)
    TEST_TYPE_ALIGN  (UHALF_PTR, 2)
    TEST_TYPE_UNSIGNED(UHALF_PTR)
}

static void test_pack_UINT16(void)
{
    /* UINT16 */
    TEST_TYPE_SIZE   (UINT16, 2)
    TEST_TYPE_ALIGN  (UINT16, 2)
    TEST_TYPE_UNSIGNED(UINT16)
}

static void test_pack_UINT32(void)
{
    /* UINT32 */
    TEST_TYPE_SIZE   (UINT32, 4)
    TEST_TYPE_ALIGN  (UINT32, 4)
    TEST_TYPE_UNSIGNED(UINT32)
}

static void test_pack_UINT64(void)
{
    /* UINT64 */
    TEST_TYPE_SIZE   (UINT64, 8)
    TEST_TYPE_ALIGN  (UINT64, 8)
    TEST_TYPE_UNSIGNED(UINT64)
}

static void test_pack_UINT8(void)
{
    /* UINT8 */
    TEST_TYPE_SIZE   (UINT8, 1)
    TEST_TYPE_ALIGN  (UINT8, 1)
    TEST_TYPE_UNSIGNED(UINT8)
}

static void test_pack_UINT_PTR(void)
{
    /* UINT_PTR */
    TEST_TYPE_SIZE   (UINT_PTR, 4)
    TEST_TYPE_ALIGN  (UINT_PTR, 4)
    TEST_TYPE_UNSIGNED(UINT_PTR)
}

static void test_pack_ULONG32(void)
{
    /* ULONG32 */
    TEST_TYPE_SIZE   (ULONG32, 4)
    TEST_TYPE_ALIGN  (ULONG32, 4)
    TEST_TYPE_UNSIGNED(ULONG32)
}

static void test_pack_ULONG64(void)
{
    /* ULONG64 */
    TEST_TYPE_SIZE   (ULONG64, 8)
    TEST_TYPE_ALIGN  (ULONG64, 8)
    TEST_TYPE_UNSIGNED(ULONG64)
}

static void test_pack_ULONG_PTR(void)
{
    /* ULONG_PTR */
    TEST_TYPE_SIZE   (ULONG_PTR, 4)
    TEST_TYPE_ALIGN  (ULONG_PTR, 4)
    TEST_TYPE_UNSIGNED(ULONG_PTR)
}

static void test_pack_ACCESS_ALLOWED_ACE(void)
{
    /* ACCESS_ALLOWED_ACE */
    TEST_TYPE_SIZE   (ACCESS_ALLOWED_ACE, 12)
    TEST_TYPE_ALIGN  (ACCESS_ALLOWED_ACE, 4)
    TEST_FIELD_SIZE  (ACCESS_ALLOWED_ACE, Header, 4)
    TEST_FIELD_ALIGN (ACCESS_ALLOWED_ACE, Header, 2)
    TEST_FIELD_OFFSET(ACCESS_ALLOWED_ACE, Header, 0)
    TEST_FIELD_SIZE  (ACCESS_ALLOWED_ACE, Mask, 4)
    TEST_FIELD_ALIGN (ACCESS_ALLOWED_ACE, Mask, 4)
    TEST_FIELD_OFFSET(ACCESS_ALLOWED_ACE, Mask, 4)
    TEST_FIELD_SIZE  (ACCESS_ALLOWED_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (ACCESS_ALLOWED_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(ACCESS_ALLOWED_ACE, SidStart, 8)
}

static void test_pack_ACCESS_DENIED_ACE(void)
{
    /* ACCESS_DENIED_ACE */
    TEST_TYPE_SIZE   (ACCESS_DENIED_ACE, 12)
    TEST_TYPE_ALIGN  (ACCESS_DENIED_ACE, 4)
    TEST_FIELD_SIZE  (ACCESS_DENIED_ACE, Header, 4)
    TEST_FIELD_ALIGN (ACCESS_DENIED_ACE, Header, 2)
    TEST_FIELD_OFFSET(ACCESS_DENIED_ACE, Header, 0)
    TEST_FIELD_SIZE  (ACCESS_DENIED_ACE, Mask, 4)
    TEST_FIELD_ALIGN (ACCESS_DENIED_ACE, Mask, 4)
    TEST_FIELD_OFFSET(ACCESS_DENIED_ACE, Mask, 4)
    TEST_FIELD_SIZE  (ACCESS_DENIED_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (ACCESS_DENIED_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(ACCESS_DENIED_ACE, SidStart, 8)
}

static void test_pack_ACCESS_MASK(void)
{
    /* ACCESS_MASK */
    TEST_TYPE_SIZE   (ACCESS_MASK, 4)
    TEST_TYPE_ALIGN  (ACCESS_MASK, 4)
    TEST_TYPE_UNSIGNED(ACCESS_MASK)
}

static void test_pack_ACE_HEADER(void)
{
    /* ACE_HEADER */
    TEST_TYPE_SIZE   (ACE_HEADER, 4)
    TEST_TYPE_ALIGN  (ACE_HEADER, 2)
    TEST_FIELD_SIZE  (ACE_HEADER, AceType, 1)
    TEST_FIELD_ALIGN (ACE_HEADER, AceType, 1)
    TEST_FIELD_OFFSET(ACE_HEADER, AceType, 0)
    TEST_FIELD_SIZE  (ACE_HEADER, AceFlags, 1)
    TEST_FIELD_ALIGN (ACE_HEADER, AceFlags, 1)
    TEST_FIELD_OFFSET(ACE_HEADER, AceFlags, 1)
    TEST_FIELD_SIZE  (ACE_HEADER, AceSize, 2)
    TEST_FIELD_ALIGN (ACE_HEADER, AceSize, 2)
    TEST_FIELD_OFFSET(ACE_HEADER, AceSize, 2)
}

static void test_pack_ACL(void)
{
    /* ACL */
    TEST_TYPE_SIZE   (ACL, 8)
    TEST_TYPE_ALIGN  (ACL, 2)
    TEST_FIELD_SIZE  (ACL, AclRevision, 1)
    TEST_FIELD_ALIGN (ACL, AclRevision, 1)
    TEST_FIELD_OFFSET(ACL, AclRevision, 0)
    TEST_FIELD_SIZE  (ACL, Sbz1, 1)
    TEST_FIELD_ALIGN (ACL, Sbz1, 1)
    TEST_FIELD_OFFSET(ACL, Sbz1, 1)
    TEST_FIELD_SIZE  (ACL, AclSize, 2)
    TEST_FIELD_ALIGN (ACL, AclSize, 2)
    TEST_FIELD_OFFSET(ACL, AclSize, 2)
    TEST_FIELD_SIZE  (ACL, AceCount, 2)
    TEST_FIELD_ALIGN (ACL, AceCount, 2)
    TEST_FIELD_OFFSET(ACL, AceCount, 4)
    TEST_FIELD_SIZE  (ACL, Sbz2, 2)
    TEST_FIELD_ALIGN (ACL, Sbz2, 2)
    TEST_FIELD_OFFSET(ACL, Sbz2, 6)
}

static void test_pack_ACL_REVISION_INFORMATION(void)
{
    /* ACL_REVISION_INFORMATION */
    TEST_TYPE_SIZE   (ACL_REVISION_INFORMATION, 4)
    TEST_TYPE_ALIGN  (ACL_REVISION_INFORMATION, 4)
    TEST_FIELD_SIZE  (ACL_REVISION_INFORMATION, AclRevision, 4)
    TEST_FIELD_ALIGN (ACL_REVISION_INFORMATION, AclRevision, 4)
    TEST_FIELD_OFFSET(ACL_REVISION_INFORMATION, AclRevision, 0)
}

static void test_pack_ACL_SIZE_INFORMATION(void)
{
    /* ACL_SIZE_INFORMATION */
    TEST_TYPE_SIZE   (ACL_SIZE_INFORMATION, 12)
    TEST_TYPE_ALIGN  (ACL_SIZE_INFORMATION, 4)
    TEST_FIELD_SIZE  (ACL_SIZE_INFORMATION, AceCount, 4)
    TEST_FIELD_ALIGN (ACL_SIZE_INFORMATION, AceCount, 4)
    TEST_FIELD_OFFSET(ACL_SIZE_INFORMATION, AceCount, 0)
    TEST_FIELD_SIZE  (ACL_SIZE_INFORMATION, AclBytesInUse, 4)
    TEST_FIELD_ALIGN (ACL_SIZE_INFORMATION, AclBytesInUse, 4)
    TEST_FIELD_OFFSET(ACL_SIZE_INFORMATION, AclBytesInUse, 4)
    TEST_FIELD_SIZE  (ACL_SIZE_INFORMATION, AclBytesFree, 4)
    TEST_FIELD_ALIGN (ACL_SIZE_INFORMATION, AclBytesFree, 4)
    TEST_FIELD_OFFSET(ACL_SIZE_INFORMATION, AclBytesFree, 8)
}

static void test_pack_BOOLEAN(void)
{
    /* BOOLEAN */
    TEST_TYPE_SIZE   (BOOLEAN, 1)
    TEST_TYPE_ALIGN  (BOOLEAN, 1)
    TEST_TYPE_UNSIGNED(BOOLEAN)
}

static void test_pack_CCHAR(void)
{
    /* CCHAR */
    TEST_TYPE_SIZE   (CCHAR, 1)
    TEST_TYPE_ALIGN  (CCHAR, 1)
    TEST_TYPE_SIGNED(CCHAR)
}

static void test_pack_CHAR(void)
{
    /* CHAR */
    TEST_TYPE_SIZE   (CHAR, 1)
    TEST_TYPE_ALIGN  (CHAR, 1)
    TEST_TYPE_SIGNED(CHAR)
}

static void test_pack_DWORDLONG(void)
{
    /* DWORDLONG */
    TEST_TYPE_SIZE   (DWORDLONG, 8)
    TEST_TYPE_ALIGN  (DWORDLONG, 8)
    TEST_TYPE_UNSIGNED(DWORDLONG)
}

static void test_pack_EXCEPTION_POINTERS(void)
{
    /* EXCEPTION_POINTERS */
    TEST_TYPE_SIZE   (EXCEPTION_POINTERS, 8)
    TEST_TYPE_ALIGN  (EXCEPTION_POINTERS, 4)
    TEST_FIELD_SIZE  (EXCEPTION_POINTERS, ExceptionRecord, 4)
    TEST_FIELD_ALIGN (EXCEPTION_POINTERS, ExceptionRecord, 4)
    TEST_FIELD_OFFSET(EXCEPTION_POINTERS, ExceptionRecord, 0)
    TEST_FIELD_SIZE  (EXCEPTION_POINTERS, ContextRecord, 4)
    TEST_FIELD_ALIGN (EXCEPTION_POINTERS, ContextRecord, 4)
    TEST_FIELD_OFFSET(EXCEPTION_POINTERS, ContextRecord, 4)
}

static void test_pack_EXCEPTION_RECORD(void)
{
    /* EXCEPTION_RECORD */
    TEST_TYPE_SIZE   (EXCEPTION_RECORD, 80)
    TEST_TYPE_ALIGN  (EXCEPTION_RECORD, 4)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionCode, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionCode, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionCode, 0)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionFlags, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionFlags, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionFlags, 4)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionRecord, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionRecord, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionRecord, 8)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionAddress, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionAddress, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionAddress, 12)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, NumberParameters, 4)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, NumberParameters, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, NumberParameters, 16)
    TEST_FIELD_SIZE  (EXCEPTION_RECORD, ExceptionInformation, 60)
    TEST_FIELD_ALIGN (EXCEPTION_RECORD, ExceptionInformation, 4)
    TEST_FIELD_OFFSET(EXCEPTION_RECORD, ExceptionInformation, 20)
}

static void test_pack_EXECUTION_STATE(void)
{
    /* EXECUTION_STATE */
    TEST_TYPE_SIZE   (EXECUTION_STATE, 4)
    TEST_TYPE_ALIGN  (EXECUTION_STATE, 4)
    TEST_TYPE_UNSIGNED(EXECUTION_STATE)
}

static void test_pack_FLOATING_SAVE_AREA(void)
{
    /* FLOATING_SAVE_AREA */
    TEST_TYPE_SIZE   (FLOATING_SAVE_AREA, 112)
    TEST_TYPE_ALIGN  (FLOATING_SAVE_AREA, 4)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, ControlWord, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, ControlWord, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, ControlWord, 0)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, StatusWord, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, StatusWord, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, StatusWord, 4)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, TagWord, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, TagWord, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, TagWord, 8)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, ErrorOffset, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, ErrorOffset, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, ErrorOffset, 12)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, ErrorSelector, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, ErrorSelector, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, ErrorSelector, 16)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, DataOffset, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, DataOffset, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, DataOffset, 20)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, DataSelector, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, DataSelector, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, DataSelector, 24)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, RegisterArea, 80)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, RegisterArea, 1)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, RegisterArea, 28)
    TEST_FIELD_SIZE  (FLOATING_SAVE_AREA, Cr0NpxState, 4)
    TEST_FIELD_ALIGN (FLOATING_SAVE_AREA, Cr0NpxState, 4)
    TEST_FIELD_OFFSET(FLOATING_SAVE_AREA, Cr0NpxState, 108)
}

static void test_pack_FPO_DATA(void)
{
    /* FPO_DATA */
    TEST_TYPE_SIZE   (FPO_DATA, 16)
    TEST_TYPE_ALIGN  (FPO_DATA, 4)
    TEST_FIELD_SIZE  (FPO_DATA, ulOffStart, 4)
    TEST_FIELD_ALIGN (FPO_DATA, ulOffStart, 4)
    TEST_FIELD_OFFSET(FPO_DATA, ulOffStart, 0)
    TEST_FIELD_SIZE  (FPO_DATA, cbProcSize, 4)
    TEST_FIELD_ALIGN (FPO_DATA, cbProcSize, 4)
    TEST_FIELD_OFFSET(FPO_DATA, cbProcSize, 4)
    TEST_FIELD_SIZE  (FPO_DATA, cdwLocals, 4)
    TEST_FIELD_ALIGN (FPO_DATA, cdwLocals, 4)
    TEST_FIELD_OFFSET(FPO_DATA, cdwLocals, 8)
    TEST_FIELD_SIZE  (FPO_DATA, cdwParams, 2)
    TEST_FIELD_ALIGN (FPO_DATA, cdwParams, 2)
    TEST_FIELD_OFFSET(FPO_DATA, cdwParams, 12)
}

static void test_pack_GENERIC_MAPPING(void)
{
    /* GENERIC_MAPPING */
    TEST_TYPE_SIZE   (GENERIC_MAPPING, 16)
    TEST_TYPE_ALIGN  (GENERIC_MAPPING, 4)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericRead, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericRead, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericRead, 0)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericWrite, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericWrite, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericWrite, 4)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericExecute, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericExecute, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericExecute, 8)
    TEST_FIELD_SIZE  (GENERIC_MAPPING, GenericAll, 4)
    TEST_FIELD_ALIGN (GENERIC_MAPPING, GenericAll, 4)
    TEST_FIELD_OFFSET(GENERIC_MAPPING, GenericAll, 12)
}

static void test_pack_HANDLE(void)
{
    /* HANDLE */
    TEST_TYPE_SIZE   (HANDLE, 4)
    TEST_TYPE_ALIGN  (HANDLE, 4)
}

static void test_pack_HRESULT(void)
{
    /* HRESULT */
    TEST_TYPE_SIZE   (HRESULT, 4)
    TEST_TYPE_ALIGN  (HRESULT, 4)
}

static void test_pack_IMAGE_ARCHIVE_MEMBER_HEADER(void)
{
    /* IMAGE_ARCHIVE_MEMBER_HEADER */
    TEST_TYPE_SIZE   (IMAGE_ARCHIVE_MEMBER_HEADER, 60)
    TEST_TYPE_ALIGN  (IMAGE_ARCHIVE_MEMBER_HEADER, 1)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Name, 16)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Name, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Name, 0)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Date, 12)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Date, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Date, 16)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, UserID, 6)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, UserID, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, UserID, 28)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, GroupID, 6)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, GroupID, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, GroupID, 34)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Mode, 8)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Mode, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Mode, 40)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, Size, 10)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, Size, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, Size, 48)
    TEST_FIELD_SIZE  (IMAGE_ARCHIVE_MEMBER_HEADER, EndHeader, 2)
    TEST_FIELD_ALIGN (IMAGE_ARCHIVE_MEMBER_HEADER, EndHeader, 1)
    TEST_FIELD_OFFSET(IMAGE_ARCHIVE_MEMBER_HEADER, EndHeader, 58)
}

static void test_pack_IMAGE_AUX_SYMBOL(void)
{
    /* IMAGE_AUX_SYMBOL (pack 2) */
}

static void test_pack_IMAGE_BASE_RELOCATION(void)
{
    /* IMAGE_BASE_RELOCATION */
    TEST_TYPE_SIZE   (IMAGE_BASE_RELOCATION, 8)
    TEST_TYPE_ALIGN  (IMAGE_BASE_RELOCATION, 4)
    TEST_FIELD_SIZE  (IMAGE_BASE_RELOCATION, VirtualAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_BASE_RELOCATION, VirtualAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_BASE_RELOCATION, VirtualAddress, 0)
    TEST_FIELD_SIZE  (IMAGE_BASE_RELOCATION, SizeOfBlock, 4)
    TEST_FIELD_ALIGN (IMAGE_BASE_RELOCATION, SizeOfBlock, 4)
    TEST_FIELD_OFFSET(IMAGE_BASE_RELOCATION, SizeOfBlock, 4)
}

static void test_pack_IMAGE_BOUND_FORWARDER_REF(void)
{
    /* IMAGE_BOUND_FORWARDER_REF */
    TEST_TYPE_SIZE   (IMAGE_BOUND_FORWARDER_REF, 8)
    TEST_TYPE_ALIGN  (IMAGE_BOUND_FORWARDER_REF, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_FORWARDER_REF, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_BOUND_FORWARDER_REF, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_BOUND_FORWARDER_REF, TimeDateStamp, 0)
    TEST_FIELD_SIZE  (IMAGE_BOUND_FORWARDER_REF, OffsetModuleName, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_FORWARDER_REF, OffsetModuleName, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_FORWARDER_REF, OffsetModuleName, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_FORWARDER_REF, Reserved, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_FORWARDER_REF, Reserved, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_FORWARDER_REF, Reserved, 6)
}

static void test_pack_IMAGE_BOUND_IMPORT_DESCRIPTOR(void)
{
    /* IMAGE_BOUND_IMPORT_DESCRIPTOR */
    TEST_TYPE_SIZE   (IMAGE_BOUND_IMPORT_DESCRIPTOR, 8)
    TEST_TYPE_ALIGN  (IMAGE_BOUND_IMPORT_DESCRIPTOR, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_IMPORT_DESCRIPTOR, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_BOUND_IMPORT_DESCRIPTOR, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_BOUND_IMPORT_DESCRIPTOR, TimeDateStamp, 0)
    TEST_FIELD_SIZE  (IMAGE_BOUND_IMPORT_DESCRIPTOR, OffsetModuleName, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_IMPORT_DESCRIPTOR, OffsetModuleName, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_IMPORT_DESCRIPTOR, OffsetModuleName, 4)
    TEST_FIELD_SIZE  (IMAGE_BOUND_IMPORT_DESCRIPTOR, NumberOfModuleForwarderRefs, 2)
    TEST_FIELD_ALIGN (IMAGE_BOUND_IMPORT_DESCRIPTOR, NumberOfModuleForwarderRefs, 2)
    TEST_FIELD_OFFSET(IMAGE_BOUND_IMPORT_DESCRIPTOR, NumberOfModuleForwarderRefs, 6)
}

static void test_pack_IMAGE_COFF_SYMBOLS_HEADER(void)
{
    /* IMAGE_COFF_SYMBOLS_HEADER */
    TEST_TYPE_SIZE   (IMAGE_COFF_SYMBOLS_HEADER, 32)
    TEST_TYPE_ALIGN  (IMAGE_COFF_SYMBOLS_HEADER, 4)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, NumberOfSymbols, 0)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstSymbol, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstSymbol, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstSymbol, 4)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, NumberOfLinenumbers, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, NumberOfLinenumbers, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, NumberOfLinenumbers, 8)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstLinenumber, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstLinenumber, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, LvaToFirstLinenumber, 12)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfCode, 16)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfCode, 20)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToFirstByteOfData, 24)
    TEST_FIELD_SIZE  (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_COFF_SYMBOLS_HEADER, RvaToLastByteOfData, 28)
}

static void test_pack_IMAGE_DATA_DIRECTORY(void)
{
    /* IMAGE_DATA_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_DATA_DIRECTORY, 8)
    TEST_TYPE_ALIGN  (IMAGE_DATA_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_DATA_DIRECTORY, VirtualAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_DATA_DIRECTORY, VirtualAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_DATA_DIRECTORY, VirtualAddress, 0)
    TEST_FIELD_SIZE  (IMAGE_DATA_DIRECTORY, Size, 4)
    TEST_FIELD_ALIGN (IMAGE_DATA_DIRECTORY, Size, 4)
    TEST_FIELD_OFFSET(IMAGE_DATA_DIRECTORY, Size, 4)
}

static void test_pack_IMAGE_DEBUG_DIRECTORY(void)
{
    /* IMAGE_DEBUG_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_DEBUG_DIRECTORY, 28)
    TEST_TYPE_ALIGN  (IMAGE_DEBUG_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, Characteristics, 0)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, Type, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, Type, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, Type, 12)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, SizeOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, SizeOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, SizeOfData, 16)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, AddressOfRawData, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, AddressOfRawData, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, AddressOfRawData, 20)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_DIRECTORY, PointerToRawData, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_DIRECTORY, PointerToRawData, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_DIRECTORY, PointerToRawData, 24)
}

static void test_pack_IMAGE_DEBUG_MISC(void)
{
    /* IMAGE_DEBUG_MISC */
    TEST_TYPE_SIZE   (IMAGE_DEBUG_MISC, 16)
    TEST_TYPE_ALIGN  (IMAGE_DEBUG_MISC, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, DataType, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, DataType, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, DataType, 0)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Length, 4)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Length, 4)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Length, 4)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Unicode, 1)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Unicode, 1)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Unicode, 8)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Reserved, 3)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Reserved, 1)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Reserved, 9)
    TEST_FIELD_SIZE  (IMAGE_DEBUG_MISC, Data, 1)
    TEST_FIELD_ALIGN (IMAGE_DEBUG_MISC, Data, 1)
    TEST_FIELD_OFFSET(IMAGE_DEBUG_MISC, Data, 12)
}

static void test_pack_IMAGE_DOS_HEADER(void)
{
    /* IMAGE_DOS_HEADER (pack 2) */
    TEST_TYPE_SIZE   (IMAGE_DOS_HEADER, 64)
    TEST_TYPE_ALIGN  (IMAGE_DOS_HEADER, 2)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_magic, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_magic, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_magic, 0)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cblp, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cblp, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cblp, 2)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cp, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cp, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cp, 4)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_crlc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_crlc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_crlc, 6)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cparhdr, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cparhdr, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cparhdr, 8)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_minalloc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_minalloc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_minalloc, 10)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_maxalloc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_maxalloc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_maxalloc, 12)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_ss, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_ss, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_ss, 14)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_sp, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_sp, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_sp, 16)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_csum, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_csum, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_csum, 18)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_ip, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_ip, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_ip, 20)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_cs, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_cs, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_cs, 22)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_lfarlc, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_lfarlc, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_lfarlc, 24)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_ovno, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_ovno, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_ovno, 26)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_res, 8)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_res, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_res, 28)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_oemid, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_oemid, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_oemid, 36)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_oeminfo, 2)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_oeminfo, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_oeminfo, 38)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_res2, 20)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_res2, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_res2, 40)
    TEST_FIELD_SIZE  (IMAGE_DOS_HEADER, e_lfanew, 4)
    TEST_FIELD_ALIGN (IMAGE_DOS_HEADER, e_lfanew, 2)
    TEST_FIELD_OFFSET(IMAGE_DOS_HEADER, e_lfanew, 60)
}

static void test_pack_IMAGE_EXPORT_DIRECTORY(void)
{
    /* IMAGE_EXPORT_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_EXPORT_DIRECTORY, 40)
    TEST_TYPE_ALIGN  (IMAGE_EXPORT_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, Characteristics, 0)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, Name, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, Name, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, Name, 12)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, Base, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, Base, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, Base, 16)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, NumberOfFunctions, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, NumberOfFunctions, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, NumberOfFunctions, 20)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, NumberOfNames, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, NumberOfNames, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, NumberOfNames, 24)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, AddressOfFunctions, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, AddressOfFunctions, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, AddressOfFunctions, 28)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, AddressOfNames, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, AddressOfNames, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, AddressOfNames, 32)
    TEST_FIELD_SIZE  (IMAGE_EXPORT_DIRECTORY, AddressOfNameOrdinals, 4)
    TEST_FIELD_ALIGN (IMAGE_EXPORT_DIRECTORY, AddressOfNameOrdinals, 4)
    TEST_FIELD_OFFSET(IMAGE_EXPORT_DIRECTORY, AddressOfNameOrdinals, 36)
}

static void test_pack_IMAGE_FILE_HEADER(void)
{
    /* IMAGE_FILE_HEADER */
    TEST_TYPE_SIZE   (IMAGE_FILE_HEADER, 20)
    TEST_TYPE_ALIGN  (IMAGE_FILE_HEADER, 4)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, Machine, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, Machine, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, Machine, 0)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, NumberOfSections, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, NumberOfSections, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, NumberOfSections, 2)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, PointerToSymbolTable, 4)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, PointerToSymbolTable, 4)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, PointerToSymbolTable, 8)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, NumberOfSymbols, 4)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, NumberOfSymbols, 12)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, SizeOfOptionalHeader, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, SizeOfOptionalHeader, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, SizeOfOptionalHeader, 16)
    TEST_FIELD_SIZE  (IMAGE_FILE_HEADER, Characteristics, 2)
    TEST_FIELD_ALIGN (IMAGE_FILE_HEADER, Characteristics, 2)
    TEST_FIELD_OFFSET(IMAGE_FILE_HEADER, Characteristics, 18)
}

static void test_pack_IMAGE_FUNCTION_ENTRY(void)
{
    /* IMAGE_FUNCTION_ENTRY */
    TEST_TYPE_SIZE   (IMAGE_FUNCTION_ENTRY, 12)
    TEST_TYPE_ALIGN  (IMAGE_FUNCTION_ENTRY, 4)
    TEST_FIELD_SIZE  (IMAGE_FUNCTION_ENTRY, StartingAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_FUNCTION_ENTRY, StartingAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_FUNCTION_ENTRY, StartingAddress, 0)
    TEST_FIELD_SIZE  (IMAGE_FUNCTION_ENTRY, EndingAddress, 4)
    TEST_FIELD_ALIGN (IMAGE_FUNCTION_ENTRY, EndingAddress, 4)
    TEST_FIELD_OFFSET(IMAGE_FUNCTION_ENTRY, EndingAddress, 4)
    TEST_FIELD_SIZE  (IMAGE_FUNCTION_ENTRY, EndOfPrologue, 4)
    TEST_FIELD_ALIGN (IMAGE_FUNCTION_ENTRY, EndOfPrologue, 4)
    TEST_FIELD_OFFSET(IMAGE_FUNCTION_ENTRY, EndOfPrologue, 8)
}

static void test_pack_IMAGE_IMPORT_BY_NAME(void)
{
    /* IMAGE_IMPORT_BY_NAME */
    TEST_TYPE_SIZE   (IMAGE_IMPORT_BY_NAME, 4)
    TEST_TYPE_ALIGN  (IMAGE_IMPORT_BY_NAME, 2)
    TEST_FIELD_SIZE  (IMAGE_IMPORT_BY_NAME, Hint, 2)
    TEST_FIELD_ALIGN (IMAGE_IMPORT_BY_NAME, Hint, 2)
    TEST_FIELD_OFFSET(IMAGE_IMPORT_BY_NAME, Hint, 0)
    TEST_FIELD_SIZE  (IMAGE_IMPORT_BY_NAME, Name, 1)
    TEST_FIELD_ALIGN (IMAGE_IMPORT_BY_NAME, Name, 1)
    TEST_FIELD_OFFSET(IMAGE_IMPORT_BY_NAME, Name, 2)
}

static void test_pack_IMAGE_IMPORT_DESCRIPTOR(void)
{
    /* IMAGE_IMPORT_DESCRIPTOR */
}

static void test_pack_IMAGE_LINENUMBER(void)
{
    /* IMAGE_LINENUMBER (pack 2) */
}

static void test_pack_IMAGE_LOAD_CONFIG_DIRECTORY(void)
{
    /* IMAGE_LOAD_CONFIG_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_LOAD_CONFIG_DIRECTORY, 72)
    TEST_TYPE_ALIGN  (IMAGE_LOAD_CONFIG_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, Size, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, Size, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, Size, 0)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsClear, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsClear, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsClear, 12)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsSet, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsSet, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, GlobalFlagsSet, 16)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, CriticalSectionDefaultTimeout, 20)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitFreeBlockThreshold, 24)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitTotalFreeThreshold, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitTotalFreeThreshold, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, DeCommitTotalFreeThreshold, 28)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, LockPrefixTable, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, LockPrefixTable, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, LockPrefixTable, 32)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, MaximumAllocationSize, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, MaximumAllocationSize, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, MaximumAllocationSize, 36)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, VirtualMemoryThreshold, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, VirtualMemoryThreshold, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, VirtualMemoryThreshold, 40)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessHeapFlags, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessHeapFlags, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, ProcessHeapFlags, 44)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessAffinityMask, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, ProcessAffinityMask, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, ProcessAffinityMask, 48)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, CSDVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, CSDVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, CSDVersion, 52)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, Reserved1, 2)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, Reserved1, 2)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, Reserved1, 54)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, EditList, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, EditList, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, EditList, 56)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SecurityCookie, 60)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerTable, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerTable, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerTable, 64)
    TEST_FIELD_SIZE  (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 4)
    TEST_FIELD_ALIGN (IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 4)
    TEST_FIELD_OFFSET(IMAGE_LOAD_CONFIG_DIRECTORY, SEHandlerCount, 68)
}

static void test_pack_IMAGE_NT_HEADERS(void)
{
    /* IMAGE_NT_HEADERS */
    TEST_TYPE_SIZE   (IMAGE_NT_HEADERS, 248)
    TEST_TYPE_ALIGN  (IMAGE_NT_HEADERS, 4)
}

static void test_pack_IMAGE_NT_HEADERS32(void)
{
    /* IMAGE_NT_HEADERS32 */
    TEST_TYPE_SIZE   (IMAGE_NT_HEADERS32, 248)
    TEST_TYPE_ALIGN  (IMAGE_NT_HEADERS32, 4)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS32, Signature, 4)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS32, Signature, 4)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS32, Signature, 0)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS32, FileHeader, 20)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS32, FileHeader, 4)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS32, FileHeader, 4)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS32, OptionalHeader, 224)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS32, OptionalHeader, 4)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS32, OptionalHeader, 24)
}

static void test_pack_IMAGE_NT_HEADERS64(void)
{
    /* IMAGE_NT_HEADERS64 */
    TEST_TYPE_SIZE   (IMAGE_NT_HEADERS64, 264)
    TEST_TYPE_ALIGN  (IMAGE_NT_HEADERS64, 8)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS64, Signature, 4)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS64, Signature, 4)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS64, Signature, 0)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS64, FileHeader, 20)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS64, FileHeader, 4)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS64, FileHeader, 4)
    TEST_FIELD_SIZE  (IMAGE_NT_HEADERS64, OptionalHeader, 240)
    TEST_FIELD_ALIGN (IMAGE_NT_HEADERS64, OptionalHeader, 8)
    TEST_FIELD_OFFSET(IMAGE_NT_HEADERS64, OptionalHeader, 24)
}

static void test_pack_IMAGE_OPTIONAL_HEADER(void)
{
    /* IMAGE_OPTIONAL_HEADER */
    TEST_TYPE_SIZE   (IMAGE_OPTIONAL_HEADER, 224)
    TEST_TYPE_ALIGN  (IMAGE_OPTIONAL_HEADER, 4)
}

static void test_pack_IMAGE_OPTIONAL_HEADER32(void)
{
    /* IMAGE_OPTIONAL_HEADER32 */
    TEST_TYPE_SIZE   (IMAGE_OPTIONAL_HEADER32, 224)
    TEST_TYPE_ALIGN  (IMAGE_OPTIONAL_HEADER32, 4)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, Magic, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, Magic, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, Magic, 0)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MajorLinkerVersion, 1)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MajorLinkerVersion, 1)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MajorLinkerVersion, 2)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MinorLinkerVersion, 1)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MinorLinkerVersion, 1)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MinorLinkerVersion, 3)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfCode, 4)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfInitializedData, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfInitializedData, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfInitializedData, 8)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfUninitializedData, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfUninitializedData, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfUninitializedData, 12)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, AddressOfEntryPoint, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, AddressOfEntryPoint, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, AddressOfEntryPoint, 16)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, BaseOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, BaseOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, BaseOfCode, 20)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, BaseOfData, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, BaseOfData, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, BaseOfData, 24)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, ImageBase, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, ImageBase, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, ImageBase, 28)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SectionAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SectionAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SectionAlignment, 32)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, FileAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, FileAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, FileAlignment, 36)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MajorOperatingSystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MajorOperatingSystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MajorOperatingSystemVersion, 40)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MinorOperatingSystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MinorOperatingSystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MinorOperatingSystemVersion, 42)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MajorImageVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MajorImageVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MajorImageVersion, 44)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MinorImageVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MinorImageVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MinorImageVersion, 46)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MajorSubsystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MajorSubsystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MajorSubsystemVersion, 48)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, MinorSubsystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, MinorSubsystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, MinorSubsystemVersion, 50)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, Win32VersionValue, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, Win32VersionValue, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, Win32VersionValue, 52)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfImage, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfImage, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfImage, 56)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfHeaders, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfHeaders, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfHeaders, 60)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, CheckSum, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, CheckSum, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, CheckSum, 64)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, Subsystem, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, Subsystem, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, Subsystem, 68)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, DllCharacteristics, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, DllCharacteristics, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, DllCharacteristics, 70)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfStackReserve, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfStackReserve, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfStackReserve, 72)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfStackCommit, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfStackCommit, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfStackCommit, 76)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfHeapReserve, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfHeapReserve, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfHeapReserve, 80)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, SizeOfHeapCommit, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, SizeOfHeapCommit, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, SizeOfHeapCommit, 84)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, LoaderFlags, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, LoaderFlags, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, LoaderFlags, 88)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, NumberOfRvaAndSizes, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, NumberOfRvaAndSizes, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, NumberOfRvaAndSizes, 92)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER32, DataDirectory, 128)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER32, DataDirectory, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER32, DataDirectory, 96)
}

static void test_pack_IMAGE_OPTIONAL_HEADER64(void)
{
    /* IMAGE_OPTIONAL_HEADER64 */
    TEST_TYPE_SIZE   (IMAGE_OPTIONAL_HEADER64, 240)
    TEST_TYPE_ALIGN  (IMAGE_OPTIONAL_HEADER64, 8)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, Magic, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, Magic, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, Magic, 0)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MajorLinkerVersion, 1)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MajorLinkerVersion, 1)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MajorLinkerVersion, 2)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MinorLinkerVersion, 1)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MinorLinkerVersion, 1)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MinorLinkerVersion, 3)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfCode, 4)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfInitializedData, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfInitializedData, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfInitializedData, 8)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfUninitializedData, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfUninitializedData, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfUninitializedData, 12)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, AddressOfEntryPoint, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, AddressOfEntryPoint, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, AddressOfEntryPoint, 16)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, BaseOfCode, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, BaseOfCode, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, BaseOfCode, 20)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, ImageBase, 8)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, ImageBase, 8)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, ImageBase, 24)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SectionAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SectionAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SectionAlignment, 32)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, FileAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, FileAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, FileAlignment, 36)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MajorOperatingSystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MajorOperatingSystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MajorOperatingSystemVersion, 40)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MinorOperatingSystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MinorOperatingSystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MinorOperatingSystemVersion, 42)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MajorImageVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MajorImageVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MajorImageVersion, 44)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MinorImageVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MinorImageVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MinorImageVersion, 46)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MajorSubsystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MajorSubsystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MajorSubsystemVersion, 48)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, MinorSubsystemVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, MinorSubsystemVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, MinorSubsystemVersion, 50)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, Win32VersionValue, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, Win32VersionValue, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, Win32VersionValue, 52)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfImage, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfImage, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfImage, 56)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfHeaders, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfHeaders, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfHeaders, 60)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, CheckSum, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, CheckSum, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, CheckSum, 64)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, Subsystem, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, Subsystem, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, Subsystem, 68)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, DllCharacteristics, 2)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, DllCharacteristics, 2)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, DllCharacteristics, 70)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfStackReserve, 8)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfStackReserve, 8)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfStackReserve, 72)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfStackCommit, 8)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfStackCommit, 8)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfStackCommit, 80)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfHeapReserve, 8)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfHeapReserve, 8)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfHeapReserve, 88)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, SizeOfHeapCommit, 8)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, SizeOfHeapCommit, 8)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, SizeOfHeapCommit, 96)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, LoaderFlags, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, LoaderFlags, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, LoaderFlags, 104)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, NumberOfRvaAndSizes, 4)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, NumberOfRvaAndSizes, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, NumberOfRvaAndSizes, 108)
    TEST_FIELD_SIZE  (IMAGE_OPTIONAL_HEADER64, DataDirectory, 128)
    TEST_FIELD_ALIGN (IMAGE_OPTIONAL_HEADER64, DataDirectory, 4)
    TEST_FIELD_OFFSET(IMAGE_OPTIONAL_HEADER64, DataDirectory, 112)
}

static void test_pack_IMAGE_OS2_HEADER(void)
{
    /* IMAGE_OS2_HEADER (pack 2) */
    TEST_TYPE_SIZE   (IMAGE_OS2_HEADER, 64)
    TEST_TYPE_ALIGN  (IMAGE_OS2_HEADER, 2)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_magic, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_magic, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_magic, 0)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_ver, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_ver, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_ver, 2)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_rev, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_rev, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_rev, 3)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_enttab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_enttab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_enttab, 4)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cbenttab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cbenttab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cbenttab, 6)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_crc, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_crc, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_crc, 8)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_flags, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_flags, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_flags, 12)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_autodata, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_autodata, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_autodata, 14)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_heap, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_heap, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_heap, 16)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_stack, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_stack, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_stack, 18)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_csip, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_csip, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_csip, 20)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_sssp, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_sssp, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_sssp, 24)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cseg, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cseg, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cseg, 28)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cmod, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cmod, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cmod, 30)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cbnrestab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cbnrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cbnrestab, 32)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_segtab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_segtab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_segtab, 34)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_rsrctab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_rsrctab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_rsrctab, 36)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_restab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_restab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_restab, 38)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_modtab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_modtab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_modtab, 40)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_imptab, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_imptab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_imptab, 42)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_nrestab, 4)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_nrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_nrestab, 44)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cmovent, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cmovent, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cmovent, 48)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_align, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_align, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_align, 50)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_cres, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_cres, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_cres, 52)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_exetyp, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_exetyp, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_exetyp, 54)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_flagsothers, 1)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_flagsothers, 1)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_flagsothers, 55)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_pretthunks, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_pretthunks, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_pretthunks, 56)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_psegrefbytes, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_psegrefbytes, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_psegrefbytes, 58)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_swaparea, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_swaparea, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_swaparea, 60)
    TEST_FIELD_SIZE  (IMAGE_OS2_HEADER, ne_expver, 2)
    TEST_FIELD_ALIGN (IMAGE_OS2_HEADER, ne_expver, 2)
    TEST_FIELD_OFFSET(IMAGE_OS2_HEADER, ne_expver, 62)
}

static void test_pack_IMAGE_RELOCATION(void)
{
    /* IMAGE_RELOCATION (pack 2) */
}

static void test_pack_IMAGE_RESOURCE_DATA_ENTRY(void)
{
    /* IMAGE_RESOURCE_DATA_ENTRY */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DATA_ENTRY, 16)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DATA_ENTRY, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, OffsetToData, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, OffsetToData, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, OffsetToData, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, Size, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, Size, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, Size, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, CodePage, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, CodePage, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, CodePage, 8)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DATA_ENTRY, Reserved, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DATA_ENTRY, Reserved, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DATA_ENTRY, Reserved, 12)
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY(void)
{
    /* IMAGE_RESOURCE_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DIRECTORY, 16)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DIRECTORY, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, Characteristics, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, TimeDateStamp, 4)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, MajorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, MajorVersion, 8)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, MinorVersion, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, MinorVersion, 10)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, NumberOfNamedEntries, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, NumberOfNamedEntries, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, NumberOfNamedEntries, 12)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY, NumberOfIdEntries, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY, NumberOfIdEntries, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY, NumberOfIdEntries, 14)
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY_ENTRY(void)
{
    /* IMAGE_RESOURCE_DIRECTORY_ENTRY */
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY_STRING(void)
{
    /* IMAGE_RESOURCE_DIRECTORY_STRING */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DIRECTORY_STRING, 4)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DIRECTORY_STRING, 2)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY_STRING, Length, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY_STRING, Length, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY_STRING, Length, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIRECTORY_STRING, NameString, 1)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIRECTORY_STRING, NameString, 1)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIRECTORY_STRING, NameString, 2)
}

static void test_pack_IMAGE_RESOURCE_DIR_STRING_U(void)
{
    /* IMAGE_RESOURCE_DIR_STRING_U */
    TEST_TYPE_SIZE   (IMAGE_RESOURCE_DIR_STRING_U, 4)
    TEST_TYPE_ALIGN  (IMAGE_RESOURCE_DIR_STRING_U, 2)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIR_STRING_U, Length, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIR_STRING_U, Length, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIR_STRING_U, Length, 0)
    TEST_FIELD_SIZE  (IMAGE_RESOURCE_DIR_STRING_U, NameString, 2)
    TEST_FIELD_ALIGN (IMAGE_RESOURCE_DIR_STRING_U, NameString, 2)
    TEST_FIELD_OFFSET(IMAGE_RESOURCE_DIR_STRING_U, NameString, 2)
}

static void test_pack_IMAGE_SECTION_HEADER(void)
{
    /* IMAGE_SECTION_HEADER */
    TEST_FIELD_SIZE  (IMAGE_SECTION_HEADER, Name, 8)
    TEST_FIELD_ALIGN (IMAGE_SECTION_HEADER, Name, 1)
    TEST_FIELD_OFFSET(IMAGE_SECTION_HEADER, Name, 0)
}

static void test_pack_IMAGE_SEPARATE_DEBUG_HEADER(void)
{
    /* IMAGE_SEPARATE_DEBUG_HEADER */
    TEST_TYPE_SIZE   (IMAGE_SEPARATE_DEBUG_HEADER, 48)
    TEST_TYPE_ALIGN  (IMAGE_SEPARATE_DEBUG_HEADER, 4)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Signature, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Signature, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Signature, 0)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Flags, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Flags, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Flags, 2)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Machine, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Machine, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Machine, 4)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Characteristics, 2)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Characteristics, 2)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Characteristics, 6)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, TimeDateStamp, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, TimeDateStamp, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, TimeDateStamp, 8)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, CheckSum, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, CheckSum, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, CheckSum, 12)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, ImageBase, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, ImageBase, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, ImageBase, 16)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, SizeOfImage, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, SizeOfImage, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, SizeOfImage, 20)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, NumberOfSections, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, NumberOfSections, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, NumberOfSections, 24)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, ExportedNamesSize, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, ExportedNamesSize, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, ExportedNamesSize, 28)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, DebugDirectorySize, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, DebugDirectorySize, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, DebugDirectorySize, 32)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, SectionAlignment, 4)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, SectionAlignment, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, SectionAlignment, 36)
    TEST_FIELD_SIZE  (IMAGE_SEPARATE_DEBUG_HEADER, Reserved, 8)
    TEST_FIELD_ALIGN (IMAGE_SEPARATE_DEBUG_HEADER, Reserved, 4)
    TEST_FIELD_OFFSET(IMAGE_SEPARATE_DEBUG_HEADER, Reserved, 40)
}

static void test_pack_IMAGE_SYMBOL(void)
{
    /* IMAGE_SYMBOL (pack 2) */
}

static void test_pack_IMAGE_THUNK_DATA(void)
{
    /* IMAGE_THUNK_DATA */
}

static void test_pack_IMAGE_TLS_DIRECTORY(void)
{
    /* IMAGE_TLS_DIRECTORY */
    TEST_TYPE_SIZE   (IMAGE_TLS_DIRECTORY, 24)
    TEST_TYPE_ALIGN  (IMAGE_TLS_DIRECTORY, 4)
}

static void test_pack_IMAGE_TLS_DIRECTORY32(void)
{
    /* IMAGE_TLS_DIRECTORY32 */
    TEST_TYPE_SIZE   (IMAGE_TLS_DIRECTORY32, 24)
    TEST_TYPE_ALIGN  (IMAGE_TLS_DIRECTORY32, 4)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, StartAddressOfRawData, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, StartAddressOfRawData, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, StartAddressOfRawData, 0)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, EndAddressOfRawData, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, EndAddressOfRawData, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, EndAddressOfRawData, 4)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, AddressOfIndex, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, AddressOfIndex, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, AddressOfIndex, 8)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, AddressOfCallBacks, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, AddressOfCallBacks, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, AddressOfCallBacks, 12)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, SizeOfZeroFill, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, SizeOfZeroFill, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, SizeOfZeroFill, 16)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY32, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY32, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY32, Characteristics, 20)
}

static void test_pack_IMAGE_TLS_DIRECTORY64(void)
{
    /* IMAGE_TLS_DIRECTORY64 */
    TEST_TYPE_SIZE   (IMAGE_TLS_DIRECTORY64, 40)
    TEST_TYPE_ALIGN  (IMAGE_TLS_DIRECTORY64, 8)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, StartAddressOfRawData, 8)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, StartAddressOfRawData, 8)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, StartAddressOfRawData, 0)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, EndAddressOfRawData, 8)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, EndAddressOfRawData, 8)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, EndAddressOfRawData, 8)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, AddressOfIndex, 8)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, AddressOfIndex, 8)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, AddressOfIndex, 16)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, AddressOfCallBacks, 8)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, AddressOfCallBacks, 8)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, AddressOfCallBacks, 24)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, SizeOfZeroFill, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, SizeOfZeroFill, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, SizeOfZeroFill, 32)
    TEST_FIELD_SIZE  (IMAGE_TLS_DIRECTORY64, Characteristics, 4)
    TEST_FIELD_ALIGN (IMAGE_TLS_DIRECTORY64, Characteristics, 4)
    TEST_FIELD_OFFSET(IMAGE_TLS_DIRECTORY64, Characteristics, 36)
}

static void test_pack_IMAGE_VXD_HEADER(void)
{
    /* IMAGE_VXD_HEADER (pack 2) */
    TEST_TYPE_SIZE   (IMAGE_VXD_HEADER, 196)
    TEST_TYPE_ALIGN  (IMAGE_VXD_HEADER, 2)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_magic, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_magic, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_magic, 0)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_border, 1)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_border, 1)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_border, 2)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_worder, 1)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_worder, 1)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_worder, 3)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_level, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_level, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_level, 4)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_cpu, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_cpu, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_cpu, 8)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_os, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_os, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_os, 10)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ver, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ver, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ver, 12)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_mflags, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_mflags, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_mflags, 16)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_mpages, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_mpages, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_mpages, 20)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_startobj, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_startobj, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_startobj, 24)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_eip, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_eip, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_eip, 28)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_stackobj, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_stackobj, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_stackobj, 32)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_esp, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_esp, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_esp, 36)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_pagesize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_pagesize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_pagesize, 40)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_lastpagesize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_lastpagesize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_lastpagesize, 44)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_fixupsize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_fixupsize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_fixupsize, 48)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_fixupsum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_fixupsum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_fixupsum, 52)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ldrsize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ldrsize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ldrsize, 56)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ldrsum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ldrsum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ldrsum, 60)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_objtab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_objtab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_objtab, 64)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_objcnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_objcnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_objcnt, 68)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_objmap, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_objmap, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_objmap, 72)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_itermap, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_itermap, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_itermap, 76)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_rsrctab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_rsrctab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_rsrctab, 80)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_rsrccnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_rsrccnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_rsrccnt, 84)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_restab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_restab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_restab, 88)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_enttab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_enttab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_enttab, 92)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_dirtab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_dirtab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_dirtab, 96)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_dircnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_dircnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_dircnt, 100)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_fpagetab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_fpagetab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_fpagetab, 104)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_frectab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_frectab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_frectab, 108)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_impmod, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_impmod, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_impmod, 112)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_impmodcnt, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_impmodcnt, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_impmodcnt, 116)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_impproc, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_impproc, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_impproc, 120)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_pagesum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_pagesum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_pagesum, 124)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_datapage, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_datapage, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_datapage, 128)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_preload, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_preload, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_preload, 132)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_nrestab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_nrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_nrestab, 136)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_cbnrestab, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_cbnrestab, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_cbnrestab, 140)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_nressum, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_nressum, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_nressum, 144)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_autodata, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_autodata, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_autodata, 148)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_debuginfo, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_debuginfo, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_debuginfo, 152)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_debuglen, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_debuglen, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_debuglen, 156)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_instpreload, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_instpreload, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_instpreload, 160)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_instdemand, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_instdemand, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_instdemand, 164)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_heapsize, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_heapsize, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_heapsize, 168)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_res3, 12)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_res3, 1)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_res3, 172)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_winresoff, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_winresoff, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_winresoff, 184)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_winreslen, 4)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_winreslen, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_winreslen, 188)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_devid, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_devid, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_devid, 192)
    TEST_FIELD_SIZE  (IMAGE_VXD_HEADER, e32_ddkver, 2)
    TEST_FIELD_ALIGN (IMAGE_VXD_HEADER, e32_ddkver, 2)
    TEST_FIELD_OFFSET(IMAGE_VXD_HEADER, e32_ddkver, 194)
}

static void test_pack_IO_COUNTERS(void)
{
    /* IO_COUNTERS (pack 8) */
    TEST_TYPE_SIZE   (IO_COUNTERS, 48)
    TEST_TYPE_ALIGN  (IO_COUNTERS, 8)
    TEST_FIELD_SIZE  (IO_COUNTERS, ReadOperationCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, ReadOperationCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, ReadOperationCount, 0)
    TEST_FIELD_SIZE  (IO_COUNTERS, WriteOperationCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, WriteOperationCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, WriteOperationCount, 8)
    TEST_FIELD_SIZE  (IO_COUNTERS, OtherOperationCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, OtherOperationCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, OtherOperationCount, 16)
    TEST_FIELD_SIZE  (IO_COUNTERS, ReadTransferCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, ReadTransferCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, ReadTransferCount, 24)
    TEST_FIELD_SIZE  (IO_COUNTERS, WriteTransferCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, WriteTransferCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, WriteTransferCount, 32)
    TEST_FIELD_SIZE  (IO_COUNTERS, OtherTransferCount, 8)
    TEST_FIELD_ALIGN (IO_COUNTERS, OtherTransferCount, 8)
    TEST_FIELD_OFFSET(IO_COUNTERS, OtherTransferCount, 40)
}

static void test_pack_LANGID(void)
{
    /* LANGID */
    TEST_TYPE_SIZE   (LANGID, 2)
    TEST_TYPE_ALIGN  (LANGID, 2)
    TEST_TYPE_UNSIGNED(LANGID)
}

static void test_pack_LARGE_INTEGER(void)
{
    /* LARGE_INTEGER */
}

static void test_pack_LCID(void)
{
    /* LCID */
    TEST_TYPE_SIZE   (LCID, 4)
    TEST_TYPE_ALIGN  (LCID, 4)
    TEST_TYPE_UNSIGNED(LCID)
}

static void test_pack_LIST_ENTRY(void)
{
    /* LIST_ENTRY */
    TEST_TYPE_SIZE   (LIST_ENTRY, 8)
    TEST_TYPE_ALIGN  (LIST_ENTRY, 4)
    TEST_FIELD_SIZE  (LIST_ENTRY, Flink, 4)
    TEST_FIELD_ALIGN (LIST_ENTRY, Flink, 4)
    TEST_FIELD_OFFSET(LIST_ENTRY, Flink, 0)
    TEST_FIELD_SIZE  (LIST_ENTRY, Blink, 4)
    TEST_FIELD_ALIGN (LIST_ENTRY, Blink, 4)
    TEST_FIELD_OFFSET(LIST_ENTRY, Blink, 4)
}

static void test_pack_LONG(void)
{
    /* LONG */
    TEST_TYPE_SIZE   (LONG, 4)
    TEST_TYPE_ALIGN  (LONG, 4)
    TEST_TYPE_SIGNED(LONG)
}

static void test_pack_LONGLONG(void)
{
    /* LONGLONG */
    TEST_TYPE_SIZE   (LONGLONG, 8)
    TEST_TYPE_ALIGN  (LONGLONG, 8)
    TEST_TYPE_SIGNED(LONGLONG)
}

static void test_pack_LUID(void)
{
    /* LUID */
    TEST_TYPE_SIZE   (LUID, 8)
    TEST_TYPE_ALIGN  (LUID, 4)
    TEST_FIELD_SIZE  (LUID, LowPart, 4)
    TEST_FIELD_ALIGN (LUID, LowPart, 4)
    TEST_FIELD_OFFSET(LUID, LowPart, 0)
    TEST_FIELD_SIZE  (LUID, HighPart, 4)
    TEST_FIELD_ALIGN (LUID, HighPart, 4)
    TEST_FIELD_OFFSET(LUID, HighPart, 4)
}

static void test_pack_LUID_AND_ATTRIBUTES(void)
{
    /* LUID_AND_ATTRIBUTES (pack 4) */
    TEST_TYPE_SIZE   (LUID_AND_ATTRIBUTES, 12)
    TEST_TYPE_ALIGN  (LUID_AND_ATTRIBUTES, 4)
    TEST_FIELD_SIZE  (LUID_AND_ATTRIBUTES, Luid, 8)
    TEST_FIELD_ALIGN (LUID_AND_ATTRIBUTES, Luid, 4)
    TEST_FIELD_OFFSET(LUID_AND_ATTRIBUTES, Luid, 0)
    TEST_FIELD_SIZE  (LUID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_ALIGN (LUID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_OFFSET(LUID_AND_ATTRIBUTES, Attributes, 8)
}

static void test_pack_MEMORY_BASIC_INFORMATION(void)
{
    /* MEMORY_BASIC_INFORMATION */
    TEST_TYPE_SIZE   (MEMORY_BASIC_INFORMATION, 28)
    TEST_TYPE_ALIGN  (MEMORY_BASIC_INFORMATION, 4)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, BaseAddress, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, BaseAddress, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, BaseAddress, 0)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, AllocationBase, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, AllocationBase, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, AllocationBase, 4)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, AllocationProtect, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, AllocationProtect, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, AllocationProtect, 8)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, RegionSize, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, RegionSize, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, RegionSize, 12)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, State, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, State, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, State, 16)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, Protect, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, Protect, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, Protect, 20)
    TEST_FIELD_SIZE  (MEMORY_BASIC_INFORMATION, Type, 4)
    TEST_FIELD_ALIGN (MEMORY_BASIC_INFORMATION, Type, 4)
    TEST_FIELD_OFFSET(MEMORY_BASIC_INFORMATION, Type, 24)
}

static void test_pack_MESSAGE_RESOURCE_BLOCK(void)
{
    /* MESSAGE_RESOURCE_BLOCK */
    TEST_TYPE_SIZE   (MESSAGE_RESOURCE_BLOCK, 12)
    TEST_TYPE_ALIGN  (MESSAGE_RESOURCE_BLOCK, 4)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_BLOCK, LowId, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_BLOCK, LowId, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_BLOCK, LowId, 0)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_BLOCK, HighId, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_BLOCK, HighId, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_BLOCK, HighId, 4)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_BLOCK, OffsetToEntries, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_BLOCK, OffsetToEntries, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_BLOCK, OffsetToEntries, 8)
}

static void test_pack_MESSAGE_RESOURCE_DATA(void)
{
    /* MESSAGE_RESOURCE_DATA */
    TEST_TYPE_SIZE   (MESSAGE_RESOURCE_DATA, 16)
    TEST_TYPE_ALIGN  (MESSAGE_RESOURCE_DATA, 4)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_DATA, NumberOfBlocks, 4)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_DATA, NumberOfBlocks, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_DATA, NumberOfBlocks, 0)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_DATA, Blocks, 12)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_DATA, Blocks, 4)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_DATA, Blocks, 4)
}

static void test_pack_MESSAGE_RESOURCE_ENTRY(void)
{
    /* MESSAGE_RESOURCE_ENTRY */
    TEST_TYPE_SIZE   (MESSAGE_RESOURCE_ENTRY, 6)
    TEST_TYPE_ALIGN  (MESSAGE_RESOURCE_ENTRY, 2)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_ENTRY, Length, 2)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_ENTRY, Length, 2)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_ENTRY, Length, 0)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_ENTRY, Flags, 2)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_ENTRY, Flags, 2)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_ENTRY, Flags, 2)
    TEST_FIELD_SIZE  (MESSAGE_RESOURCE_ENTRY, Text, 1)
    TEST_FIELD_ALIGN (MESSAGE_RESOURCE_ENTRY, Text, 1)
    TEST_FIELD_OFFSET(MESSAGE_RESOURCE_ENTRY, Text, 4)
}

static void test_pack_NT_TIB(void)
{
    /* NT_TIB */
    TEST_FIELD_SIZE  (NT_TIB, ExceptionList, 4)
    TEST_FIELD_ALIGN (NT_TIB, ExceptionList, 4)
    TEST_FIELD_OFFSET(NT_TIB, ExceptionList, 0)
    TEST_FIELD_SIZE  (NT_TIB, StackBase, 4)
    TEST_FIELD_ALIGN (NT_TIB, StackBase, 4)
    TEST_FIELD_OFFSET(NT_TIB, StackBase, 4)
    TEST_FIELD_SIZE  (NT_TIB, StackLimit, 4)
    TEST_FIELD_ALIGN (NT_TIB, StackLimit, 4)
    TEST_FIELD_OFFSET(NT_TIB, StackLimit, 8)
    TEST_FIELD_SIZE  (NT_TIB, SubSystemTib, 4)
    TEST_FIELD_ALIGN (NT_TIB, SubSystemTib, 4)
    TEST_FIELD_OFFSET(NT_TIB, SubSystemTib, 12)
}

static void test_pack_OBJECT_TYPE_LIST(void)
{
    /* OBJECT_TYPE_LIST */
    TEST_TYPE_SIZE   (OBJECT_TYPE_LIST, 8)
    TEST_TYPE_ALIGN  (OBJECT_TYPE_LIST, 4)
    TEST_FIELD_SIZE  (OBJECT_TYPE_LIST, Level, 2)
    TEST_FIELD_ALIGN (OBJECT_TYPE_LIST, Level, 2)
    TEST_FIELD_OFFSET(OBJECT_TYPE_LIST, Level, 0)
    TEST_FIELD_SIZE  (OBJECT_TYPE_LIST, Sbz, 2)
    TEST_FIELD_ALIGN (OBJECT_TYPE_LIST, Sbz, 2)
    TEST_FIELD_OFFSET(OBJECT_TYPE_LIST, Sbz, 2)
    TEST_FIELD_SIZE  (OBJECT_TYPE_LIST, ObjectType, 4)
    TEST_FIELD_ALIGN (OBJECT_TYPE_LIST, ObjectType, 4)
    TEST_FIELD_OFFSET(OBJECT_TYPE_LIST, ObjectType, 4)
}

static void test_pack_PACCESS_ALLOWED_ACE(void)
{
    /* PACCESS_ALLOWED_ACE */
    TEST_TYPE_SIZE   (PACCESS_ALLOWED_ACE, 4)
    TEST_TYPE_ALIGN  (PACCESS_ALLOWED_ACE, 4)
    TEST_TARGET_SIZE (PACCESS_ALLOWED_ACE, 12)
    TEST_TARGET_ALIGN(PACCESS_ALLOWED_ACE, 4)
}

static void test_pack_PACCESS_DENIED_ACE(void)
{
    /* PACCESS_DENIED_ACE */
    TEST_TYPE_SIZE   (PACCESS_DENIED_ACE, 4)
    TEST_TYPE_ALIGN  (PACCESS_DENIED_ACE, 4)
    TEST_TARGET_SIZE (PACCESS_DENIED_ACE, 12)
    TEST_TARGET_ALIGN(PACCESS_DENIED_ACE, 4)
}

static void test_pack_PACCESS_TOKEN(void)
{
    /* PACCESS_TOKEN */
    TEST_TYPE_SIZE   (PACCESS_TOKEN, 4)
    TEST_TYPE_ALIGN  (PACCESS_TOKEN, 4)
}

static void test_pack_PACE_HEADER(void)
{
    /* PACE_HEADER */
    TEST_TYPE_SIZE   (PACE_HEADER, 4)
    TEST_TYPE_ALIGN  (PACE_HEADER, 4)
    TEST_TARGET_SIZE (PACE_HEADER, 4)
    TEST_TARGET_ALIGN(PACE_HEADER, 2)
}

static void test_pack_PACL(void)
{
    /* PACL */
    TEST_TYPE_SIZE   (PACL, 4)
    TEST_TYPE_ALIGN  (PACL, 4)
    TEST_TARGET_SIZE (PACL, 8)
    TEST_TARGET_ALIGN(PACL, 2)
}

static void test_pack_PACL_REVISION_INFORMATION(void)
{
    /* PACL_REVISION_INFORMATION */
    TEST_TYPE_SIZE   (PACL_REVISION_INFORMATION, 4)
    TEST_TYPE_ALIGN  (PACL_REVISION_INFORMATION, 4)
    TEST_TARGET_SIZE (PACL_REVISION_INFORMATION, 4)
    TEST_TARGET_ALIGN(PACL_REVISION_INFORMATION, 4)
}

static void test_pack_PACL_SIZE_INFORMATION(void)
{
    /* PACL_SIZE_INFORMATION */
    TEST_TYPE_SIZE   (PACL_SIZE_INFORMATION, 4)
    TEST_TYPE_ALIGN  (PACL_SIZE_INFORMATION, 4)
    TEST_TARGET_SIZE (PACL_SIZE_INFORMATION, 12)
    TEST_TARGET_ALIGN(PACL_SIZE_INFORMATION, 4)
}

static void test_pack_PCCH(void)
{
    /* PCCH */
    TEST_TYPE_SIZE   (PCCH, 4)
    TEST_TYPE_ALIGN  (PCCH, 4)
    TEST_TARGET_SIZE (PCCH, 1)
    TEST_TARGET_ALIGN(PCCH, 1)
}

static void test_pack_PCH(void)
{
    /* PCH */
    TEST_TYPE_SIZE   (PCH, 4)
    TEST_TYPE_ALIGN  (PCH, 4)
    TEST_TARGET_SIZE (PCH, 1)
    TEST_TARGET_ALIGN(PCH, 1)
}

static void test_pack_PCSTR(void)
{
    /* PCSTR */
    TEST_TYPE_SIZE   (PCSTR, 4)
    TEST_TYPE_ALIGN  (PCSTR, 4)
    TEST_TARGET_SIZE (PCSTR, 1)
    TEST_TARGET_ALIGN(PCSTR, 1)
}

static void test_pack_PCTSTR(void)
{
    /* PCTSTR */
    TEST_TYPE_SIZE   (PCTSTR, 4)
    TEST_TYPE_ALIGN  (PCTSTR, 4)
}

static void test_pack_PCWCH(void)
{
    /* PCWCH */
    TEST_TYPE_SIZE   (PCWCH, 4)
    TEST_TYPE_ALIGN  (PCWCH, 4)
    TEST_TARGET_SIZE (PCWCH, 2)
    TEST_TARGET_ALIGN(PCWCH, 2)
}

static void test_pack_PCWSTR(void)
{
    /* PCWSTR */
    TEST_TYPE_SIZE   (PCWSTR, 4)
    TEST_TYPE_ALIGN  (PCWSTR, 4)
    TEST_TARGET_SIZE (PCWSTR, 2)
    TEST_TARGET_ALIGN(PCWSTR, 2)
}

static void test_pack_PEXCEPTION_POINTERS(void)
{
    /* PEXCEPTION_POINTERS */
    TEST_TYPE_SIZE   (PEXCEPTION_POINTERS, 4)
    TEST_TYPE_ALIGN  (PEXCEPTION_POINTERS, 4)
    TEST_TARGET_SIZE (PEXCEPTION_POINTERS, 8)
    TEST_TARGET_ALIGN(PEXCEPTION_POINTERS, 4)
}

static void test_pack_PEXCEPTION_RECORD(void)
{
    /* PEXCEPTION_RECORD */
    TEST_TYPE_SIZE   (PEXCEPTION_RECORD, 4)
    TEST_TYPE_ALIGN  (PEXCEPTION_RECORD, 4)
    TEST_TARGET_SIZE (PEXCEPTION_RECORD, 80)
    TEST_TARGET_ALIGN(PEXCEPTION_RECORD, 4)
}

static void test_pack_PFLOATING_SAVE_AREA(void)
{
    /* PFLOATING_SAVE_AREA */
    TEST_TYPE_SIZE   (PFLOATING_SAVE_AREA, 4)
    TEST_TYPE_ALIGN  (PFLOATING_SAVE_AREA, 4)
    TEST_TARGET_SIZE (PFLOATING_SAVE_AREA, 112)
    TEST_TARGET_ALIGN(PFLOATING_SAVE_AREA, 4)
}

static void test_pack_PFPO_DATA(void)
{
    /* PFPO_DATA */
    TEST_TYPE_SIZE   (PFPO_DATA, 4)
    TEST_TYPE_ALIGN  (PFPO_DATA, 4)
    TEST_TARGET_SIZE (PFPO_DATA, 16)
    TEST_TARGET_ALIGN(PFPO_DATA, 4)
}

static void test_pack_PGENERIC_MAPPING(void)
{
    /* PGENERIC_MAPPING */
    TEST_TYPE_SIZE   (PGENERIC_MAPPING, 4)
    TEST_TYPE_ALIGN  (PGENERIC_MAPPING, 4)
    TEST_TARGET_SIZE (PGENERIC_MAPPING, 16)
    TEST_TARGET_ALIGN(PGENERIC_MAPPING, 4)
}

static void test_pack_PHANDLE(void)
{
    /* PHANDLE */
    TEST_TYPE_SIZE   (PHANDLE, 4)
    TEST_TYPE_ALIGN  (PHANDLE, 4)
    TEST_TARGET_SIZE (PHANDLE, 4)
    TEST_TARGET_ALIGN(PHANDLE, 4)
}

static void test_pack_PIMAGE_ARCHIVE_MEMBER_HEADER(void)
{
    /* PIMAGE_ARCHIVE_MEMBER_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_ARCHIVE_MEMBER_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_ARCHIVE_MEMBER_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_ARCHIVE_MEMBER_HEADER, 60)
    TEST_TARGET_ALIGN(PIMAGE_ARCHIVE_MEMBER_HEADER, 1)
}

static void test_pack_PIMAGE_AUX_SYMBOL(void)
{
    /* PIMAGE_AUX_SYMBOL */
    TEST_TYPE_SIZE   (PIMAGE_AUX_SYMBOL, 4)
    TEST_TYPE_ALIGN  (PIMAGE_AUX_SYMBOL, 4)
}

static void test_pack_PIMAGE_BASE_RELOCATION(void)
{
    /* PIMAGE_BASE_RELOCATION */
    TEST_TYPE_SIZE   (PIMAGE_BASE_RELOCATION, 4)
    TEST_TYPE_ALIGN  (PIMAGE_BASE_RELOCATION, 4)
    TEST_TARGET_SIZE (PIMAGE_BASE_RELOCATION, 8)
    TEST_TARGET_ALIGN(PIMAGE_BASE_RELOCATION, 4)
}

static void test_pack_PIMAGE_BOUND_FORWARDER_REF(void)
{
    /* PIMAGE_BOUND_FORWARDER_REF */
    TEST_TYPE_SIZE   (PIMAGE_BOUND_FORWARDER_REF, 4)
    TEST_TYPE_ALIGN  (PIMAGE_BOUND_FORWARDER_REF, 4)
    TEST_TARGET_SIZE (PIMAGE_BOUND_FORWARDER_REF, 8)
    TEST_TARGET_ALIGN(PIMAGE_BOUND_FORWARDER_REF, 4)
}

static void test_pack_PIMAGE_BOUND_IMPORT_DESCRIPTOR(void)
{
    /* PIMAGE_BOUND_IMPORT_DESCRIPTOR */
    TEST_TYPE_SIZE   (PIMAGE_BOUND_IMPORT_DESCRIPTOR, 4)
    TEST_TYPE_ALIGN  (PIMAGE_BOUND_IMPORT_DESCRIPTOR, 4)
    TEST_TARGET_SIZE (PIMAGE_BOUND_IMPORT_DESCRIPTOR, 8)
    TEST_TARGET_ALIGN(PIMAGE_BOUND_IMPORT_DESCRIPTOR, 4)
}

static void test_pack_PIMAGE_COFF_SYMBOLS_HEADER(void)
{
    /* PIMAGE_COFF_SYMBOLS_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_COFF_SYMBOLS_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_COFF_SYMBOLS_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_COFF_SYMBOLS_HEADER, 32)
    TEST_TARGET_ALIGN(PIMAGE_COFF_SYMBOLS_HEADER, 4)
}

static void test_pack_PIMAGE_DATA_DIRECTORY(void)
{
    /* PIMAGE_DATA_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_DATA_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_DATA_DIRECTORY, 4)
    TEST_TARGET_SIZE (PIMAGE_DATA_DIRECTORY, 8)
    TEST_TARGET_ALIGN(PIMAGE_DATA_DIRECTORY, 4)
}

static void test_pack_PIMAGE_DEBUG_DIRECTORY(void)
{
    /* PIMAGE_DEBUG_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_DEBUG_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_DEBUG_DIRECTORY, 4)
    TEST_TARGET_SIZE (PIMAGE_DEBUG_DIRECTORY, 28)
    TEST_TARGET_ALIGN(PIMAGE_DEBUG_DIRECTORY, 4)
}

static void test_pack_PIMAGE_DEBUG_MISC(void)
{
    /* PIMAGE_DEBUG_MISC */
    TEST_TYPE_SIZE   (PIMAGE_DEBUG_MISC, 4)
    TEST_TYPE_ALIGN  (PIMAGE_DEBUG_MISC, 4)
    TEST_TARGET_SIZE (PIMAGE_DEBUG_MISC, 16)
    TEST_TARGET_ALIGN(PIMAGE_DEBUG_MISC, 4)
}

static void test_pack_PIMAGE_DOS_HEADER(void)
{
    /* PIMAGE_DOS_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_DOS_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_DOS_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_DOS_HEADER, 64)
    TEST_TARGET_ALIGN(PIMAGE_DOS_HEADER, 2)
}

static void test_pack_PIMAGE_EXPORT_DIRECTORY(void)
{
    /* PIMAGE_EXPORT_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_EXPORT_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_EXPORT_DIRECTORY, 4)
    TEST_TARGET_SIZE (PIMAGE_EXPORT_DIRECTORY, 40)
    TEST_TARGET_ALIGN(PIMAGE_EXPORT_DIRECTORY, 4)
}

static void test_pack_PIMAGE_FILE_HEADER(void)
{
    /* PIMAGE_FILE_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_FILE_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_FILE_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_FILE_HEADER, 20)
    TEST_TARGET_ALIGN(PIMAGE_FILE_HEADER, 4)
}

static void test_pack_PIMAGE_FUNCTION_ENTRY(void)
{
    /* PIMAGE_FUNCTION_ENTRY */
    TEST_TYPE_SIZE   (PIMAGE_FUNCTION_ENTRY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_FUNCTION_ENTRY, 4)
    TEST_TARGET_SIZE (PIMAGE_FUNCTION_ENTRY, 12)
    TEST_TARGET_ALIGN(PIMAGE_FUNCTION_ENTRY, 4)
}

static void test_pack_PIMAGE_IMPORT_BY_NAME(void)
{
    /* PIMAGE_IMPORT_BY_NAME */
    TEST_TYPE_SIZE   (PIMAGE_IMPORT_BY_NAME, 4)
    TEST_TYPE_ALIGN  (PIMAGE_IMPORT_BY_NAME, 4)
    TEST_TARGET_SIZE (PIMAGE_IMPORT_BY_NAME, 4)
    TEST_TARGET_ALIGN(PIMAGE_IMPORT_BY_NAME, 2)
}

static void test_pack_PIMAGE_IMPORT_DESCRIPTOR(void)
{
    /* PIMAGE_IMPORT_DESCRIPTOR */
    TEST_TYPE_SIZE   (PIMAGE_IMPORT_DESCRIPTOR, 4)
    TEST_TYPE_ALIGN  (PIMAGE_IMPORT_DESCRIPTOR, 4)
}

static void test_pack_PIMAGE_LINENUMBER(void)
{
    /* PIMAGE_LINENUMBER */
    TEST_TYPE_SIZE   (PIMAGE_LINENUMBER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_LINENUMBER, 4)
}

static void test_pack_PIMAGE_LOAD_CONFIG_DIRECTORY(void)
{
    /* PIMAGE_LOAD_CONFIG_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_LOAD_CONFIG_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_LOAD_CONFIG_DIRECTORY, 4)
    TEST_TARGET_SIZE (PIMAGE_LOAD_CONFIG_DIRECTORY, 72)
    TEST_TARGET_ALIGN(PIMAGE_LOAD_CONFIG_DIRECTORY, 4)
}

static void test_pack_PIMAGE_NT_HEADERS(void)
{
    /* PIMAGE_NT_HEADERS */
    TEST_TYPE_SIZE   (PIMAGE_NT_HEADERS, 4)
    TEST_TYPE_ALIGN  (PIMAGE_NT_HEADERS, 4)
}

static void test_pack_PIMAGE_NT_HEADERS32(void)
{
    /* PIMAGE_NT_HEADERS32 */
    TEST_TYPE_SIZE   (PIMAGE_NT_HEADERS32, 4)
    TEST_TYPE_ALIGN  (PIMAGE_NT_HEADERS32, 4)
    TEST_TARGET_SIZE (PIMAGE_NT_HEADERS32, 248)
    TEST_TARGET_ALIGN(PIMAGE_NT_HEADERS32, 4)
}

static void test_pack_PIMAGE_NT_HEADERS64(void)
{
    /* PIMAGE_NT_HEADERS64 */
    TEST_TYPE_SIZE   (PIMAGE_NT_HEADERS64, 4)
    TEST_TYPE_ALIGN  (PIMAGE_NT_HEADERS64, 4)
    TEST_TARGET_SIZE (PIMAGE_NT_HEADERS64, 264)
    TEST_TARGET_ALIGN(PIMAGE_NT_HEADERS64, 8)
}

static void test_pack_PIMAGE_OPTIONAL_HEADER(void)
{
    /* PIMAGE_OPTIONAL_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_OPTIONAL_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_OPTIONAL_HEADER, 4)
}

static void test_pack_PIMAGE_OPTIONAL_HEADER32(void)
{
    /* PIMAGE_OPTIONAL_HEADER32 */
    TEST_TYPE_SIZE   (PIMAGE_OPTIONAL_HEADER32, 4)
    TEST_TYPE_ALIGN  (PIMAGE_OPTIONAL_HEADER32, 4)
    TEST_TARGET_SIZE (PIMAGE_OPTIONAL_HEADER32, 224)
    TEST_TARGET_ALIGN(PIMAGE_OPTIONAL_HEADER32, 4)
}

static void test_pack_PIMAGE_OPTIONAL_HEADER64(void)
{
    /* PIMAGE_OPTIONAL_HEADER64 */
    TEST_TYPE_SIZE   (PIMAGE_OPTIONAL_HEADER64, 4)
    TEST_TYPE_ALIGN  (PIMAGE_OPTIONAL_HEADER64, 4)
    TEST_TARGET_SIZE (PIMAGE_OPTIONAL_HEADER64, 240)
    TEST_TARGET_ALIGN(PIMAGE_OPTIONAL_HEADER64, 8)
}

static void test_pack_PIMAGE_OS2_HEADER(void)
{
    /* PIMAGE_OS2_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_OS2_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_OS2_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_OS2_HEADER, 64)
    TEST_TARGET_ALIGN(PIMAGE_OS2_HEADER, 2)
}

static void test_pack_PIMAGE_RELOCATION(void)
{
    /* PIMAGE_RELOCATION */
    TEST_TYPE_SIZE   (PIMAGE_RELOCATION, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RELOCATION, 4)
}

static void test_pack_PIMAGE_RESOURCE_DATA_ENTRY(void)
{
    /* PIMAGE_RESOURCE_DATA_ENTRY */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DATA_ENTRY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DATA_ENTRY, 4)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DATA_ENTRY, 16)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DATA_ENTRY, 4)
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIRECTORY, 4)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DIRECTORY, 16)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DIRECTORY, 4)
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY_ENTRY(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY_ENTRY */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIRECTORY_ENTRY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIRECTORY_ENTRY, 4)
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY_STRING(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY_STRING */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIRECTORY_STRING, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIRECTORY_STRING, 4)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DIRECTORY_STRING, 4)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DIRECTORY_STRING, 2)
}

static void test_pack_PIMAGE_RESOURCE_DIR_STRING_U(void)
{
    /* PIMAGE_RESOURCE_DIR_STRING_U */
    TEST_TYPE_SIZE   (PIMAGE_RESOURCE_DIR_STRING_U, 4)
    TEST_TYPE_ALIGN  (PIMAGE_RESOURCE_DIR_STRING_U, 4)
    TEST_TARGET_SIZE (PIMAGE_RESOURCE_DIR_STRING_U, 4)
    TEST_TARGET_ALIGN(PIMAGE_RESOURCE_DIR_STRING_U, 2)
}

static void test_pack_PIMAGE_SECTION_HEADER(void)
{
    /* PIMAGE_SECTION_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_SECTION_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_SECTION_HEADER, 4)
}

static void test_pack_PIMAGE_SEPARATE_DEBUG_HEADER(void)
{
    /* PIMAGE_SEPARATE_DEBUG_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_SEPARATE_DEBUG_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_SEPARATE_DEBUG_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_SEPARATE_DEBUG_HEADER, 48)
    TEST_TARGET_ALIGN(PIMAGE_SEPARATE_DEBUG_HEADER, 4)
}

static void test_pack_PIMAGE_SYMBOL(void)
{
    /* PIMAGE_SYMBOL */
    TEST_TYPE_SIZE   (PIMAGE_SYMBOL, 4)
    TEST_TYPE_ALIGN  (PIMAGE_SYMBOL, 4)
}

static void test_pack_PIMAGE_THUNK_DATA(void)
{
    /* PIMAGE_THUNK_DATA */
    TEST_TYPE_SIZE   (PIMAGE_THUNK_DATA, 4)
    TEST_TYPE_ALIGN  (PIMAGE_THUNK_DATA, 4)
}

static void test_pack_PIMAGE_TLS_CALLBACK(void)
{
    /* PIMAGE_TLS_CALLBACK */
    TEST_TYPE_SIZE   (PIMAGE_TLS_CALLBACK, 4)
    TEST_TYPE_ALIGN  (PIMAGE_TLS_CALLBACK, 4)
}

static void test_pack_PIMAGE_TLS_DIRECTORY(void)
{
    /* PIMAGE_TLS_DIRECTORY */
    TEST_TYPE_SIZE   (PIMAGE_TLS_DIRECTORY, 4)
    TEST_TYPE_ALIGN  (PIMAGE_TLS_DIRECTORY, 4)
}

static void test_pack_PIMAGE_VXD_HEADER(void)
{
    /* PIMAGE_VXD_HEADER */
    TEST_TYPE_SIZE   (PIMAGE_VXD_HEADER, 4)
    TEST_TYPE_ALIGN  (PIMAGE_VXD_HEADER, 4)
    TEST_TARGET_SIZE (PIMAGE_VXD_HEADER, 196)
    TEST_TARGET_ALIGN(PIMAGE_VXD_HEADER, 2)
}

static void test_pack_PIO_COUNTERS(void)
{
    /* PIO_COUNTERS */
    TEST_TYPE_SIZE   (PIO_COUNTERS, 4)
    TEST_TYPE_ALIGN  (PIO_COUNTERS, 4)
    TEST_TARGET_SIZE (PIO_COUNTERS, 48)
    TEST_TARGET_ALIGN(PIO_COUNTERS, 8)
}

static void test_pack_PISECURITY_DESCRIPTOR(void)
{
    /* PISECURITY_DESCRIPTOR */
    TEST_TYPE_SIZE   (PISECURITY_DESCRIPTOR, 4)
    TEST_TYPE_ALIGN  (PISECURITY_DESCRIPTOR, 4)
    TEST_TARGET_SIZE (PISECURITY_DESCRIPTOR, 20)
    TEST_TARGET_ALIGN(PISECURITY_DESCRIPTOR, 4)
}

static void test_pack_PISECURITY_DESCRIPTOR_RELATIVE(void)
{
    /* PISECURITY_DESCRIPTOR_RELATIVE */
    TEST_TYPE_SIZE   (PISECURITY_DESCRIPTOR_RELATIVE, 4)
    TEST_TYPE_ALIGN  (PISECURITY_DESCRIPTOR_RELATIVE, 4)
    TEST_TARGET_SIZE (PISECURITY_DESCRIPTOR_RELATIVE, 20)
    TEST_TARGET_ALIGN(PISECURITY_DESCRIPTOR_RELATIVE, 4)
}

static void test_pack_PISID(void)
{
    /* PISID */
    TEST_TYPE_SIZE   (PISID, 4)
    TEST_TYPE_ALIGN  (PISID, 4)
    TEST_TARGET_SIZE (PISID, 12)
    TEST_TARGET_ALIGN(PISID, 4)
}

static void test_pack_PLARGE_INTEGER(void)
{
    /* PLARGE_INTEGER */
    TEST_TYPE_SIZE   (PLARGE_INTEGER, 4)
    TEST_TYPE_ALIGN  (PLARGE_INTEGER, 4)
}

static void test_pack_PLIST_ENTRY(void)
{
    /* PLIST_ENTRY */
    TEST_TYPE_SIZE   (PLIST_ENTRY, 4)
    TEST_TYPE_ALIGN  (PLIST_ENTRY, 4)
    TEST_TARGET_SIZE (PLIST_ENTRY, 8)
    TEST_TARGET_ALIGN(PLIST_ENTRY, 4)
}

static void test_pack_PLUID(void)
{
    /* PLUID */
    TEST_TYPE_SIZE   (PLUID, 4)
    TEST_TYPE_ALIGN  (PLUID, 4)
    TEST_TARGET_SIZE (PLUID, 8)
    TEST_TARGET_ALIGN(PLUID, 4)
}

static void test_pack_PLUID_AND_ATTRIBUTES(void)
{
    /* PLUID_AND_ATTRIBUTES */
    TEST_TYPE_SIZE   (PLUID_AND_ATTRIBUTES, 4)
    TEST_TYPE_ALIGN  (PLUID_AND_ATTRIBUTES, 4)
    TEST_TARGET_SIZE (PLUID_AND_ATTRIBUTES, 12)
    TEST_TARGET_ALIGN(PLUID_AND_ATTRIBUTES, 4)
}

static void test_pack_PMEMORY_BASIC_INFORMATION(void)
{
    /* PMEMORY_BASIC_INFORMATION */
    TEST_TYPE_SIZE   (PMEMORY_BASIC_INFORMATION, 4)
    TEST_TYPE_ALIGN  (PMEMORY_BASIC_INFORMATION, 4)
    TEST_TARGET_SIZE (PMEMORY_BASIC_INFORMATION, 28)
    TEST_TARGET_ALIGN(PMEMORY_BASIC_INFORMATION, 4)
}

static void test_pack_PMESSAGE_RESOURCE_BLOCK(void)
{
    /* PMESSAGE_RESOURCE_BLOCK */
    TEST_TYPE_SIZE   (PMESSAGE_RESOURCE_BLOCK, 4)
    TEST_TYPE_ALIGN  (PMESSAGE_RESOURCE_BLOCK, 4)
    TEST_TARGET_SIZE (PMESSAGE_RESOURCE_BLOCK, 12)
    TEST_TARGET_ALIGN(PMESSAGE_RESOURCE_BLOCK, 4)
}

static void test_pack_PMESSAGE_RESOURCE_DATA(void)
{
    /* PMESSAGE_RESOURCE_DATA */
    TEST_TYPE_SIZE   (PMESSAGE_RESOURCE_DATA, 4)
    TEST_TYPE_ALIGN  (PMESSAGE_RESOURCE_DATA, 4)
    TEST_TARGET_SIZE (PMESSAGE_RESOURCE_DATA, 16)
    TEST_TARGET_ALIGN(PMESSAGE_RESOURCE_DATA, 4)
}

static void test_pack_PMESSAGE_RESOURCE_ENTRY(void)
{
    /* PMESSAGE_RESOURCE_ENTRY */
    TEST_TYPE_SIZE   (PMESSAGE_RESOURCE_ENTRY, 4)
    TEST_TYPE_ALIGN  (PMESSAGE_RESOURCE_ENTRY, 4)
    TEST_TARGET_SIZE (PMESSAGE_RESOURCE_ENTRY, 6)
    TEST_TARGET_ALIGN(PMESSAGE_RESOURCE_ENTRY, 2)
}

static void test_pack_PNT_TIB(void)
{
    /* PNT_TIB */
    TEST_TYPE_SIZE   (PNT_TIB, 4)
    TEST_TYPE_ALIGN  (PNT_TIB, 4)
}

static void test_pack_POBJECT_TYPE_LIST(void)
{
    /* POBJECT_TYPE_LIST */
    TEST_TYPE_SIZE   (POBJECT_TYPE_LIST, 4)
    TEST_TYPE_ALIGN  (POBJECT_TYPE_LIST, 4)
    TEST_TARGET_SIZE (POBJECT_TYPE_LIST, 8)
    TEST_TARGET_ALIGN(POBJECT_TYPE_LIST, 4)
}

static void test_pack_PPRIVILEGE_SET(void)
{
    /* PPRIVILEGE_SET */
    TEST_TYPE_SIZE   (PPRIVILEGE_SET, 4)
    TEST_TYPE_ALIGN  (PPRIVILEGE_SET, 4)
    TEST_TARGET_SIZE (PPRIVILEGE_SET, 20)
    TEST_TARGET_ALIGN(PPRIVILEGE_SET, 4)
}

static void test_pack_PRIVILEGE_SET(void)
{
    /* PRIVILEGE_SET */
    TEST_TYPE_SIZE   (PRIVILEGE_SET, 20)
    TEST_TYPE_ALIGN  (PRIVILEGE_SET, 4)
    TEST_FIELD_SIZE  (PRIVILEGE_SET, PrivilegeCount, 4)
    TEST_FIELD_ALIGN (PRIVILEGE_SET, PrivilegeCount, 4)
    TEST_FIELD_OFFSET(PRIVILEGE_SET, PrivilegeCount, 0)
    TEST_FIELD_SIZE  (PRIVILEGE_SET, Control, 4)
    TEST_FIELD_ALIGN (PRIVILEGE_SET, Control, 4)
    TEST_FIELD_OFFSET(PRIVILEGE_SET, Control, 4)
    TEST_FIELD_SIZE  (PRIVILEGE_SET, Privilege, 12)
    TEST_FIELD_ALIGN (PRIVILEGE_SET, Privilege, 4)
    TEST_FIELD_OFFSET(PRIVILEGE_SET, Privilege, 8)
}

static void test_pack_PRLIST_ENTRY(void)
{
    /* PRLIST_ENTRY */
    TEST_TYPE_SIZE   (PRLIST_ENTRY, 4)
    TEST_TYPE_ALIGN  (PRLIST_ENTRY, 4)
    TEST_TARGET_SIZE (PRLIST_ENTRY, 8)
    TEST_TARGET_ALIGN(PRLIST_ENTRY, 4)
}

static void test_pack_PRTL_CRITICAL_SECTION(void)
{
    /* PRTL_CRITICAL_SECTION */
    TEST_TYPE_SIZE   (PRTL_CRITICAL_SECTION, 4)
    TEST_TYPE_ALIGN  (PRTL_CRITICAL_SECTION, 4)
    TEST_TARGET_SIZE (PRTL_CRITICAL_SECTION, 24)
    TEST_TARGET_ALIGN(PRTL_CRITICAL_SECTION, 4)
}

static void test_pack_PRTL_CRITICAL_SECTION_DEBUG(void)
{
    /* PRTL_CRITICAL_SECTION_DEBUG */
    TEST_TYPE_SIZE   (PRTL_CRITICAL_SECTION_DEBUG, 4)
    TEST_TYPE_ALIGN  (PRTL_CRITICAL_SECTION_DEBUG, 4)
}

static void test_pack_PRTL_OSVERSIONINFOEXW(void)
{
    /* PRTL_OSVERSIONINFOEXW */
    TEST_TYPE_SIZE   (PRTL_OSVERSIONINFOEXW, 4)
    TEST_TYPE_ALIGN  (PRTL_OSVERSIONINFOEXW, 4)
    TEST_TARGET_SIZE (PRTL_OSVERSIONINFOEXW, 284)
    TEST_TARGET_ALIGN(PRTL_OSVERSIONINFOEXW, 4)
}

static void test_pack_PRTL_OSVERSIONINFOW(void)
{
    /* PRTL_OSVERSIONINFOW */
    TEST_TYPE_SIZE   (PRTL_OSVERSIONINFOW, 4)
    TEST_TYPE_ALIGN  (PRTL_OSVERSIONINFOW, 4)
    TEST_TARGET_SIZE (PRTL_OSVERSIONINFOW, 276)
    TEST_TARGET_ALIGN(PRTL_OSVERSIONINFOW, 4)
}

static void test_pack_PRTL_RESOURCE_DEBUG(void)
{
    /* PRTL_RESOURCE_DEBUG */
    TEST_TYPE_SIZE   (PRTL_RESOURCE_DEBUG, 4)
    TEST_TYPE_ALIGN  (PRTL_RESOURCE_DEBUG, 4)
}

static void test_pack_PSECURITY_DESCRIPTOR(void)
{
    /* PSECURITY_DESCRIPTOR */
    TEST_TYPE_SIZE   (PSECURITY_DESCRIPTOR, 4)
    TEST_TYPE_ALIGN  (PSECURITY_DESCRIPTOR, 4)
}

static void test_pack_PSECURITY_QUALITY_OF_SERVICE(void)
{
    /* PSECURITY_QUALITY_OF_SERVICE */
    TEST_TYPE_SIZE   (PSECURITY_QUALITY_OF_SERVICE, 4)
    TEST_TYPE_ALIGN  (PSECURITY_QUALITY_OF_SERVICE, 4)
}

static void test_pack_PSID(void)
{
    /* PSID */
    TEST_TYPE_SIZE   (PSID, 4)
    TEST_TYPE_ALIGN  (PSID, 4)
}

static void test_pack_PSID_IDENTIFIER_AUTHORITY(void)
{
    /* PSID_IDENTIFIER_AUTHORITY */
    TEST_TYPE_SIZE   (PSID_IDENTIFIER_AUTHORITY, 4)
    TEST_TYPE_ALIGN  (PSID_IDENTIFIER_AUTHORITY, 4)
    TEST_TARGET_SIZE (PSID_IDENTIFIER_AUTHORITY, 6)
    TEST_TARGET_ALIGN(PSID_IDENTIFIER_AUTHORITY, 1)
}

static void test_pack_PSINGLE_LIST_ENTRY(void)
{
    /* PSINGLE_LIST_ENTRY */
    TEST_TYPE_SIZE   (PSINGLE_LIST_ENTRY, 4)
    TEST_TYPE_ALIGN  (PSINGLE_LIST_ENTRY, 4)
    TEST_TARGET_SIZE (PSINGLE_LIST_ENTRY, 4)
    TEST_TARGET_ALIGN(PSINGLE_LIST_ENTRY, 4)
}

static void test_pack_PSTR(void)
{
    /* PSTR */
    TEST_TYPE_SIZE   (PSTR, 4)
    TEST_TYPE_ALIGN  (PSTR, 4)
    TEST_TARGET_SIZE (PSTR, 1)
    TEST_TARGET_ALIGN(PSTR, 1)
}

static void test_pack_PSYSTEM_ALARM_ACE(void)
{
    /* PSYSTEM_ALARM_ACE */
    TEST_TYPE_SIZE   (PSYSTEM_ALARM_ACE, 4)
    TEST_TYPE_ALIGN  (PSYSTEM_ALARM_ACE, 4)
    TEST_TARGET_SIZE (PSYSTEM_ALARM_ACE, 12)
    TEST_TARGET_ALIGN(PSYSTEM_ALARM_ACE, 4)
}

static void test_pack_PSYSTEM_AUDIT_ACE(void)
{
    /* PSYSTEM_AUDIT_ACE */
    TEST_TYPE_SIZE   (PSYSTEM_AUDIT_ACE, 4)
    TEST_TYPE_ALIGN  (PSYSTEM_AUDIT_ACE, 4)
    TEST_TARGET_SIZE (PSYSTEM_AUDIT_ACE, 12)
    TEST_TARGET_ALIGN(PSYSTEM_AUDIT_ACE, 4)
}

static void test_pack_PTOKEN_GROUPS(void)
{
    /* PTOKEN_GROUPS */
    TEST_TYPE_SIZE   (PTOKEN_GROUPS, 4)
    TEST_TYPE_ALIGN  (PTOKEN_GROUPS, 4)
    TEST_TARGET_SIZE (PTOKEN_GROUPS, 12)
    TEST_TARGET_ALIGN(PTOKEN_GROUPS, 4)
}

static void test_pack_PTOKEN_PRIVILEGES(void)
{
    /* PTOKEN_PRIVILEGES */
    TEST_TYPE_SIZE   (PTOKEN_PRIVILEGES, 4)
    TEST_TYPE_ALIGN  (PTOKEN_PRIVILEGES, 4)
    TEST_TARGET_SIZE (PTOKEN_PRIVILEGES, 16)
    TEST_TARGET_ALIGN(PTOKEN_PRIVILEGES, 4)
}

static void test_pack_PTOKEN_USER(void)
{
    /* PTOKEN_USER */
    TEST_TYPE_SIZE   (PTOKEN_USER, 4)
    TEST_TYPE_ALIGN  (PTOKEN_USER, 4)
    TEST_TARGET_SIZE (PTOKEN_USER, 8)
    TEST_TARGET_ALIGN(PTOKEN_USER, 4)
}

static void test_pack_PTSTR(void)
{
    /* PTSTR */
    TEST_TYPE_SIZE   (PTSTR, 4)
    TEST_TYPE_ALIGN  (PTSTR, 4)
}

static void test_pack_PULARGE_INTEGER(void)
{
    /* PULARGE_INTEGER */
    TEST_TYPE_SIZE   (PULARGE_INTEGER, 4)
    TEST_TYPE_ALIGN  (PULARGE_INTEGER, 4)
}

static void test_pack_PVECTORED_EXCEPTION_HANDLER(void)
{
    /* PVECTORED_EXCEPTION_HANDLER */
    TEST_TYPE_SIZE   (PVECTORED_EXCEPTION_HANDLER, 4)
    TEST_TYPE_ALIGN  (PVECTORED_EXCEPTION_HANDLER, 4)
}

static void test_pack_PVOID(void)
{
    /* PVOID */
    TEST_TYPE_SIZE   (PVOID, 4)
    TEST_TYPE_ALIGN  (PVOID, 4)
}

static void test_pack_PWCH(void)
{
    /* PWCH */
    TEST_TYPE_SIZE   (PWCH, 4)
    TEST_TYPE_ALIGN  (PWCH, 4)
    TEST_TARGET_SIZE (PWCH, 2)
    TEST_TARGET_ALIGN(PWCH, 2)
}

static void test_pack_PWSTR(void)
{
    /* PWSTR */
    TEST_TYPE_SIZE   (PWSTR, 4)
    TEST_TYPE_ALIGN  (PWSTR, 4)
    TEST_TARGET_SIZE (PWSTR, 2)
    TEST_TARGET_ALIGN(PWSTR, 2)
}

static void test_pack_RTL_CRITICAL_SECTION(void)
{
    /* RTL_CRITICAL_SECTION */
    TEST_TYPE_SIZE   (RTL_CRITICAL_SECTION, 24)
    TEST_TYPE_ALIGN  (RTL_CRITICAL_SECTION, 4)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, DebugInfo, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, DebugInfo, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, DebugInfo, 0)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, LockCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, LockCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, LockCount, 4)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, RecursionCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, RecursionCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, RecursionCount, 8)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, OwningThread, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, OwningThread, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, OwningThread, 12)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, LockSemaphore, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, LockSemaphore, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, LockSemaphore, 16)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION, SpinCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION, SpinCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION, SpinCount, 20)
}

static void test_pack_RTL_CRITICAL_SECTION_DEBUG(void)
{
    /* RTL_CRITICAL_SECTION_DEBUG */
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, Type, 2)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, Type, 2)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, Type, 0)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, CriticalSection, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, CriticalSection, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, CriticalSection, 4)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, ProcessLocksList, 8)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, ProcessLocksList, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, ProcessLocksList, 8)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, EntryCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, EntryCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, EntryCount, 16)
    TEST_FIELD_SIZE  (RTL_CRITICAL_SECTION_DEBUG, ContentionCount, 4)
    TEST_FIELD_ALIGN (RTL_CRITICAL_SECTION_DEBUG, ContentionCount, 4)
    TEST_FIELD_OFFSET(RTL_CRITICAL_SECTION_DEBUG, ContentionCount, 20)
}

static void test_pack_RTL_OSVERSIONINFOEXW(void)
{
    /* RTL_OSVERSIONINFOEXW */
    TEST_TYPE_SIZE   (RTL_OSVERSIONINFOEXW, 284)
    TEST_TYPE_ALIGN  (RTL_OSVERSIONINFOEXW, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwOSVersionInfoSize, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwOSVersionInfoSize, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwOSVersionInfoSize, 0)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwMajorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwMajorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwMajorVersion, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwMinorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwMinorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwMinorVersion, 8)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwBuildNumber, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwBuildNumber, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwBuildNumber, 12)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, dwPlatformId, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, dwPlatformId, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, dwPlatformId, 16)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, szCSDVersion, 256)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, szCSDVersion, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, szCSDVersion, 20)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wServicePackMajor, 2)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wServicePackMajor, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wServicePackMajor, 276)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wServicePackMinor, 2)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wServicePackMinor, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wServicePackMinor, 278)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wSuiteMask, 2)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wSuiteMask, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wSuiteMask, 280)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wProductType, 1)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wProductType, 1)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wProductType, 282)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOEXW, wReserved, 1)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOEXW, wReserved, 1)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOEXW, wReserved, 283)
}

static void test_pack_RTL_OSVERSIONINFOW(void)
{
    /* RTL_OSVERSIONINFOW */
    TEST_TYPE_SIZE   (RTL_OSVERSIONINFOW, 276)
    TEST_TYPE_ALIGN  (RTL_OSVERSIONINFOW, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwOSVersionInfoSize, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwOSVersionInfoSize, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwOSVersionInfoSize, 0)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwMajorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwMajorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwMajorVersion, 4)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwMinorVersion, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwMinorVersion, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwMinorVersion, 8)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwBuildNumber, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwBuildNumber, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwBuildNumber, 12)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, dwPlatformId, 4)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, dwPlatformId, 4)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, dwPlatformId, 16)
    TEST_FIELD_SIZE  (RTL_OSVERSIONINFOW, szCSDVersion, 256)
    TEST_FIELD_ALIGN (RTL_OSVERSIONINFOW, szCSDVersion, 2)
    TEST_FIELD_OFFSET(RTL_OSVERSIONINFOW, szCSDVersion, 20)
}

static void test_pack_RTL_RESOURCE_DEBUG(void)
{
    /* RTL_RESOURCE_DEBUG */
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, Type, 2)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, Type, 2)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, Type, 0)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, CreatorBackTraceIndex, 2)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, CriticalSection, 4)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, CriticalSection, 4)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, CriticalSection, 4)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, ProcessLocksList, 8)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, ProcessLocksList, 4)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, ProcessLocksList, 8)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, EntryCount, 4)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, EntryCount, 4)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, EntryCount, 16)
    TEST_FIELD_SIZE  (RTL_RESOURCE_DEBUG, ContentionCount, 4)
    TEST_FIELD_ALIGN (RTL_RESOURCE_DEBUG, ContentionCount, 4)
    TEST_FIELD_OFFSET(RTL_RESOURCE_DEBUG, ContentionCount, 20)
}

static void test_pack_SECURITY_CONTEXT_TRACKING_MODE(void)
{
    /* SECURITY_CONTEXT_TRACKING_MODE */
    TEST_TYPE_SIZE   (SECURITY_CONTEXT_TRACKING_MODE, 1)
    TEST_TYPE_ALIGN  (SECURITY_CONTEXT_TRACKING_MODE, 1)
}

static void test_pack_SECURITY_DESCRIPTOR(void)
{
    /* SECURITY_DESCRIPTOR */
    TEST_TYPE_SIZE   (SECURITY_DESCRIPTOR, 20)
    TEST_TYPE_ALIGN  (SECURITY_DESCRIPTOR, 4)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Revision, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Revision, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Revision, 0)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Sbz1, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Sbz1, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Sbz1, 1)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Control, 2)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Control, 2)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Control, 2)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Owner, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Owner, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Owner, 4)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Group, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Group, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Group, 8)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Sacl, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Sacl, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Sacl, 12)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR, Dacl, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR, Dacl, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR, Dacl, 16)
}

static void test_pack_SECURITY_DESCRIPTOR_CONTROL(void)
{
    /* SECURITY_DESCRIPTOR_CONTROL */
    TEST_TYPE_SIZE   (SECURITY_DESCRIPTOR_CONTROL, 2)
    TEST_TYPE_ALIGN  (SECURITY_DESCRIPTOR_CONTROL, 2)
    TEST_TYPE_UNSIGNED(SECURITY_DESCRIPTOR_CONTROL)
}

static void test_pack_SECURITY_DESCRIPTOR_RELATIVE(void)
{
    /* SECURITY_DESCRIPTOR_RELATIVE */
    TEST_TYPE_SIZE   (SECURITY_DESCRIPTOR_RELATIVE, 20)
    TEST_TYPE_ALIGN  (SECURITY_DESCRIPTOR_RELATIVE, 4)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Revision, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Revision, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Revision, 0)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Sbz1, 1)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Sbz1, 1)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Sbz1, 1)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Control, 2)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Control, 2)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Control, 2)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Owner, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Owner, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Owner, 4)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Group, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Group, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Group, 8)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Sacl, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Sacl, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Sacl, 12)
    TEST_FIELD_SIZE  (SECURITY_DESCRIPTOR_RELATIVE, Dacl, 4)
    TEST_FIELD_ALIGN (SECURITY_DESCRIPTOR_RELATIVE, Dacl, 4)
    TEST_FIELD_OFFSET(SECURITY_DESCRIPTOR_RELATIVE, Dacl, 16)
}

static void test_pack_SECURITY_INFORMATION(void)
{
    /* SECURITY_INFORMATION */
    TEST_TYPE_SIZE   (SECURITY_INFORMATION, 4)
    TEST_TYPE_ALIGN  (SECURITY_INFORMATION, 4)
    TEST_TYPE_UNSIGNED(SECURITY_INFORMATION)
}

static void test_pack_SECURITY_QUALITY_OF_SERVICE(void)
{
    /* SECURITY_QUALITY_OF_SERVICE */
    TEST_FIELD_SIZE  (SECURITY_QUALITY_OF_SERVICE, Length, 4)
    TEST_FIELD_ALIGN (SECURITY_QUALITY_OF_SERVICE, Length, 4)
    TEST_FIELD_OFFSET(SECURITY_QUALITY_OF_SERVICE, Length, 0)
}

static void test_pack_SHORT(void)
{
    /* SHORT */
    TEST_TYPE_SIZE   (SHORT, 2)
    TEST_TYPE_ALIGN  (SHORT, 2)
    TEST_TYPE_SIGNED(SHORT)
}

static void test_pack_SID(void)
{
    /* SID */
    TEST_TYPE_SIZE   (SID, 12)
    TEST_TYPE_ALIGN  (SID, 4)
    TEST_FIELD_SIZE  (SID, Revision, 1)
    TEST_FIELD_ALIGN (SID, Revision, 1)
    TEST_FIELD_OFFSET(SID, Revision, 0)
    TEST_FIELD_SIZE  (SID, SubAuthorityCount, 1)
    TEST_FIELD_ALIGN (SID, SubAuthorityCount, 1)
    TEST_FIELD_OFFSET(SID, SubAuthorityCount, 1)
    TEST_FIELD_SIZE  (SID, IdentifierAuthority, 6)
    TEST_FIELD_ALIGN (SID, IdentifierAuthority, 1)
    TEST_FIELD_OFFSET(SID, IdentifierAuthority, 2)
    TEST_FIELD_SIZE  (SID, SubAuthority, 4)
    TEST_FIELD_ALIGN (SID, SubAuthority, 4)
    TEST_FIELD_OFFSET(SID, SubAuthority, 8)
}

static void test_pack_SID_AND_ATTRIBUTES(void)
{
    /* SID_AND_ATTRIBUTES */
    TEST_TYPE_SIZE   (SID_AND_ATTRIBUTES, 8)
    TEST_TYPE_ALIGN  (SID_AND_ATTRIBUTES, 4)
    TEST_FIELD_SIZE  (SID_AND_ATTRIBUTES, Sid, 4)
    TEST_FIELD_ALIGN (SID_AND_ATTRIBUTES, Sid, 4)
    TEST_FIELD_OFFSET(SID_AND_ATTRIBUTES, Sid, 0)
    TEST_FIELD_SIZE  (SID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_ALIGN (SID_AND_ATTRIBUTES, Attributes, 4)
    TEST_FIELD_OFFSET(SID_AND_ATTRIBUTES, Attributes, 4)
}

static void test_pack_SID_IDENTIFIER_AUTHORITY(void)
{
    /* SID_IDENTIFIER_AUTHORITY */
    TEST_TYPE_SIZE   (SID_IDENTIFIER_AUTHORITY, 6)
    TEST_TYPE_ALIGN  (SID_IDENTIFIER_AUTHORITY, 1)
    TEST_FIELD_SIZE  (SID_IDENTIFIER_AUTHORITY, Value, 6)
    TEST_FIELD_ALIGN (SID_IDENTIFIER_AUTHORITY, Value, 1)
    TEST_FIELD_OFFSET(SID_IDENTIFIER_AUTHORITY, Value, 0)
}

static void test_pack_SINGLE_LIST_ENTRY(void)
{
    /* SINGLE_LIST_ENTRY */
    TEST_TYPE_SIZE   (SINGLE_LIST_ENTRY, 4)
    TEST_TYPE_ALIGN  (SINGLE_LIST_ENTRY, 4)
    TEST_FIELD_SIZE  (SINGLE_LIST_ENTRY, Next, 4)
    TEST_FIELD_ALIGN (SINGLE_LIST_ENTRY, Next, 4)
    TEST_FIELD_OFFSET(SINGLE_LIST_ENTRY, Next, 0)
}

static void test_pack_SYSTEM_ALARM_ACE(void)
{
    /* SYSTEM_ALARM_ACE */
    TEST_TYPE_SIZE   (SYSTEM_ALARM_ACE, 12)
    TEST_TYPE_ALIGN  (SYSTEM_ALARM_ACE, 4)
    TEST_FIELD_SIZE  (SYSTEM_ALARM_ACE, Header, 4)
    TEST_FIELD_ALIGN (SYSTEM_ALARM_ACE, Header, 2)
    TEST_FIELD_OFFSET(SYSTEM_ALARM_ACE, Header, 0)
    TEST_FIELD_SIZE  (SYSTEM_ALARM_ACE, Mask, 4)
    TEST_FIELD_ALIGN (SYSTEM_ALARM_ACE, Mask, 4)
    TEST_FIELD_OFFSET(SYSTEM_ALARM_ACE, Mask, 4)
    TEST_FIELD_SIZE  (SYSTEM_ALARM_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (SYSTEM_ALARM_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(SYSTEM_ALARM_ACE, SidStart, 8)
}

static void test_pack_SYSTEM_AUDIT_ACE(void)
{
    /* SYSTEM_AUDIT_ACE */
    TEST_TYPE_SIZE   (SYSTEM_AUDIT_ACE, 12)
    TEST_TYPE_ALIGN  (SYSTEM_AUDIT_ACE, 4)
    TEST_FIELD_SIZE  (SYSTEM_AUDIT_ACE, Header, 4)
    TEST_FIELD_ALIGN (SYSTEM_AUDIT_ACE, Header, 2)
    TEST_FIELD_OFFSET(SYSTEM_AUDIT_ACE, Header, 0)
    TEST_FIELD_SIZE  (SYSTEM_AUDIT_ACE, Mask, 4)
    TEST_FIELD_ALIGN (SYSTEM_AUDIT_ACE, Mask, 4)
    TEST_FIELD_OFFSET(SYSTEM_AUDIT_ACE, Mask, 4)
    TEST_FIELD_SIZE  (SYSTEM_AUDIT_ACE, SidStart, 4)
    TEST_FIELD_ALIGN (SYSTEM_AUDIT_ACE, SidStart, 4)
    TEST_FIELD_OFFSET(SYSTEM_AUDIT_ACE, SidStart, 8)
}

static void test_pack_TCHAR(void)
{
    /* TCHAR */
    TEST_TYPE_SIZE   (TCHAR, 1)
    TEST_TYPE_ALIGN  (TCHAR, 1)
}

static void test_pack_TOKEN_DEFAULT_DACL(void)
{
    /* TOKEN_DEFAULT_DACL */
    TEST_TYPE_SIZE   (TOKEN_DEFAULT_DACL, 4)
    TEST_TYPE_ALIGN  (TOKEN_DEFAULT_DACL, 4)
    TEST_FIELD_SIZE  (TOKEN_DEFAULT_DACL, DefaultDacl, 4)
    TEST_FIELD_ALIGN (TOKEN_DEFAULT_DACL, DefaultDacl, 4)
    TEST_FIELD_OFFSET(TOKEN_DEFAULT_DACL, DefaultDacl, 0)
}

static void test_pack_TOKEN_GROUPS(void)
{
    /* TOKEN_GROUPS */
    TEST_TYPE_SIZE   (TOKEN_GROUPS, 12)
    TEST_TYPE_ALIGN  (TOKEN_GROUPS, 4)
    TEST_FIELD_SIZE  (TOKEN_GROUPS, GroupCount, 4)
    TEST_FIELD_ALIGN (TOKEN_GROUPS, GroupCount, 4)
    TEST_FIELD_OFFSET(TOKEN_GROUPS, GroupCount, 0)
    TEST_FIELD_SIZE  (TOKEN_GROUPS, Groups, 8)
    TEST_FIELD_ALIGN (TOKEN_GROUPS, Groups, 4)
    TEST_FIELD_OFFSET(TOKEN_GROUPS, Groups, 4)
}

static void test_pack_TOKEN_OWNER(void)
{
    /* TOKEN_OWNER */
    TEST_TYPE_SIZE   (TOKEN_OWNER, 4)
    TEST_TYPE_ALIGN  (TOKEN_OWNER, 4)
    TEST_FIELD_SIZE  (TOKEN_OWNER, Owner, 4)
    TEST_FIELD_ALIGN (TOKEN_OWNER, Owner, 4)
    TEST_FIELD_OFFSET(TOKEN_OWNER, Owner, 0)
}

static void test_pack_TOKEN_PRIMARY_GROUP(void)
{
    /* TOKEN_PRIMARY_GROUP */
    TEST_TYPE_SIZE   (TOKEN_PRIMARY_GROUP, 4)
    TEST_TYPE_ALIGN  (TOKEN_PRIMARY_GROUP, 4)
    TEST_FIELD_SIZE  (TOKEN_PRIMARY_GROUP, PrimaryGroup, 4)
    TEST_FIELD_ALIGN (TOKEN_PRIMARY_GROUP, PrimaryGroup, 4)
    TEST_FIELD_OFFSET(TOKEN_PRIMARY_GROUP, PrimaryGroup, 0)
}

static void test_pack_TOKEN_PRIVILEGES(void)
{
    /* TOKEN_PRIVILEGES */
    TEST_TYPE_SIZE   (TOKEN_PRIVILEGES, 16)
    TEST_TYPE_ALIGN  (TOKEN_PRIVILEGES, 4)
    TEST_FIELD_SIZE  (TOKEN_PRIVILEGES, PrivilegeCount, 4)
    TEST_FIELD_ALIGN (TOKEN_PRIVILEGES, PrivilegeCount, 4)
    TEST_FIELD_OFFSET(TOKEN_PRIVILEGES, PrivilegeCount, 0)
    TEST_FIELD_SIZE  (TOKEN_PRIVILEGES, Privileges, 12)
    TEST_FIELD_ALIGN (TOKEN_PRIVILEGES, Privileges, 4)
    TEST_FIELD_OFFSET(TOKEN_PRIVILEGES, Privileges, 4)
}

static void test_pack_TOKEN_SOURCE(void)
{
    /* TOKEN_SOURCE */
    TEST_TYPE_SIZE   (TOKEN_SOURCE, 16)
    TEST_TYPE_ALIGN  (TOKEN_SOURCE, 4)
    TEST_FIELD_SIZE  (TOKEN_SOURCE, SourceName, 8)
    TEST_FIELD_ALIGN (TOKEN_SOURCE, SourceName, 1)
    TEST_FIELD_OFFSET(TOKEN_SOURCE, SourceName, 0)
    TEST_FIELD_SIZE  (TOKEN_SOURCE, SourceIdentifier, 8)
    TEST_FIELD_ALIGN (TOKEN_SOURCE, SourceIdentifier, 4)
    TEST_FIELD_OFFSET(TOKEN_SOURCE, SourceIdentifier, 8)
}

static void test_pack_TOKEN_STATISTICS(void)
{
    /* TOKEN_STATISTICS (pack 4) */
    TEST_FIELD_SIZE  (TOKEN_STATISTICS, TokenId, 8)
    TEST_FIELD_ALIGN (TOKEN_STATISTICS, TokenId, 4)
    TEST_FIELD_OFFSET(TOKEN_STATISTICS, TokenId, 0)
    TEST_FIELD_SIZE  (TOKEN_STATISTICS, AuthenticationId, 8)
    TEST_FIELD_ALIGN (TOKEN_STATISTICS, AuthenticationId, 4)
    TEST_FIELD_OFFSET(TOKEN_STATISTICS, AuthenticationId, 8)
    TEST_FIELD_SIZE  (TOKEN_STATISTICS, ExpirationTime, 8)
    TEST_FIELD_ALIGN (TOKEN_STATISTICS, ExpirationTime, 4)
    TEST_FIELD_OFFSET(TOKEN_STATISTICS, ExpirationTime, 16)
}

static void test_pack_TOKEN_USER(void)
{
    /* TOKEN_USER */
    TEST_TYPE_SIZE   (TOKEN_USER, 8)
    TEST_TYPE_ALIGN  (TOKEN_USER, 4)
    TEST_FIELD_SIZE  (TOKEN_USER, User, 8)
    TEST_FIELD_ALIGN (TOKEN_USER, User, 4)
    TEST_FIELD_OFFSET(TOKEN_USER, User, 0)
}

static void test_pack_ULARGE_INTEGER(void)
{
    /* ULARGE_INTEGER */
}

static void test_pack_ULONGLONG(void)
{
    /* ULONGLONG */
    TEST_TYPE_SIZE   (ULONGLONG, 8)
    TEST_TYPE_ALIGN  (ULONGLONG, 8)
    TEST_TYPE_UNSIGNED(ULONGLONG)
}

static void test_pack_WAITORTIMERCALLBACKFUNC(void)
{
    /* WAITORTIMERCALLBACKFUNC */
    TEST_TYPE_SIZE   (WAITORTIMERCALLBACKFUNC, 4)
    TEST_TYPE_ALIGN  (WAITORTIMERCALLBACKFUNC, 4)
}

static void test_pack_WCHAR(void)
{
    /* WCHAR */
    TEST_TYPE_SIZE   (WCHAR, 2)
    TEST_TYPE_ALIGN  (WCHAR, 2)
    TEST_TYPE_UNSIGNED(WCHAR)
}

static void test_pack_ATOM(void)
{
    /* ATOM */
    TEST_TYPE_SIZE   (ATOM, 2)
    TEST_TYPE_ALIGN  (ATOM, 2)
    TEST_TYPE_UNSIGNED(ATOM)
}

static void test_pack_BOOL(void)
{
    /* BOOL */
    TEST_TYPE_SIZE   (BOOL, 4)
    TEST_TYPE_ALIGN  (BOOL, 4)
    TEST_TYPE_SIGNED(BOOL)
}

static void test_pack_BYTE(void)
{
    /* BYTE */
    TEST_TYPE_SIZE   (BYTE, 1)
    TEST_TYPE_ALIGN  (BYTE, 1)
    TEST_TYPE_UNSIGNED(BYTE)
}

static void test_pack_COLORREF(void)
{
    /* COLORREF */
    TEST_TYPE_SIZE   (COLORREF, 4)
    TEST_TYPE_ALIGN  (COLORREF, 4)
    TEST_TYPE_UNSIGNED(COLORREF)
}

static void test_pack_DWORD(void)
{
    /* DWORD */
    TEST_TYPE_SIZE   (DWORD, 4)
    TEST_TYPE_ALIGN  (DWORD, 4)
    TEST_TYPE_UNSIGNED(DWORD)
}

static void test_pack_FARPROC(void)
{
    /* FARPROC */
    TEST_TYPE_SIZE   (FARPROC, 4)
    TEST_TYPE_ALIGN  (FARPROC, 4)
}

static void test_pack_FLOAT(void)
{
    /* FLOAT */
    TEST_TYPE_SIZE   (FLOAT, 4)
    TEST_TYPE_ALIGN  (FLOAT, 4)
}

static void test_pack_GLOBALHANDLE(void)
{
    /* GLOBALHANDLE */
    TEST_TYPE_SIZE   (GLOBALHANDLE, 4)
    TEST_TYPE_ALIGN  (GLOBALHANDLE, 4)
}

static void test_pack_HCURSOR(void)
{
    /* HCURSOR */
    TEST_TYPE_SIZE   (HCURSOR, 4)
    TEST_TYPE_ALIGN  (HCURSOR, 4)
}

static void test_pack_HFILE(void)
{
    /* HFILE */
    TEST_TYPE_SIZE   (HFILE, 4)
    TEST_TYPE_ALIGN  (HFILE, 4)
    TEST_TYPE_SIGNED(HFILE)
}

static void test_pack_HGDIOBJ(void)
{
    /* HGDIOBJ */
    TEST_TYPE_SIZE   (HGDIOBJ, 4)
    TEST_TYPE_ALIGN  (HGDIOBJ, 4)
}

static void test_pack_HGLOBAL(void)
{
    /* HGLOBAL */
    TEST_TYPE_SIZE   (HGLOBAL, 4)
    TEST_TYPE_ALIGN  (HGLOBAL, 4)
}

static void test_pack_HLOCAL(void)
{
    /* HLOCAL */
    TEST_TYPE_SIZE   (HLOCAL, 4)
    TEST_TYPE_ALIGN  (HLOCAL, 4)
}

static void test_pack_HMODULE(void)
{
    /* HMODULE */
    TEST_TYPE_SIZE   (HMODULE, 4)
    TEST_TYPE_ALIGN  (HMODULE, 4)
}

static void test_pack_INT(void)
{
    /* INT */
    TEST_TYPE_SIZE   (INT, 4)
    TEST_TYPE_ALIGN  (INT, 4)
    TEST_TYPE_SIGNED(INT)
}

static void test_pack_LOCALHANDLE(void)
{
    /* LOCALHANDLE */
    TEST_TYPE_SIZE   (LOCALHANDLE, 4)
    TEST_TYPE_ALIGN  (LOCALHANDLE, 4)
}

static void test_pack_LPARAM(void)
{
    /* LPARAM */
    TEST_TYPE_SIZE   (LPARAM, 4)
    TEST_TYPE_ALIGN  (LPARAM, 4)
}

static void test_pack_LPCRECT(void)
{
    /* LPCRECT */
    TEST_TYPE_SIZE   (LPCRECT, 4)
    TEST_TYPE_ALIGN  (LPCRECT, 4)
    TEST_TARGET_SIZE (LPCRECT, 16)
    TEST_TARGET_ALIGN(LPCRECT, 4)
}

static void test_pack_LPCRECTL(void)
{
    /* LPCRECTL */
    TEST_TYPE_SIZE   (LPCRECTL, 4)
    TEST_TYPE_ALIGN  (LPCRECTL, 4)
    TEST_TARGET_SIZE (LPCRECTL, 16)
    TEST_TARGET_ALIGN(LPCRECTL, 4)
}

static void test_pack_LPCVOID(void)
{
    /* LPCVOID */
    TEST_TYPE_SIZE   (LPCVOID, 4)
    TEST_TYPE_ALIGN  (LPCVOID, 4)
}

static void test_pack_LPPOINT(void)
{
    /* LPPOINT */
    TEST_TYPE_SIZE   (LPPOINT, 4)
    TEST_TYPE_ALIGN  (LPPOINT, 4)
    TEST_TARGET_SIZE (LPPOINT, 8)
    TEST_TARGET_ALIGN(LPPOINT, 4)
}

static void test_pack_LPRECT(void)
{
    /* LPRECT */
    TEST_TYPE_SIZE   (LPRECT, 4)
    TEST_TYPE_ALIGN  (LPRECT, 4)
    TEST_TARGET_SIZE (LPRECT, 16)
    TEST_TARGET_ALIGN(LPRECT, 4)
}

static void test_pack_LPRECTL(void)
{
    /* LPRECTL */
    TEST_TYPE_SIZE   (LPRECTL, 4)
    TEST_TYPE_ALIGN  (LPRECTL, 4)
    TEST_TARGET_SIZE (LPRECTL, 16)
    TEST_TARGET_ALIGN(LPRECTL, 4)
}

static void test_pack_LPSIZE(void)
{
    /* LPSIZE */
    TEST_TYPE_SIZE   (LPSIZE, 4)
    TEST_TYPE_ALIGN  (LPSIZE, 4)
    TEST_TARGET_SIZE (LPSIZE, 8)
    TEST_TARGET_ALIGN(LPSIZE, 4)
}

static void test_pack_LRESULT(void)
{
    /* LRESULT */
    TEST_TYPE_SIZE   (LRESULT, 4)
    TEST_TYPE_ALIGN  (LRESULT, 4)
}

static void test_pack_POINT(void)
{
    /* POINT */
    TEST_TYPE_SIZE   (POINT, 8)
    TEST_TYPE_ALIGN  (POINT, 4)
    TEST_FIELD_SIZE  (POINT, x, 4)
    TEST_FIELD_ALIGN (POINT, x, 4)
    TEST_FIELD_OFFSET(POINT, x, 0)
    TEST_FIELD_SIZE  (POINT, y, 4)
    TEST_FIELD_ALIGN (POINT, y, 4)
    TEST_FIELD_OFFSET(POINT, y, 4)
}

static void test_pack_POINTL(void)
{
    /* POINTL */
    TEST_TYPE_SIZE   (POINTL, 8)
    TEST_TYPE_ALIGN  (POINTL, 4)
    TEST_FIELD_SIZE  (POINTL, x, 4)
    TEST_FIELD_ALIGN (POINTL, x, 4)
    TEST_FIELD_OFFSET(POINTL, x, 0)
    TEST_FIELD_SIZE  (POINTL, y, 4)
    TEST_FIELD_ALIGN (POINTL, y, 4)
    TEST_FIELD_OFFSET(POINTL, y, 4)
}

static void test_pack_PPOINT(void)
{
    /* PPOINT */
    TEST_TYPE_SIZE   (PPOINT, 4)
    TEST_TYPE_ALIGN  (PPOINT, 4)
    TEST_TARGET_SIZE (PPOINT, 8)
    TEST_TARGET_ALIGN(PPOINT, 4)
}

static void test_pack_PPOINTL(void)
{
    /* PPOINTL */
    TEST_TYPE_SIZE   (PPOINTL, 4)
    TEST_TYPE_ALIGN  (PPOINTL, 4)
    TEST_TARGET_SIZE (PPOINTL, 8)
    TEST_TARGET_ALIGN(PPOINTL, 4)
}

static void test_pack_PRECT(void)
{
    /* PRECT */
    TEST_TYPE_SIZE   (PRECT, 4)
    TEST_TYPE_ALIGN  (PRECT, 4)
    TEST_TARGET_SIZE (PRECT, 16)
    TEST_TARGET_ALIGN(PRECT, 4)
}

static void test_pack_PRECTL(void)
{
    /* PRECTL */
    TEST_TYPE_SIZE   (PRECTL, 4)
    TEST_TYPE_ALIGN  (PRECTL, 4)
    TEST_TARGET_SIZE (PRECTL, 16)
    TEST_TARGET_ALIGN(PRECTL, 4)
}

static void test_pack_PROC(void)
{
    /* PROC */
    TEST_TYPE_SIZE   (PROC, 4)
    TEST_TYPE_ALIGN  (PROC, 4)
}

static void test_pack_PSIZE(void)
{
    /* PSIZE */
    TEST_TYPE_SIZE   (PSIZE, 4)
    TEST_TYPE_ALIGN  (PSIZE, 4)
    TEST_TARGET_SIZE (PSIZE, 8)
    TEST_TARGET_ALIGN(PSIZE, 4)
}

static void test_pack_PSZ(void)
{
    /* PSZ */
    TEST_TYPE_SIZE   (PSZ, 4)
    TEST_TYPE_ALIGN  (PSZ, 4)
}

static void test_pack_RECT(void)
{
    /* RECT */
    TEST_TYPE_SIZE   (RECT, 16)
    TEST_TYPE_ALIGN  (RECT, 4)
    TEST_FIELD_SIZE  (RECT, left, 4)
    TEST_FIELD_ALIGN (RECT, left, 4)
    TEST_FIELD_OFFSET(RECT, left, 0)
    TEST_FIELD_SIZE  (RECT, top, 4)
    TEST_FIELD_ALIGN (RECT, top, 4)
    TEST_FIELD_OFFSET(RECT, top, 4)
    TEST_FIELD_SIZE  (RECT, right, 4)
    TEST_FIELD_ALIGN (RECT, right, 4)
    TEST_FIELD_OFFSET(RECT, right, 8)
    TEST_FIELD_SIZE  (RECT, bottom, 4)
    TEST_FIELD_ALIGN (RECT, bottom, 4)
    TEST_FIELD_OFFSET(RECT, bottom, 12)
}

static void test_pack_RECTL(void)
{
    /* RECTL */
    TEST_TYPE_SIZE   (RECTL, 16)
    TEST_TYPE_ALIGN  (RECTL, 4)
    TEST_FIELD_SIZE  (RECTL, left, 4)
    TEST_FIELD_ALIGN (RECTL, left, 4)
    TEST_FIELD_OFFSET(RECTL, left, 0)
    TEST_FIELD_SIZE  (RECTL, top, 4)
    TEST_FIELD_ALIGN (RECTL, top, 4)
    TEST_FIELD_OFFSET(RECTL, top, 4)
    TEST_FIELD_SIZE  (RECTL, right, 4)
    TEST_FIELD_ALIGN (RECTL, right, 4)
    TEST_FIELD_OFFSET(RECTL, right, 8)
    TEST_FIELD_SIZE  (RECTL, bottom, 4)
    TEST_FIELD_ALIGN (RECTL, bottom, 4)
    TEST_FIELD_OFFSET(RECTL, bottom, 12)
}

static void test_pack_SIZE(void)
{
    /* SIZE */
    TEST_TYPE_SIZE   (SIZE, 8)
    TEST_TYPE_ALIGN  (SIZE, 4)
    TEST_FIELD_SIZE  (SIZE, cx, 4)
    TEST_FIELD_ALIGN (SIZE, cx, 4)
    TEST_FIELD_OFFSET(SIZE, cx, 0)
    TEST_FIELD_SIZE  (SIZE, cy, 4)
    TEST_FIELD_ALIGN (SIZE, cy, 4)
    TEST_FIELD_OFFSET(SIZE, cy, 4)
}

static void test_pack_SIZEL(void)
{
    /* SIZEL */
    TEST_TYPE_SIZE   (SIZEL, 8)
    TEST_TYPE_ALIGN  (SIZEL, 4)
}

static void test_pack_UCHAR(void)
{
    /* UCHAR */
    TEST_TYPE_SIZE   (UCHAR, 1)
    TEST_TYPE_ALIGN  (UCHAR, 1)
    TEST_TYPE_UNSIGNED(UCHAR)
}

static void test_pack_UINT(void)
{
    /* UINT */
    TEST_TYPE_SIZE   (UINT, 4)
    TEST_TYPE_ALIGN  (UINT, 4)
    TEST_TYPE_UNSIGNED(UINT)
}

static void test_pack_ULONG(void)
{
    /* ULONG */
    TEST_TYPE_SIZE   (ULONG, 4)
    TEST_TYPE_ALIGN  (ULONG, 4)
    TEST_TYPE_UNSIGNED(ULONG)
}

static void test_pack_USHORT(void)
{
    /* USHORT */
    TEST_TYPE_SIZE   (USHORT, 2)
    TEST_TYPE_ALIGN  (USHORT, 2)
    TEST_TYPE_UNSIGNED(USHORT)
}

static void test_pack_WORD(void)
{
    /* WORD */
    TEST_TYPE_SIZE   (WORD, 2)
    TEST_TYPE_ALIGN  (WORD, 2)
    TEST_TYPE_UNSIGNED(WORD)
}

static void test_pack_WPARAM(void)
{
    /* WPARAM */
    TEST_TYPE_SIZE   (WPARAM, 4)
    TEST_TYPE_ALIGN  (WPARAM, 4)
}

#endif /* _WIN64 */

static void test_pack(void)
{
    test_pack_ACCESS_ALLOWED_ACE();
    test_pack_ACCESS_DENIED_ACE();
    test_pack_ACCESS_MASK();
    test_pack_ACE_HEADER();
    test_pack_ACL();
    test_pack_ACL_REVISION_INFORMATION();
    test_pack_ACL_SIZE_INFORMATION();
    test_pack_ATOM();
    test_pack_BOOL();
    test_pack_BOOLEAN();
    test_pack_BYTE();
    test_pack_CCHAR();
    test_pack_CHAR();
    test_pack_COLORREF();
    test_pack_DWORD();
    test_pack_DWORD32();
    test_pack_DWORD64();
    test_pack_DWORDLONG();
    test_pack_DWORD_PTR();
    test_pack_EXCEPTION_POINTERS();
    test_pack_EXCEPTION_RECORD();
    test_pack_EXECUTION_STATE();
    test_pack_FARPROC();
    test_pack_FLOAT();
    test_pack_FLOATING_SAVE_AREA();
    test_pack_FPO_DATA();
    test_pack_GENERIC_MAPPING();
    test_pack_GLOBALHANDLE();
    test_pack_HALF_PTR();
    test_pack_HANDLE();
    test_pack_HCURSOR();
    test_pack_HFILE();
    test_pack_HGDIOBJ();
    test_pack_HGLOBAL();
    test_pack_HLOCAL();
    test_pack_HMODULE();
    test_pack_HRESULT();
    test_pack_IMAGE_ARCHIVE_MEMBER_HEADER();
    test_pack_IMAGE_AUX_SYMBOL();
    test_pack_IMAGE_BASE_RELOCATION();
    test_pack_IMAGE_BOUND_FORWARDER_REF();
    test_pack_IMAGE_BOUND_IMPORT_DESCRIPTOR();
    test_pack_IMAGE_COFF_SYMBOLS_HEADER();
    test_pack_IMAGE_DATA_DIRECTORY();
    test_pack_IMAGE_DEBUG_DIRECTORY();
    test_pack_IMAGE_DEBUG_MISC();
    test_pack_IMAGE_DOS_HEADER();
    test_pack_IMAGE_EXPORT_DIRECTORY();
    test_pack_IMAGE_FILE_HEADER();
    test_pack_IMAGE_FUNCTION_ENTRY();
    test_pack_IMAGE_IMPORT_BY_NAME();
    test_pack_IMAGE_IMPORT_DESCRIPTOR();
    test_pack_IMAGE_LINENUMBER();
    test_pack_IMAGE_LOAD_CONFIG_DIRECTORY();
    test_pack_IMAGE_NT_HEADERS();
    test_pack_IMAGE_NT_HEADERS32();
    test_pack_IMAGE_NT_HEADERS64();
    test_pack_IMAGE_OPTIONAL_HEADER();
    test_pack_IMAGE_OPTIONAL_HEADER32();
    test_pack_IMAGE_OPTIONAL_HEADER64();
    test_pack_IMAGE_OS2_HEADER();
    test_pack_IMAGE_RELOCATION();
    test_pack_IMAGE_RESOURCE_DATA_ENTRY();
    test_pack_IMAGE_RESOURCE_DIRECTORY();
    test_pack_IMAGE_RESOURCE_DIRECTORY_ENTRY();
    test_pack_IMAGE_RESOURCE_DIRECTORY_STRING();
    test_pack_IMAGE_RESOURCE_DIR_STRING_U();
    test_pack_IMAGE_SECTION_HEADER();
    test_pack_IMAGE_SEPARATE_DEBUG_HEADER();
    test_pack_IMAGE_SYMBOL();
    test_pack_IMAGE_THUNK_DATA();
    test_pack_IMAGE_TLS_DIRECTORY();
    test_pack_IMAGE_TLS_DIRECTORY32();
    test_pack_IMAGE_TLS_DIRECTORY64();
    test_pack_IMAGE_VXD_HEADER();
    test_pack_INT();
    test_pack_INT16();
    test_pack_INT32();
    test_pack_INT64();
    test_pack_INT8();
    test_pack_INT_PTR();
    test_pack_IO_COUNTERS();
    test_pack_LANGID();
    test_pack_LARGE_INTEGER();
    test_pack_LCID();
    test_pack_LIST_ENTRY();
    test_pack_LOCALHANDLE();
    test_pack_LONG();
    test_pack_LONG32();
    test_pack_LONG64();
    test_pack_LONGLONG();
    test_pack_LONG_PTR();
    test_pack_LPARAM();
    test_pack_LPCRECT();
    test_pack_LPCRECTL();
    test_pack_LPCVOID();
    test_pack_LPPOINT();
    test_pack_LPRECT();
    test_pack_LPRECTL();
    test_pack_LPSIZE();
    test_pack_LRESULT();
    test_pack_LUID();
    test_pack_LUID_AND_ATTRIBUTES();
    test_pack_MEMORY_BASIC_INFORMATION();
    test_pack_MESSAGE_RESOURCE_BLOCK();
    test_pack_MESSAGE_RESOURCE_DATA();
    test_pack_MESSAGE_RESOURCE_ENTRY();
    test_pack_NT_TIB();
    test_pack_OBJECT_TYPE_LIST();
    test_pack_PACCESS_ALLOWED_ACE();
    test_pack_PACCESS_DENIED_ACE();
    test_pack_PACCESS_TOKEN();
    test_pack_PACE_HEADER();
    test_pack_PACL();
    test_pack_PACL_REVISION_INFORMATION();
    test_pack_PACL_SIZE_INFORMATION();
    test_pack_PCCH();
    test_pack_PCH();
    test_pack_PCSTR();
    test_pack_PCTSTR();
    test_pack_PCWCH();
    test_pack_PCWSTR();
    test_pack_PEXCEPTION_POINTERS();
    test_pack_PEXCEPTION_RECORD();
    test_pack_PFLOATING_SAVE_AREA();
    test_pack_PFPO_DATA();
    test_pack_PGENERIC_MAPPING();
    test_pack_PHANDLE();
    test_pack_PIMAGE_ARCHIVE_MEMBER_HEADER();
    test_pack_PIMAGE_AUX_SYMBOL();
    test_pack_PIMAGE_BASE_RELOCATION();
    test_pack_PIMAGE_BOUND_FORWARDER_REF();
    test_pack_PIMAGE_BOUND_IMPORT_DESCRIPTOR();
    test_pack_PIMAGE_COFF_SYMBOLS_HEADER();
    test_pack_PIMAGE_DATA_DIRECTORY();
    test_pack_PIMAGE_DEBUG_DIRECTORY();
    test_pack_PIMAGE_DEBUG_MISC();
    test_pack_PIMAGE_DOS_HEADER();
    test_pack_PIMAGE_EXPORT_DIRECTORY();
    test_pack_PIMAGE_FILE_HEADER();
    test_pack_PIMAGE_FUNCTION_ENTRY();
    test_pack_PIMAGE_IMPORT_BY_NAME();
    test_pack_PIMAGE_IMPORT_DESCRIPTOR();
    test_pack_PIMAGE_LINENUMBER();
    test_pack_PIMAGE_LOAD_CONFIG_DIRECTORY();
    test_pack_PIMAGE_NT_HEADERS();
    test_pack_PIMAGE_NT_HEADERS32();
    test_pack_PIMAGE_NT_HEADERS64();
    test_pack_PIMAGE_OPTIONAL_HEADER();
    test_pack_PIMAGE_OPTIONAL_HEADER32();
    test_pack_PIMAGE_OPTIONAL_HEADER64();
    test_pack_PIMAGE_OS2_HEADER();
    test_pack_PIMAGE_RELOCATION();
    test_pack_PIMAGE_RESOURCE_DATA_ENTRY();
    test_pack_PIMAGE_RESOURCE_DIRECTORY();
    test_pack_PIMAGE_RESOURCE_DIRECTORY_ENTRY();
    test_pack_PIMAGE_RESOURCE_DIRECTORY_STRING();
    test_pack_PIMAGE_RESOURCE_DIR_STRING_U();
    test_pack_PIMAGE_SECTION_HEADER();
    test_pack_PIMAGE_SEPARATE_DEBUG_HEADER();
    test_pack_PIMAGE_SYMBOL();
    test_pack_PIMAGE_THUNK_DATA();
    test_pack_PIMAGE_TLS_CALLBACK();
    test_pack_PIMAGE_TLS_DIRECTORY();
    test_pack_PIMAGE_VXD_HEADER();
    test_pack_PIO_COUNTERS();
    test_pack_PISECURITY_DESCRIPTOR();
    test_pack_PISECURITY_DESCRIPTOR_RELATIVE();
    test_pack_PISID();
    test_pack_PLARGE_INTEGER();
    test_pack_PLIST_ENTRY();
    test_pack_PLUID();
    test_pack_PLUID_AND_ATTRIBUTES();
    test_pack_PMEMORY_BASIC_INFORMATION();
    test_pack_PMESSAGE_RESOURCE_BLOCK();
    test_pack_PMESSAGE_RESOURCE_DATA();
    test_pack_PMESSAGE_RESOURCE_ENTRY();
    test_pack_PNT_TIB();
    test_pack_POBJECT_TYPE_LIST();
    test_pack_POINT();
    test_pack_POINTL();
    test_pack_PPOINT();
    test_pack_PPOINTL();
    test_pack_PPRIVILEGE_SET();
    test_pack_PRECT();
    test_pack_PRECTL();
    test_pack_PRIVILEGE_SET();
    test_pack_PRLIST_ENTRY();
    test_pack_PROC();
    test_pack_PRTL_CRITICAL_SECTION();
    test_pack_PRTL_CRITICAL_SECTION_DEBUG();
    test_pack_PRTL_OSVERSIONINFOEXW();
    test_pack_PRTL_OSVERSIONINFOW();
    test_pack_PRTL_RESOURCE_DEBUG();
    test_pack_PSECURITY_DESCRIPTOR();
    test_pack_PSECURITY_QUALITY_OF_SERVICE();
    test_pack_PSID();
    test_pack_PSID_IDENTIFIER_AUTHORITY();
    test_pack_PSINGLE_LIST_ENTRY();
    test_pack_PSIZE();
    test_pack_PSTR();
    test_pack_PSYSTEM_ALARM_ACE();
    test_pack_PSYSTEM_AUDIT_ACE();
    test_pack_PSZ();
    test_pack_PTOKEN_GROUPS();
    test_pack_PTOKEN_PRIVILEGES();
    test_pack_PTOKEN_USER();
    test_pack_PTSTR();
    test_pack_PULARGE_INTEGER();
    test_pack_PVECTORED_EXCEPTION_HANDLER();
    test_pack_PVOID();
    test_pack_PWCH();
    test_pack_PWSTR();
    test_pack_RECT();
    test_pack_RECTL();
    test_pack_RTL_CRITICAL_SECTION();
    test_pack_RTL_CRITICAL_SECTION_DEBUG();
    test_pack_RTL_OSVERSIONINFOEXW();
    test_pack_RTL_OSVERSIONINFOW();
    test_pack_RTL_RESOURCE_DEBUG();
    test_pack_SECURITY_CONTEXT_TRACKING_MODE();
    test_pack_SECURITY_DESCRIPTOR();
    test_pack_SECURITY_DESCRIPTOR_CONTROL();
    test_pack_SECURITY_DESCRIPTOR_RELATIVE();
    test_pack_SECURITY_INFORMATION();
    test_pack_SECURITY_QUALITY_OF_SERVICE();
    test_pack_SHORT();
    test_pack_SID();
    test_pack_SID_AND_ATTRIBUTES();
    test_pack_SID_IDENTIFIER_AUTHORITY();
    test_pack_SINGLE_LIST_ENTRY();
    test_pack_SIZE();
    test_pack_SIZEL();
    test_pack_SIZE_T();
    test_pack_SSIZE_T();
    test_pack_SYSTEM_ALARM_ACE();
    test_pack_SYSTEM_AUDIT_ACE();
    test_pack_TCHAR();
    test_pack_TOKEN_DEFAULT_DACL();
    test_pack_TOKEN_GROUPS();
    test_pack_TOKEN_OWNER();
    test_pack_TOKEN_PRIMARY_GROUP();
    test_pack_TOKEN_PRIVILEGES();
    test_pack_TOKEN_SOURCE();
    test_pack_TOKEN_STATISTICS();
    test_pack_TOKEN_USER();
    test_pack_UCHAR();
    test_pack_UHALF_PTR();
    test_pack_UINT();
    test_pack_UINT16();
    test_pack_UINT32();
    test_pack_UINT64();
    test_pack_UINT8();
    test_pack_UINT_PTR();
    test_pack_ULARGE_INTEGER();
    test_pack_ULONG();
    test_pack_ULONG32();
    test_pack_ULONG64();
    test_pack_ULONGLONG();
    test_pack_ULONG_PTR();
    test_pack_USHORT();
    test_pack_WAITORTIMERCALLBACKFUNC();
    test_pack_WCHAR();
    test_pack_WORD();
    test_pack_WPARAM();
}

START_TEST(generated)
{
    test_pack();
}
