/* File generated automatically from tools/winapi/test.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"

/***********************************************************************
 * Compability 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 FIELD_ALIGNMENT(type, field) __alignof(((type*)0)->field)
#elif defined(__GNUC__)
# define FIELD_ALIGNMENT(type, field) __alignof__(((type*)0)->field)
#else
/* FIXME: Not sure if is possible to do without compiler extension */
#endif

#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: Not sure if is possible to do without compiler extension
 *        (if type is not just a name that is, if so 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
 */

#ifdef FIELD_ALIGNMENT
# define TEST_FIELD_ALIGNMENT(type, field, align) \
   ok(FIELD_ALIGNMENT(type, field) == align, \
       "FIELD_ALIGNMENT(" #type ", " #field ") == %d (expected " #align ")\n", \
           FIELD_ALIGNMENT(type, field))
#else
# define TEST_FIELD_ALIGNMENT(type, field, align) do { } while (0)
#endif

#define TEST_FIELD_OFFSET(type, field, offset) \
    ok(FIELD_OFFSET(type, field) == offset, \
        "FIELD_OFFSET(" #type ", " #field ") == %ld (expected " #offset ")\n", \
             FIELD_OFFSET(type, field))

#ifdef _TYPE_ALIGNMENT
#define TEST__TYPE_ALIGNMENT(type, align) \
    ok(_TYPE_ALIGNMENT(type) == align, "TYPE_ALIGNMENT(" #type ") == %d (expected " #align ")\n", _TYPE_ALIGNMENT(type))
#else
# define TEST__TYPE_ALIGNMENT(type, align) do { } while (0)
#endif

#ifdef TYPE_ALIGNMENT
#define TEST_TYPE_ALIGNMENT(type, align) \
    ok(TYPE_ALIGNMENT(type) == align, "TYPE_ALIGNMENT(" #type ") == %d (expected " #align ")\n", TYPE_ALIGNMENT(type))
#else
# define TEST_TYPE_ALIGNMENT(type, align) do { } while (0)
#endif

#define TEST_TYPE_SIZE(type, size) \
    ok(sizeof(type) == size, "sizeof(" #type ") == %d (expected " #size ")\n", sizeof(type))

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

#define TEST_FIELD(type, field_type, field_name, field_offset, field_size, field_align) \
  TEST_TYPE_SIZE(field_type, field_size); \
  TEST_FIELD_ALIGNMENT(type, field_name, field_align); \
  TEST_FIELD_OFFSET(type, field_name, field_offset); \

#define TEST_TYPE(type, size, align) \
  TEST_TYPE_ALIGNMENT(type, align); \
  TEST_TYPE_SIZE(type, size)

#define TEST_TYPE_POINTER(type, size, align) \
    TEST__TYPE_ALIGNMENT(*(type)0, align); \
    TEST_TYPE_SIZE(*(type)0, size)

#define TEST_TYPE_SIGNED(type) \
    ok((type) -1 < 0, "(" #type ") -1 < 0\n");

#define TEST_TYPE_UNSIGNED(type) \
     ok((type) -1 > 0, "(" #type ") -1 > 0\n");

static void test_pack_DWORD32(void)
{
    /* DWORD32 */
    TEST_TYPE(DWORD32, 4, 4);
    TEST_TYPE_UNSIGNED(DWORD32);
}

static void test_pack_DWORD64(void)
{
    /* DWORD64 */
    TEST_TYPE(DWORD64, 8, 8);
    TEST_TYPE_UNSIGNED(DWORD64);
}

static void test_pack_DWORD_PTR(void)
{
    /* DWORD_PTR */
    TEST_TYPE(DWORD_PTR, 4, 4);
}

static void test_pack_HALF_PTR(void)
{
    /* HALF_PTR */
    TEST_TYPE(HALF_PTR, 2, 2);
    TEST_TYPE_SIGNED(HALF_PTR);
}

static void test_pack_INT16(void)
{
    /* INT16 */
    TEST_TYPE(INT16, 2, 2);
    TEST_TYPE_SIGNED(INT16);
}

static void test_pack_INT32(void)
{
    /* INT32 */
    TEST_TYPE(INT32, 4, 4);
    TEST_TYPE_SIGNED(INT32);
}

static void test_pack_INT64(void)
{
    /* INT64 */
    TEST_TYPE(INT64, 8, 8);
    TEST_TYPE_SIGNED(INT64);
}

static void test_pack_INT8(void)
{
    /* INT8 */
    TEST_TYPE(INT8, 1, 1);
    TEST_TYPE_SIGNED(INT8);
}

static void test_pack_INT_PTR(void)
{
    /* INT_PTR */
    TEST_TYPE(INT_PTR, 4, 4);
    TEST_TYPE_SIGNED(INT_PTR);
}

static void test_pack_LONG32(void)
{
    /* LONG32 */
    TEST_TYPE(LONG32, 4, 4);
    TEST_TYPE_SIGNED(LONG32);
}

static void test_pack_LONG64(void)
{
    /* LONG64 */
    TEST_TYPE(LONG64, 8, 8);
    TEST_TYPE_SIGNED(LONG64);
}

static void test_pack_LONG_PTR(void)
{
    /* LONG_PTR */
    TEST_TYPE(LONG_PTR, 4, 4);
    TEST_TYPE_SIGNED(LONG_PTR);
}

static void test_pack_SIZE_T(void)
{
    /* SIZE_T */
    TEST_TYPE(SIZE_T, 4, 4);
}

static void test_pack_SSIZE_T(void)
{
    /* SSIZE_T */
    TEST_TYPE(SSIZE_T, 4, 4);
}

static void test_pack_UHALF_PTR(void)
{
    /* UHALF_PTR */
    TEST_TYPE(UHALF_PTR, 2, 2);
    TEST_TYPE_UNSIGNED(UHALF_PTR);
}

static void test_pack_UINT16(void)
{
    /* UINT16 */
    TEST_TYPE(UINT16, 2, 2);
    TEST_TYPE_UNSIGNED(UINT16);
}

static void test_pack_UINT32(void)
{
    /* UINT32 */
    TEST_TYPE(UINT32, 4, 4);
    TEST_TYPE_UNSIGNED(UINT32);
}

static void test_pack_UINT64(void)
{
    /* UINT64 */
    TEST_TYPE(UINT64, 8, 8);
    TEST_TYPE_UNSIGNED(UINT64);
}

static void test_pack_UINT8(void)
{
    /* UINT8 */
    TEST_TYPE(UINT8, 1, 1);
    TEST_TYPE_UNSIGNED(UINT8);
}

static void test_pack_UINT_PTR(void)
{
    /* UINT_PTR */
    TEST_TYPE(UINT_PTR, 4, 4);
    TEST_TYPE_UNSIGNED(UINT_PTR);
}

static void test_pack_ULONG32(void)
{
    /* ULONG32 */
    TEST_TYPE(ULONG32, 4, 4);
    TEST_TYPE_UNSIGNED(ULONG32);
}

static void test_pack_ULONG64(void)
{
    /* ULONG64 */
    TEST_TYPE(ULONG64, 8, 8);
    TEST_TYPE_UNSIGNED(ULONG64);
}

static void test_pack_ULONG_PTR(void)
{
    /* ULONG_PTR */
    TEST_TYPE(ULONG_PTR, 4, 4);
    TEST_TYPE_UNSIGNED(ULONG_PTR);
}

static void test_pack_ACCESS_ALLOWED_ACE(void)
{
    /* ACCESS_ALLOWED_ACE (pack 4) */
    TEST_TYPE(ACCESS_ALLOWED_ACE, 12, 4);
    TEST_FIELD(ACCESS_ALLOWED_ACE, ACE_HEADER, Header, 0, 4, 2);
    TEST_FIELD(ACCESS_ALLOWED_ACE, DWORD, Mask, 4, 4, 4);
    TEST_FIELD(ACCESS_ALLOWED_ACE, DWORD, SidStart, 8, 4, 4);
}

static void test_pack_ACCESS_DENIED_ACE(void)
{
    /* ACCESS_DENIED_ACE (pack 4) */
    TEST_TYPE(ACCESS_DENIED_ACE, 12, 4);
    TEST_FIELD(ACCESS_DENIED_ACE, ACE_HEADER, Header, 0, 4, 2);
    TEST_FIELD(ACCESS_DENIED_ACE, DWORD, Mask, 4, 4, 4);
    TEST_FIELD(ACCESS_DENIED_ACE, DWORD, SidStart, 8, 4, 4);
}

static void test_pack_ACCESS_MASK(void)
{
    /* ACCESS_MASK */
    TEST_TYPE(ACCESS_MASK, 4, 4);
    TEST_TYPE_UNSIGNED(ACCESS_MASK);
}

static void test_pack_ACE_HEADER(void)
{
    /* ACE_HEADER (pack 4) */
    TEST_TYPE(ACE_HEADER, 4, 2);
    TEST_FIELD(ACE_HEADER, BYTE, AceType, 0, 1, 1);
    TEST_FIELD(ACE_HEADER, BYTE, AceFlags, 1, 1, 1);
    TEST_FIELD(ACE_HEADER, WORD, AceSize, 2, 2, 2);
}

static void test_pack_ACL(void)
{
    /* ACL (pack 4) */
    TEST_TYPE(ACL, 8, 2);
    TEST_FIELD(ACL, BYTE, AclRevision, 0, 1, 1);
    TEST_FIELD(ACL, BYTE, Sbz1, 1, 1, 1);
    TEST_FIELD(ACL, WORD, AclSize, 2, 2, 2);
    TEST_FIELD(ACL, WORD, AceCount, 4, 2, 2);
    TEST_FIELD(ACL, WORD, Sbz2, 6, 2, 2);
}

static void test_pack_ACL_REVISION_INFORMATION(void)
{
    /* ACL_REVISION_INFORMATION (pack 4) */
    TEST_TYPE(ACL_REVISION_INFORMATION, 4, 4);
    TEST_FIELD(ACL_REVISION_INFORMATION, DWORD, AclRevision, 0, 4, 4);
}

static void test_pack_ACL_SIZE_INFORMATION(void)
{
    /* ACL_SIZE_INFORMATION (pack 4) */
    TEST_TYPE(ACL_SIZE_INFORMATION, 12, 4);
    TEST_FIELD(ACL_SIZE_INFORMATION, DWORD, AceCount, 0, 4, 4);
    TEST_FIELD(ACL_SIZE_INFORMATION, DWORD, AclBytesInUse, 4, 4, 4);
    TEST_FIELD(ACL_SIZE_INFORMATION, DWORD, AclBytesFree, 8, 4, 4);
}

static void test_pack_BOOLEAN(void)
{
    /* BOOLEAN */
    TEST_TYPE(BOOLEAN, 1, 1);
    TEST_TYPE_UNSIGNED(BOOLEAN);
}

static void test_pack_CCHAR(void)
{
    /* CCHAR */
    TEST_TYPE(CCHAR, 1, 1);
    TEST_TYPE_SIGNED(CCHAR);
}

static void test_pack_CHAR(void)
{
    /* CHAR */
    TEST_TYPE(CHAR, 1, 1);
    TEST_TYPE_SIGNED(CHAR);
}

static void test_pack_DWORDLONG(void)
{
    /* DWORDLONG */
    TEST_TYPE(DWORDLONG, 8, 8);
    TEST_TYPE_UNSIGNED(DWORDLONG);
}

static void test_pack_EXCEPTION_POINTERS(void)
{
    /* EXCEPTION_POINTERS (pack 4) */
    TEST_TYPE(EXCEPTION_POINTERS, 8, 4);
    TEST_FIELD(EXCEPTION_POINTERS, PEXCEPTION_RECORD, ExceptionRecord, 0, 4, 4);
    TEST_FIELD(EXCEPTION_POINTERS, PCONTEXT, ContextRecord, 4, 4, 4);
}

static void test_pack_EXCEPTION_RECORD(void)
{
    /* EXCEPTION_RECORD (pack 4) */
    TEST_TYPE(EXCEPTION_RECORD, 80, 4);
    TEST_FIELD(EXCEPTION_RECORD, DWORD, ExceptionCode, 0, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, DWORD, ExceptionFlags, 4, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, struct __EXCEPTION_RECORD *, ExceptionRecord, 8, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, LPVOID, ExceptionAddress, 12, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, DWORD, NumberParameters, 16, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, DWORD[EXCEPTION_MAXIMUM_PARAMETERS], ExceptionInformation, 20, 60, 4);
}

static void test_pack_EXECUTION_STATE(void)
{
    /* EXECUTION_STATE */
    TEST_TYPE(EXECUTION_STATE, 4, 4);
    TEST_TYPE_UNSIGNED(EXECUTION_STATE);
}

static void test_pack_FLOATING_SAVE_AREA(void)
{
    /* FLOATING_SAVE_AREA (pack 4) */
    TEST_TYPE(FLOATING_SAVE_AREA, 112, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, ControlWord, 0, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, StatusWord, 4, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, TagWord, 8, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, ErrorOffset, 12, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, ErrorSelector, 16, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, DataOffset, 20, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, DataSelector, 24, 4, 4);
    TEST_FIELD(FLOATING_SAVE_AREA, BYTE[SIZE_OF_80387_REGISTERS], RegisterArea, 28, 80, 1);
    TEST_FIELD(FLOATING_SAVE_AREA, DWORD, Cr0NpxState, 108, 4, 4);
}

static void test_pack_FPO_DATA(void)
{
    /* FPO_DATA (pack 4) */
    TEST_TYPE(FPO_DATA, 16, 4);
    TEST_FIELD(FPO_DATA, DWORD, ulOffStart, 0, 4, 4);
    TEST_FIELD(FPO_DATA, DWORD, cbProcSize, 4, 4, 4);
    TEST_FIELD(FPO_DATA, DWORD, cdwLocals, 8, 4, 4);
    TEST_FIELD(FPO_DATA, WORD, cdwParams, 12, 2, 2);
}

static void test_pack_GENERIC_MAPPING(void)
{
    /* GENERIC_MAPPING (pack 4) */
    TEST_TYPE(GENERIC_MAPPING, 16, 4);
    TEST_FIELD(GENERIC_MAPPING, ACCESS_MASK, GenericRead, 0, 4, 4);
    TEST_FIELD(GENERIC_MAPPING, ACCESS_MASK, GenericWrite, 4, 4, 4);
    TEST_FIELD(GENERIC_MAPPING, ACCESS_MASK, GenericExecute, 8, 4, 4);
    TEST_FIELD(GENERIC_MAPPING, ACCESS_MASK, GenericAll, 12, 4, 4);
}

static void test_pack_HANDLE(void)
{
    /* HANDLE */
    TEST_TYPE(HANDLE, 4, 4);
}

static void test_pack_HRESULT(void)
{
    /* HRESULT */
    TEST_TYPE(HRESULT, 4, 4);
}

static void test_pack_IMAGE_ARCHIVE_MEMBER_HEADER(void)
{
    /* IMAGE_ARCHIVE_MEMBER_HEADER (pack 4) */
    TEST_TYPE(IMAGE_ARCHIVE_MEMBER_HEADER, 60, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[16], Name, 0, 16, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[12], Date, 16, 12, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[6], UserID, 28, 6, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[6], GroupID, 34, 6, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[8], Mode, 40, 8, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[10], Size, 48, 10, 1);
    TEST_FIELD(IMAGE_ARCHIVE_MEMBER_HEADER, BYTE[2], EndHeader, 58, 2, 1);
}

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

static void test_pack_IMAGE_BASE_RELOCATION(void)
{
    /* IMAGE_BASE_RELOCATION (pack 4) */
    TEST_TYPE(IMAGE_BASE_RELOCATION, 8, 4);
    TEST_FIELD(IMAGE_BASE_RELOCATION, DWORD, VirtualAddress, 0, 4, 4);
    TEST_FIELD(IMAGE_BASE_RELOCATION, DWORD, SizeOfBlock, 4, 4, 4);
}

static void test_pack_IMAGE_BOUND_FORWARDER_REF(void)
{
    /* IMAGE_BOUND_FORWARDER_REF (pack 4) */
    TEST_TYPE(IMAGE_BOUND_FORWARDER_REF, 8, 4);
    TEST_FIELD(IMAGE_BOUND_FORWARDER_REF, DWORD, TimeDateStamp, 0, 4, 4);
    TEST_FIELD(IMAGE_BOUND_FORWARDER_REF, WORD, OffsetModuleName, 4, 2, 2);
    TEST_FIELD(IMAGE_BOUND_FORWARDER_REF, WORD, Reserved, 6, 2, 2);
}

static void test_pack_IMAGE_BOUND_IMPORT_DESCRIPTOR(void)
{
    /* IMAGE_BOUND_IMPORT_DESCRIPTOR (pack 4) */
    TEST_TYPE(IMAGE_BOUND_IMPORT_DESCRIPTOR, 8, 4);
    TEST_FIELD(IMAGE_BOUND_IMPORT_DESCRIPTOR, DWORD, TimeDateStamp, 0, 4, 4);
    TEST_FIELD(IMAGE_BOUND_IMPORT_DESCRIPTOR, WORD, OffsetModuleName, 4, 2, 2);
    TEST_FIELD(IMAGE_BOUND_IMPORT_DESCRIPTOR, WORD, NumberOfModuleForwarderRefs, 6, 2, 2);
}

static void test_pack_IMAGE_COFF_SYMBOLS_HEADER(void)
{
    /* IMAGE_COFF_SYMBOLS_HEADER (pack 4) */
    TEST_TYPE(IMAGE_COFF_SYMBOLS_HEADER, 32, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, NumberOfSymbols, 0, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, LvaToFirstSymbol, 4, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, NumberOfLinenumbers, 8, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, LvaToFirstLinenumber, 12, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, RvaToFirstByteOfCode, 16, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, RvaToLastByteOfCode, 20, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, RvaToFirstByteOfData, 24, 4, 4);
    TEST_FIELD(IMAGE_COFF_SYMBOLS_HEADER, DWORD, RvaToLastByteOfData, 28, 4, 4);
}

static void test_pack_IMAGE_DATA_DIRECTORY(void)
{
    /* IMAGE_DATA_DIRECTORY (pack 4) */
    TEST_TYPE(IMAGE_DATA_DIRECTORY, 8, 4);
    TEST_FIELD(IMAGE_DATA_DIRECTORY, DWORD, VirtualAddress, 0, 4, 4);
    TEST_FIELD(IMAGE_DATA_DIRECTORY, DWORD, Size, 4, 4, 4);
}

static void test_pack_IMAGE_DEBUG_DIRECTORY(void)
{
    /* IMAGE_DEBUG_DIRECTORY (pack 4) */
    TEST_TYPE(IMAGE_DEBUG_DIRECTORY, 28, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, Characteristics, 0, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, TimeDateStamp, 4, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, WORD, MajorVersion, 8, 2, 2);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, WORD, MinorVersion, 10, 2, 2);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, Type, 12, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, SizeOfData, 16, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, AddressOfRawData, 20, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_DIRECTORY, DWORD, PointerToRawData, 24, 4, 4);
}

static void test_pack_IMAGE_DEBUG_MISC(void)
{
    /* IMAGE_DEBUG_MISC (pack 4) */
    TEST_TYPE(IMAGE_DEBUG_MISC, 16, 4);
    TEST_FIELD(IMAGE_DEBUG_MISC, DWORD, DataType, 0, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_MISC, DWORD, Length, 4, 4, 4);
    TEST_FIELD(IMAGE_DEBUG_MISC, BYTE, Unicode, 8, 1, 1);
    TEST_FIELD(IMAGE_DEBUG_MISC, BYTE[ 3 ], Reserved, 9, 3, 1);
    TEST_FIELD(IMAGE_DEBUG_MISC, BYTE[ 1 ], Data, 12, 1, 1);
}

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

static void test_pack_IMAGE_EXPORT_DIRECTORY(void)
{
    /* IMAGE_EXPORT_DIRECTORY (pack 4) */
    TEST_TYPE(IMAGE_EXPORT_DIRECTORY, 40, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, Characteristics, 0, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, TimeDateStamp, 4, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, WORD, MajorVersion, 8, 2, 2);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, WORD, MinorVersion, 10, 2, 2);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, Name, 12, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, Base, 16, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, NumberOfFunctions, 20, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, NumberOfNames, 24, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, AddressOfFunctions, 28, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, AddressOfNames, 32, 4, 4);
    TEST_FIELD(IMAGE_EXPORT_DIRECTORY, DWORD, AddressOfNameOrdinals, 36, 4, 4);
}

static void test_pack_IMAGE_FILE_HEADER(void)
{
    /* IMAGE_FILE_HEADER (pack 4) */
    TEST_TYPE(IMAGE_FILE_HEADER, 20, 4);
    TEST_FIELD(IMAGE_FILE_HEADER, WORD, Machine, 0, 2, 2);
    TEST_FIELD(IMAGE_FILE_HEADER, WORD, NumberOfSections, 2, 2, 2);
    TEST_FIELD(IMAGE_FILE_HEADER, DWORD, TimeDateStamp, 4, 4, 4);
    TEST_FIELD(IMAGE_FILE_HEADER, DWORD, PointerToSymbolTable, 8, 4, 4);
    TEST_FIELD(IMAGE_FILE_HEADER, DWORD, NumberOfSymbols, 12, 4, 4);
    TEST_FIELD(IMAGE_FILE_HEADER, WORD, SizeOfOptionalHeader, 16, 2, 2);
    TEST_FIELD(IMAGE_FILE_HEADER, WORD, Characteristics, 18, 2, 2);
}

static void test_pack_IMAGE_FUNCTION_ENTRY(void)
{
    /* IMAGE_FUNCTION_ENTRY (pack 4) */
    TEST_TYPE(IMAGE_FUNCTION_ENTRY, 12, 4);
    TEST_FIELD(IMAGE_FUNCTION_ENTRY, DWORD, StartingAddress, 0, 4, 4);
    TEST_FIELD(IMAGE_FUNCTION_ENTRY, DWORD, EndingAddress, 4, 4, 4);
    TEST_FIELD(IMAGE_FUNCTION_ENTRY, DWORD, EndOfPrologue, 8, 4, 4);
}

static void test_pack_IMAGE_IMPORT_BY_NAME(void)
{
    /* IMAGE_IMPORT_BY_NAME (pack 4) */
    TEST_TYPE(IMAGE_IMPORT_BY_NAME, 4, 2);
    TEST_FIELD(IMAGE_IMPORT_BY_NAME, WORD, Hint, 0, 2, 2);
    TEST_FIELD(IMAGE_IMPORT_BY_NAME, BYTE[1], Name, 2, 1, 1);
}

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

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

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

static void test_pack_IMAGE_NT_HEADERS(void)
{
    /* IMAGE_NT_HEADERS (pack 4) */
    TEST_TYPE(IMAGE_NT_HEADERS, 248, 4);
    TEST_FIELD(IMAGE_NT_HEADERS, DWORD, Signature, 0, 4, 4);
    TEST_FIELD(IMAGE_NT_HEADERS, IMAGE_FILE_HEADER, FileHeader, 4, 20, 4);
    TEST_FIELD(IMAGE_NT_HEADERS, IMAGE_OPTIONAL_HEADER, OptionalHeader, 24, 224, 4);
}

static void test_pack_IMAGE_OPTIONAL_HEADER(void)
{
    /* IMAGE_OPTIONAL_HEADER (pack 4) */
    TEST_TYPE(IMAGE_OPTIONAL_HEADER, 224, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, WORD, Magic, 0, 2, 2);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, BYTE, MajorLinkerVersion, 2, 1, 1);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, BYTE, MinorLinkerVersion, 3, 1, 1);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, SizeOfCode, 4, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, SizeOfInitializedData, 8, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, SizeOfUninitializedData, 12, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, AddressOfEntryPoint, 16, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, BaseOfCode, 20, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, BaseOfData, 24, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, ImageBase, 28, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, SectionAlignment, 32, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, FileAlignment, 36, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, WORD, MajorOperatingSystemVersion, 40, 2, 2);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, WORD, MinorOperatingSystemVersion, 42, 2, 2);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, WORD, MajorImageVersion, 44, 2, 2);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, WORD, MinorImageVersion, 46, 2, 2);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, WORD, MajorSubsystemVersion, 48, 2, 2);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, WORD, MinorSubsystemVersion, 50, 2, 2);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, Win32VersionValue, 52, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, SizeOfImage, 56, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, SizeOfHeaders, 60, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, CheckSum, 64, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, WORD, Subsystem, 68, 2, 2);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, WORD, DllCharacteristics, 70, 2, 2);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, SizeOfStackReserve, 72, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, SizeOfStackCommit, 76, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, SizeOfHeapReserve, 80, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, SizeOfHeapCommit, 84, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, LoaderFlags, 88, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, DWORD, NumberOfRvaAndSizes, 92, 4, 4);
    TEST_FIELD(IMAGE_OPTIONAL_HEADER, IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES], DataDirectory, 96, 128, 4);
}

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

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

static void test_pack_IMAGE_RESOURCE_DATA_ENTRY(void)
{
    /* IMAGE_RESOURCE_DATA_ENTRY (pack 4) */
    TEST_TYPE(IMAGE_RESOURCE_DATA_ENTRY, 16, 4);
    TEST_FIELD(IMAGE_RESOURCE_DATA_ENTRY, DWORD, OffsetToData, 0, 4, 4);
    TEST_FIELD(IMAGE_RESOURCE_DATA_ENTRY, DWORD, Size, 4, 4, 4);
    TEST_FIELD(IMAGE_RESOURCE_DATA_ENTRY, DWORD, CodePage, 8, 4, 4);
    TEST_FIELD(IMAGE_RESOURCE_DATA_ENTRY, DWORD, Reserved, 12, 4, 4);
}

static void test_pack_IMAGE_RESOURCE_DIRECTORY(void)
{
    /* IMAGE_RESOURCE_DIRECTORY (pack 4) */
    TEST_TYPE(IMAGE_RESOURCE_DIRECTORY, 16, 4);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, DWORD, Characteristics, 0, 4, 4);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, DWORD, TimeDateStamp, 4, 4, 4);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, WORD, MajorVersion, 8, 2, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, WORD, MinorVersion, 10, 2, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, WORD, NumberOfNamedEntries, 12, 2, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY, WORD, NumberOfIdEntries, 14, 2, 2);
}

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

static void test_pack_IMAGE_RESOURCE_DIRECTORY_STRING(void)
{
    /* IMAGE_RESOURCE_DIRECTORY_STRING (pack 4) */
    TEST_TYPE(IMAGE_RESOURCE_DIRECTORY_STRING, 4, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY_STRING, WORD, Length, 0, 2, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIRECTORY_STRING, CHAR[ 1 ], NameString, 2, 1, 1);
}

static void test_pack_IMAGE_RESOURCE_DIR_STRING_U(void)
{
    /* IMAGE_RESOURCE_DIR_STRING_U (pack 4) */
    TEST_TYPE(IMAGE_RESOURCE_DIR_STRING_U, 4, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIR_STRING_U, WORD, Length, 0, 2, 2);
    TEST_FIELD(IMAGE_RESOURCE_DIR_STRING_U, WCHAR[ 1 ], NameString, 2, 2, 2);
}

static void test_pack_IMAGE_SECTION_HEADER(void)
{
    /* IMAGE_SECTION_HEADER (pack 4) */
    TEST_FIELD(IMAGE_SECTION_HEADER, BYTE[IMAGE_SIZEOF_SHORT_NAME], Name, 0, 8, 1);
}

static void test_pack_IMAGE_SEPARATE_DEBUG_HEADER(void)
{
    /* IMAGE_SEPARATE_DEBUG_HEADER (pack 4) */
    TEST_TYPE(IMAGE_SEPARATE_DEBUG_HEADER, 48, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, WORD, Signature, 0, 2, 2);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, WORD, Flags, 2, 2, 2);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, WORD, Machine, 4, 2, 2);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, WORD, Characteristics, 6, 2, 2);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, TimeDateStamp, 8, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, CheckSum, 12, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, ImageBase, 16, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, SizeOfImage, 20, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, NumberOfSections, 24, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, ExportedNamesSize, 28, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, DebugDirectorySize, 32, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD, SectionAlignment, 36, 4, 4);
    TEST_FIELD(IMAGE_SEPARATE_DEBUG_HEADER, DWORD[ 2 ], Reserved, 40, 8, 4);
}

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

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

static void test_pack_IMAGE_TLS_DIRECTORY(void)
{
    /* IMAGE_TLS_DIRECTORY (pack 4) */
    TEST_TYPE(IMAGE_TLS_DIRECTORY, 24, 4);
    TEST_FIELD(IMAGE_TLS_DIRECTORY, DWORD, StartAddressOfRawData, 0, 4, 4);
    TEST_FIELD(IMAGE_TLS_DIRECTORY, DWORD, EndAddressOfRawData, 4, 4, 4);
    TEST_FIELD(IMAGE_TLS_DIRECTORY, LPDWORD, AddressOfIndex, 8, 4, 4);
    TEST_FIELD(IMAGE_TLS_DIRECTORY, PIMAGE_TLS_CALLBACK *, AddressOfCallBacks, 12, 4, 4);
    TEST_FIELD(IMAGE_TLS_DIRECTORY, DWORD, SizeOfZeroFill, 16, 4, 4);
    TEST_FIELD(IMAGE_TLS_DIRECTORY, DWORD, Characteristics, 20, 4, 4);
}

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

static void test_pack_IO_COUNTERS(void)
{
    /* IO_COUNTERS (pack 8) */
    TEST_TYPE(IO_COUNTERS, 48, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, ReadOperationCount, 0, 8, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, WriteOperationCount, 8, 8, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, OtherOperationCount, 16, 8, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, ReadTransferCount, 24, 8, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, WriteTransferCount, 32, 8, 8);
    TEST_FIELD(IO_COUNTERS, ULONGLONG, OtherTransferCount, 40, 8, 8);
}

static void test_pack_LANGID(void)
{
    /* LANGID */
    TEST_TYPE(LANGID, 2, 2);
    TEST_TYPE_UNSIGNED(LANGID);
}

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

static void test_pack_LCID(void)
{
    /* LCID */
    TEST_TYPE(LCID, 4, 4);
    TEST_TYPE_UNSIGNED(LCID);
}

static void test_pack_LIST_ENTRY(void)
{
    /* LIST_ENTRY (pack 4) */
    TEST_TYPE(LIST_ENTRY, 8, 4);
    TEST_FIELD(LIST_ENTRY, struct _LIST_ENTRY *, Flink, 0, 4, 4);
    TEST_FIELD(LIST_ENTRY, struct _LIST_ENTRY *, Blink, 4, 4, 4);
}

static void test_pack_LONG(void)
{
    /* LONG */
    TEST_TYPE(LONG, 4, 4);
    TEST_TYPE_SIGNED(LONG);
}

static void test_pack_LONGLONG(void)
{
    /* LONGLONG */
    TEST_TYPE(LONGLONG, 8, 8);
    TEST_TYPE_SIGNED(LONGLONG);
}

static void test_pack_LPTOP_LEVEL_EXCEPTION_FILTER(void)
{
    /* LPTOP_LEVEL_EXCEPTION_FILTER */
    TEST_TYPE(LPTOP_LEVEL_EXCEPTION_FILTER, 4, 4);
}

static void test_pack_LUID(void)
{
    /* LUID (pack 4) */
    TEST_TYPE(LUID, 8, 4);
    TEST_FIELD(LUID, DWORD, LowPart, 0, 4, 4);
    TEST_FIELD(LUID, LONG, HighPart, 4, 4, 4);
}

static void test_pack_LUID_AND_ATTRIBUTES(void)
{
    /* LUID_AND_ATTRIBUTES (pack 4) */
    TEST_TYPE(LUID_AND_ATTRIBUTES, 12, 4);
    TEST_FIELD(LUID_AND_ATTRIBUTES, LUID, Luid, 0, 8, 4);
    TEST_FIELD(LUID_AND_ATTRIBUTES, DWORD, Attributes, 8, 4, 4);
}

static void test_pack_MEMORY_BASIC_INFORMATION(void)
{
    /* MEMORY_BASIC_INFORMATION (pack 4) */
    TEST_TYPE(MEMORY_BASIC_INFORMATION, 28, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, LPVOID, BaseAddress, 0, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, LPVOID, AllocationBase, 4, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, DWORD, AllocationProtect, 8, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, DWORD, RegionSize, 12, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, DWORD, State, 16, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, DWORD, Protect, 20, 4, 4);
    TEST_FIELD(MEMORY_BASIC_INFORMATION, DWORD, Type, 24, 4, 4);
}

static void test_pack_MESSAGE_RESOURCE_BLOCK(void)
{
    /* MESSAGE_RESOURCE_BLOCK (pack 4) */
    TEST_TYPE(MESSAGE_RESOURCE_BLOCK, 12, 4);
    TEST_FIELD(MESSAGE_RESOURCE_BLOCK, DWORD, LowId, 0, 4, 4);
    TEST_FIELD(MESSAGE_RESOURCE_BLOCK, DWORD, HighId, 4, 4, 4);
    TEST_FIELD(MESSAGE_RESOURCE_BLOCK, DWORD, OffsetToEntries, 8, 4, 4);
}

static void test_pack_MESSAGE_RESOURCE_DATA(void)
{
    /* MESSAGE_RESOURCE_DATA (pack 4) */
    TEST_TYPE(MESSAGE_RESOURCE_DATA, 16, 4);
    TEST_FIELD(MESSAGE_RESOURCE_DATA, DWORD, NumberOfBlocks, 0, 4, 4);
    TEST_FIELD(MESSAGE_RESOURCE_DATA, MESSAGE_RESOURCE_BLOCK[ 1 ], Blocks, 4, 12, 4);
}

static void test_pack_MESSAGE_RESOURCE_ENTRY(void)
{
    /* MESSAGE_RESOURCE_ENTRY (pack 4) */
    TEST_TYPE(MESSAGE_RESOURCE_ENTRY, 6, 2);
    TEST_FIELD(MESSAGE_RESOURCE_ENTRY, WORD, Length, 0, 2, 2);
    TEST_FIELD(MESSAGE_RESOURCE_ENTRY, WORD, Flags, 2, 2, 2);
    TEST_FIELD(MESSAGE_RESOURCE_ENTRY, BYTE[1], Text, 4, 1, 1);
}

static void test_pack_NT_TIB(void)
{
    /* NT_TIB (pack 4) */
    TEST_FIELD(NT_TIB, struct _EXCEPTION_REGISTRATION_RECORD *, ExceptionList, 0, 4, 4);
    TEST_FIELD(NT_TIB, PVOID, StackBase, 4, 4, 4);
    TEST_FIELD(NT_TIB, PVOID, StackLimit, 8, 4, 4);
    TEST_FIELD(NT_TIB, PVOID, SubSystemTib, 12, 4, 4);
}

static void test_pack_OBJECT_TYPE_LIST(void)
{
    /* OBJECT_TYPE_LIST (pack 4) */
    TEST_TYPE(OBJECT_TYPE_LIST, 8, 4);
    TEST_FIELD(OBJECT_TYPE_LIST, WORD, Level, 0, 2, 2);
    TEST_FIELD(OBJECT_TYPE_LIST, WORD, Sbz, 2, 2, 2);
    TEST_FIELD(OBJECT_TYPE_LIST, GUID *, ObjectType, 4, 4, 4);
}

static void test_pack_PACCESS_ALLOWED_ACE(void)
{
    /* PACCESS_ALLOWED_ACE */
    TEST_TYPE(PACCESS_ALLOWED_ACE, 4, 4);
    TEST_TYPE_POINTER(PACCESS_ALLOWED_ACE, 12, 4);
}

static void test_pack_PACCESS_DENIED_ACE(void)
{
    /* PACCESS_DENIED_ACE */
    TEST_TYPE(PACCESS_DENIED_ACE, 4, 4);
    TEST_TYPE_POINTER(PACCESS_DENIED_ACE, 12, 4);
}

static void test_pack_PACCESS_TOKEN(void)
{
    /* PACCESS_TOKEN */
    TEST_TYPE(PACCESS_TOKEN, 4, 4);
}

static void test_pack_PACE_HEADER(void)
{
    /* PACE_HEADER */
    TEST_TYPE(PACE_HEADER, 4, 4);
    TEST_TYPE_POINTER(PACE_HEADER, 4, 2);
}

static void test_pack_PACL(void)
{
    /* PACL */
    TEST_TYPE(PACL, 4, 4);
    TEST_TYPE_POINTER(PACL, 8, 2);
}

static void test_pack_PACL_REVISION_INFORMATION(void)
{
    /* PACL_REVISION_INFORMATION */
    TEST_TYPE(PACL_REVISION_INFORMATION, 4, 4);
    TEST_TYPE_POINTER(PACL_REVISION_INFORMATION, 4, 4);
}

static void test_pack_PACL_SIZE_INFORMATION(void)
{
    /* PACL_SIZE_INFORMATION */
    TEST_TYPE(PACL_SIZE_INFORMATION, 4, 4);
    TEST_TYPE_POINTER(PACL_SIZE_INFORMATION, 12, 4);
}

static void test_pack_PCCH(void)
{
    /* PCCH */
    TEST_TYPE(PCCH, 4, 4);
    TEST_TYPE_POINTER(PCCH, 1, 1);
}

static void test_pack_PCH(void)
{
    /* PCH */
    TEST_TYPE(PCH, 4, 4);
    TEST_TYPE_POINTER(PCH, 1, 1);
}

static void test_pack_PCSTR(void)
{
    /* PCSTR */
    TEST_TYPE(PCSTR, 4, 4);
    TEST_TYPE_POINTER(PCSTR, 1, 1);
}

static void test_pack_PCTSTR(void)
{
    /* PCTSTR */
    TEST_TYPE(PCTSTR, 4, 4);
}

static void test_pack_PCWCH(void)
{
    /* PCWCH */
    TEST_TYPE(PCWCH, 4, 4);
    TEST_TYPE_POINTER(PCWCH, 2, 2);
}

static void test_pack_PCWSTR(void)
{
    /* PCWSTR */
    TEST_TYPE(PCWSTR, 4, 4);
    TEST_TYPE_POINTER(PCWSTR, 2, 2);
}

static void test_pack_PEXCEPTION_POINTERS(void)
{
    /* PEXCEPTION_POINTERS */
    TEST_TYPE(PEXCEPTION_POINTERS, 4, 4);
    TEST_TYPE_POINTER(PEXCEPTION_POINTERS, 8, 4);
}

static void test_pack_PEXCEPTION_RECORD(void)
{
    /* PEXCEPTION_RECORD */
    TEST_TYPE(PEXCEPTION_RECORD, 4, 4);
    TEST_TYPE_POINTER(PEXCEPTION_RECORD, 80, 4);
}

static void test_pack_PFLOATING_SAVE_AREA(void)
{
    /* PFLOATING_SAVE_AREA */
    TEST_TYPE(PFLOATING_SAVE_AREA, 4, 4);
    TEST_TYPE_POINTER(PFLOATING_SAVE_AREA, 112, 4);
}

static void test_pack_PFPO_DATA(void)
{
    /* PFPO_DATA */
    TEST_TYPE(PFPO_DATA, 4, 4);
    TEST_TYPE_POINTER(PFPO_DATA, 16, 4);
}

static void test_pack_PGENERIC_MAPPING(void)
{
    /* PGENERIC_MAPPING */
    TEST_TYPE(PGENERIC_MAPPING, 4, 4);
    TEST_TYPE_POINTER(PGENERIC_MAPPING, 16, 4);
}

static void test_pack_PHANDLE(void)
{
    /* PHANDLE */
    TEST_TYPE(PHANDLE, 4, 4);
    TEST_TYPE_POINTER(PHANDLE, 4, 4);
}

static void test_pack_PIMAGE_ARCHIVE_MEMBER_HEADER(void)
{
    /* PIMAGE_ARCHIVE_MEMBER_HEADER */
    TEST_TYPE(PIMAGE_ARCHIVE_MEMBER_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_ARCHIVE_MEMBER_HEADER, 60, 1);
}

static void test_pack_PIMAGE_AUX_SYMBOL(void)
{
    /* PIMAGE_AUX_SYMBOL */
    TEST_TYPE(PIMAGE_AUX_SYMBOL, 4, 4);
}

static void test_pack_PIMAGE_BASE_RELOCATION(void)
{
    /* PIMAGE_BASE_RELOCATION */
    TEST_TYPE(PIMAGE_BASE_RELOCATION, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_BASE_RELOCATION, 8, 4);
}

static void test_pack_PIMAGE_BOUND_FORWARDER_REF(void)
{
    /* PIMAGE_BOUND_FORWARDER_REF */
    TEST_TYPE(PIMAGE_BOUND_FORWARDER_REF, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_BOUND_FORWARDER_REF, 8, 4);
}

static void test_pack_PIMAGE_BOUND_IMPORT_DESCRIPTOR(void)
{
    /* PIMAGE_BOUND_IMPORT_DESCRIPTOR */
    TEST_TYPE(PIMAGE_BOUND_IMPORT_DESCRIPTOR, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_BOUND_IMPORT_DESCRIPTOR, 8, 4);
}

static void test_pack_PIMAGE_COFF_SYMBOLS_HEADER(void)
{
    /* PIMAGE_COFF_SYMBOLS_HEADER */
    TEST_TYPE(PIMAGE_COFF_SYMBOLS_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_COFF_SYMBOLS_HEADER, 32, 4);
}

static void test_pack_PIMAGE_DATA_DIRECTORY(void)
{
    /* PIMAGE_DATA_DIRECTORY */
    TEST_TYPE(PIMAGE_DATA_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_DATA_DIRECTORY, 8, 4);
}

static void test_pack_PIMAGE_DEBUG_DIRECTORY(void)
{
    /* PIMAGE_DEBUG_DIRECTORY */
    TEST_TYPE(PIMAGE_DEBUG_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_DEBUG_DIRECTORY, 28, 4);
}

static void test_pack_PIMAGE_DEBUG_MISC(void)
{
    /* PIMAGE_DEBUG_MISC */
    TEST_TYPE(PIMAGE_DEBUG_MISC, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_DEBUG_MISC, 16, 4);
}

static void test_pack_PIMAGE_DOS_HEADER(void)
{
    /* PIMAGE_DOS_HEADER */
    TEST_TYPE(PIMAGE_DOS_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_DOS_HEADER, 64, 2);
}

static void test_pack_PIMAGE_EXPORT_DIRECTORY(void)
{
    /* PIMAGE_EXPORT_DIRECTORY */
    TEST_TYPE(PIMAGE_EXPORT_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_EXPORT_DIRECTORY, 40, 4);
}

static void test_pack_PIMAGE_FILE_HEADER(void)
{
    /* PIMAGE_FILE_HEADER */
    TEST_TYPE(PIMAGE_FILE_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_FILE_HEADER, 20, 4);
}

static void test_pack_PIMAGE_FUNCTION_ENTRY(void)
{
    /* PIMAGE_FUNCTION_ENTRY */
    TEST_TYPE(PIMAGE_FUNCTION_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_FUNCTION_ENTRY, 12, 4);
}

static void test_pack_PIMAGE_IMPORT_BY_NAME(void)
{
    /* PIMAGE_IMPORT_BY_NAME */
    TEST_TYPE(PIMAGE_IMPORT_BY_NAME, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_IMPORT_BY_NAME, 4, 2);
}

static void test_pack_PIMAGE_IMPORT_DESCRIPTOR(void)
{
    /* PIMAGE_IMPORT_DESCRIPTOR */
    TEST_TYPE(PIMAGE_IMPORT_DESCRIPTOR, 4, 4);
}

static void test_pack_PIMAGE_LINENUMBER(void)
{
    /* PIMAGE_LINENUMBER */
    TEST_TYPE(PIMAGE_LINENUMBER, 4, 4);
}

static void test_pack_PIMAGE_LOAD_CONFIG_DIRECTORY(void)
{
    /* PIMAGE_LOAD_CONFIG_DIRECTORY */
    TEST_TYPE(PIMAGE_LOAD_CONFIG_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_LOAD_CONFIG_DIRECTORY, 72, 4);
}

static void test_pack_PIMAGE_NT_HEADERS(void)
{
    /* PIMAGE_NT_HEADERS */
    TEST_TYPE(PIMAGE_NT_HEADERS, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_NT_HEADERS, 248, 4);
}

static void test_pack_PIMAGE_OPTIONAL_HEADER(void)
{
    /* PIMAGE_OPTIONAL_HEADER */
    TEST_TYPE(PIMAGE_OPTIONAL_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_OPTIONAL_HEADER, 224, 4);
}

static void test_pack_PIMAGE_OS2_HEADER(void)
{
    /* PIMAGE_OS2_HEADER */
    TEST_TYPE(PIMAGE_OS2_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_OS2_HEADER, 64, 2);
}

static void test_pack_PIMAGE_RELOCATION(void)
{
    /* PIMAGE_RELOCATION */
    TEST_TYPE(PIMAGE_RELOCATION, 4, 4);
}

static void test_pack_PIMAGE_RESOURCE_DATA_ENTRY(void)
{
    /* PIMAGE_RESOURCE_DATA_ENTRY */
    TEST_TYPE(PIMAGE_RESOURCE_DATA_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_RESOURCE_DATA_ENTRY, 16, 4);
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY */
    TEST_TYPE(PIMAGE_RESOURCE_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_RESOURCE_DIRECTORY, 16, 4);
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY_ENTRY(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY_ENTRY */
    TEST_TYPE(PIMAGE_RESOURCE_DIRECTORY_ENTRY, 4, 4);
}

static void test_pack_PIMAGE_RESOURCE_DIRECTORY_STRING(void)
{
    /* PIMAGE_RESOURCE_DIRECTORY_STRING */
    TEST_TYPE(PIMAGE_RESOURCE_DIRECTORY_STRING, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_RESOURCE_DIRECTORY_STRING, 4, 2);
}

static void test_pack_PIMAGE_RESOURCE_DIR_STRING_U(void)
{
    /* PIMAGE_RESOURCE_DIR_STRING_U */
    TEST_TYPE(PIMAGE_RESOURCE_DIR_STRING_U, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_RESOURCE_DIR_STRING_U, 4, 2);
}

static void test_pack_PIMAGE_SECTION_HEADER(void)
{
    /* PIMAGE_SECTION_HEADER */
    TEST_TYPE(PIMAGE_SECTION_HEADER, 4, 4);
}

static void test_pack_PIMAGE_SEPARATE_DEBUG_HEADER(void)
{
    /* PIMAGE_SEPARATE_DEBUG_HEADER */
    TEST_TYPE(PIMAGE_SEPARATE_DEBUG_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_SEPARATE_DEBUG_HEADER, 48, 4);
}

static void test_pack_PIMAGE_SYMBOL(void)
{
    /* PIMAGE_SYMBOL */
    TEST_TYPE(PIMAGE_SYMBOL, 4, 4);
}

static void test_pack_PIMAGE_THUNK_DATA(void)
{
    /* PIMAGE_THUNK_DATA */
    TEST_TYPE(PIMAGE_THUNK_DATA, 4, 4);
}

static void test_pack_PIMAGE_TLS_CALLBACK(void)
{
    /* PIMAGE_TLS_CALLBACK */
    TEST_TYPE(PIMAGE_TLS_CALLBACK, 4, 4);
}

static void test_pack_PIMAGE_TLS_DIRECTORY(void)
{
    /* PIMAGE_TLS_DIRECTORY */
    TEST_TYPE(PIMAGE_TLS_DIRECTORY, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_TLS_DIRECTORY, 24, 4);
}

static void test_pack_PIMAGE_VXD_HEADER(void)
{
    /* PIMAGE_VXD_HEADER */
    TEST_TYPE(PIMAGE_VXD_HEADER, 4, 4);
    TEST_TYPE_POINTER(PIMAGE_VXD_HEADER, 196, 2);
}

static void test_pack_PIO_COUNTERS(void)
{
    /* PIO_COUNTERS */
    TEST_TYPE(PIO_COUNTERS, 4, 4);
    TEST_TYPE_POINTER(PIO_COUNTERS, 48, 8);
}

static void test_pack_PISECURITY_DESCRIPTOR(void)
{
    /* PISECURITY_DESCRIPTOR */
    TEST_TYPE(PISECURITY_DESCRIPTOR, 4, 4);
    TEST_TYPE_POINTER(PISECURITY_DESCRIPTOR, 20, 4);
}

static void test_pack_PISECURITY_DESCRIPTOR_RELATIVE(void)
{
    /* PISECURITY_DESCRIPTOR_RELATIVE */
    TEST_TYPE(PISECURITY_DESCRIPTOR_RELATIVE, 4, 4);
    TEST_TYPE_POINTER(PISECURITY_DESCRIPTOR_RELATIVE, 20, 4);
}

static void test_pack_PISID(void)
{
    /* PISID */
    TEST_TYPE(PISID, 4, 4);
    TEST_TYPE_POINTER(PISID, 12, 4);
}

static void test_pack_PLARGE_INTEGER(void)
{
    /* PLARGE_INTEGER */
    TEST_TYPE(PLARGE_INTEGER, 4, 4);
}

static void test_pack_PLIST_ENTRY(void)
{
    /* PLIST_ENTRY */
    TEST_TYPE(PLIST_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PLIST_ENTRY, 8, 4);
}

static void test_pack_PLUID(void)
{
    /* PLUID */
    TEST_TYPE(PLUID, 4, 4);
    TEST_TYPE_POINTER(PLUID, 8, 4);
}

static void test_pack_PLUID_AND_ATTRIBUTES(void)
{
    /* PLUID_AND_ATTRIBUTES */
    TEST_TYPE(PLUID_AND_ATTRIBUTES, 4, 4);
    TEST_TYPE_POINTER(PLUID_AND_ATTRIBUTES, 12, 4);
}

static void test_pack_PMEMORY_BASIC_INFORMATION(void)
{
    /* PMEMORY_BASIC_INFORMATION */
    TEST_TYPE(PMEMORY_BASIC_INFORMATION, 4, 4);
    TEST_TYPE_POINTER(PMEMORY_BASIC_INFORMATION, 28, 4);
}

static void test_pack_PMESSAGE_RESOURCE_BLOCK(void)
{
    /* PMESSAGE_RESOURCE_BLOCK */
    TEST_TYPE(PMESSAGE_RESOURCE_BLOCK, 4, 4);
    TEST_TYPE_POINTER(PMESSAGE_RESOURCE_BLOCK, 12, 4);
}

static void test_pack_PMESSAGE_RESOURCE_DATA(void)
{
    /* PMESSAGE_RESOURCE_DATA */
    TEST_TYPE(PMESSAGE_RESOURCE_DATA, 4, 4);
    TEST_TYPE_POINTER(PMESSAGE_RESOURCE_DATA, 16, 4);
}

static void test_pack_PMESSAGE_RESOURCE_ENTRY(void)
{
    /* PMESSAGE_RESOURCE_ENTRY */
    TEST_TYPE(PMESSAGE_RESOURCE_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PMESSAGE_RESOURCE_ENTRY, 6, 2);
}

static void test_pack_PNT_TIB(void)
{
    /* PNT_TIB */
    TEST_TYPE(PNT_TIB, 4, 4);
}

static void test_pack_POBJECT_TYPE_LIST(void)
{
    /* POBJECT_TYPE_LIST */
    TEST_TYPE(POBJECT_TYPE_LIST, 4, 4);
    TEST_TYPE_POINTER(POBJECT_TYPE_LIST, 8, 4);
}

static void test_pack_PPRIVILEGE_SET(void)
{
    /* PPRIVILEGE_SET */
    TEST_TYPE(PPRIVILEGE_SET, 4, 4);
    TEST_TYPE_POINTER(PPRIVILEGE_SET, 20, 4);
}

static void test_pack_PRIVILEGE_SET(void)
{
    /* PRIVILEGE_SET (pack 4) */
    TEST_TYPE(PRIVILEGE_SET, 20, 4);
    TEST_FIELD(PRIVILEGE_SET, DWORD, PrivilegeCount, 0, 4, 4);
    TEST_FIELD(PRIVILEGE_SET, DWORD, Control, 4, 4, 4);
    TEST_FIELD(PRIVILEGE_SET, LUID_AND_ATTRIBUTES[ANYSIZE_ARRAY], Privilege, 8, 12, 4);
}

static void test_pack_PRLIST_ENTRY(void)
{
    /* PRLIST_ENTRY */
    TEST_TYPE(PRLIST_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PRLIST_ENTRY, 8, 4);
}

static void test_pack_PRTL_CRITICAL_SECTION(void)
{
    /* PRTL_CRITICAL_SECTION */
    TEST_TYPE(PRTL_CRITICAL_SECTION, 4, 4);
    TEST_TYPE_POINTER(PRTL_CRITICAL_SECTION, 24, 4);
}

static void test_pack_PRTL_CRITICAL_SECTION_DEBUG(void)
{
    /* PRTL_CRITICAL_SECTION_DEBUG */
    TEST_TYPE(PRTL_CRITICAL_SECTION_DEBUG, 4, 4);
    TEST_TYPE_POINTER(PRTL_CRITICAL_SECTION_DEBUG, 32, 4);
}

static void test_pack_PRTL_OSVERSIONINFOEXW(void)
{
    /* PRTL_OSVERSIONINFOEXW */
    TEST_TYPE(PRTL_OSVERSIONINFOEXW, 4, 4);
    TEST_TYPE_POINTER(PRTL_OSVERSIONINFOEXW, 284, 4);
}

static void test_pack_PRTL_OSVERSIONINFOW(void)
{
    /* PRTL_OSVERSIONINFOW */
    TEST_TYPE(PRTL_OSVERSIONINFOW, 4, 4);
    TEST_TYPE_POINTER(PRTL_OSVERSIONINFOW, 276, 4);
}

static void test_pack_PRTL_RESOURCE_DEBUG(void)
{
    /* PRTL_RESOURCE_DEBUG */
    TEST_TYPE(PRTL_RESOURCE_DEBUG, 4, 4);
    TEST_TYPE_POINTER(PRTL_RESOURCE_DEBUG, 32, 4);
}

static void test_pack_PSECURITY_DESCRIPTOR(void)
{
    /* PSECURITY_DESCRIPTOR */
    TEST_TYPE(PSECURITY_DESCRIPTOR, 4, 4);
}

static void test_pack_PSECURITY_QUALITY_OF_SERVICE(void)
{
    /* PSECURITY_QUALITY_OF_SERVICE */
    TEST_TYPE(PSECURITY_QUALITY_OF_SERVICE, 4, 4);
}

static void test_pack_PSID(void)
{
    /* PSID */
    TEST_TYPE(PSID, 4, 4);
}

static void test_pack_PSID_IDENTIFIER_AUTHORITY(void)
{
    /* PSID_IDENTIFIER_AUTHORITY */
    TEST_TYPE(PSID_IDENTIFIER_AUTHORITY, 4, 4);
    TEST_TYPE_POINTER(PSID_IDENTIFIER_AUTHORITY, 6, 1);
}

static void test_pack_PSINGLE_LIST_ENTRY(void)
{
    /* PSINGLE_LIST_ENTRY */
    TEST_TYPE(PSINGLE_LIST_ENTRY, 4, 4);
    TEST_TYPE_POINTER(PSINGLE_LIST_ENTRY, 4, 4);
}

static void test_pack_PSTR(void)
{
    /* PSTR */
    TEST_TYPE(PSTR, 4, 4);
    TEST_TYPE_POINTER(PSTR, 1, 1);
}

static void test_pack_PSYSTEM_ALARM_ACE(void)
{
    /* PSYSTEM_ALARM_ACE */
    TEST_TYPE(PSYSTEM_ALARM_ACE, 4, 4);
    TEST_TYPE_POINTER(PSYSTEM_ALARM_ACE, 12, 4);
}

static void test_pack_PSYSTEM_AUDIT_ACE(void)
{
    /* PSYSTEM_AUDIT_ACE */
    TEST_TYPE(PSYSTEM_AUDIT_ACE, 4, 4);
    TEST_TYPE_POINTER(PSYSTEM_AUDIT_ACE, 12, 4);
}

static void test_pack_PTOKEN_GROUPS(void)
{
    /* PTOKEN_GROUPS */
    TEST_TYPE(PTOKEN_GROUPS, 4, 4);
    TEST_TYPE_POINTER(PTOKEN_GROUPS, 12, 4);
}

static void test_pack_PTOKEN_PRIVILEGES(void)
{
    /* PTOKEN_PRIVILEGES */
    TEST_TYPE(PTOKEN_PRIVILEGES, 4, 4);
    TEST_TYPE_POINTER(PTOKEN_PRIVILEGES, 16, 4);
}

static void test_pack_PTOKEN_USER(void)
{
    /* PTOKEN_USER */
    TEST_TYPE(PTOKEN_USER, 4, 4);
    TEST_TYPE_POINTER(PTOKEN_USER, 8, 4);
}

static void test_pack_PTOP_LEVEL_EXCEPTION_FILTER(void)
{
    /* PTOP_LEVEL_EXCEPTION_FILTER */
    TEST_TYPE(PTOP_LEVEL_EXCEPTION_FILTER, 4, 4);
}

static void test_pack_PTSTR(void)
{
    /* PTSTR */
    TEST_TYPE(PTSTR, 4, 4);
}

static void test_pack_PULARGE_INTEGER(void)
{
    /* PULARGE_INTEGER */
    TEST_TYPE(PULARGE_INTEGER, 4, 4);
}

static void test_pack_PVECTORED_EXCEPTION_HANDLER(void)
{
    /* PVECTORED_EXCEPTION_HANDLER */
    TEST_TYPE(PVECTORED_EXCEPTION_HANDLER, 4, 4);
}

static void test_pack_PVOID(void)
{
    /* PVOID */
    TEST_TYPE(PVOID, 4, 4);
}

static void test_pack_PWCH(void)
{
    /* PWCH */
    TEST_TYPE(PWCH, 4, 4);
    TEST_TYPE_POINTER(PWCH, 2, 2);
}

static void test_pack_PWSTR(void)
{
    /* PWSTR */
    TEST_TYPE(PWSTR, 4, 4);
    TEST_TYPE_POINTER(PWSTR, 2, 2);
}

static void test_pack_RTL_CRITICAL_SECTION(void)
{
    /* RTL_CRITICAL_SECTION (pack 4) */
    TEST_TYPE(RTL_CRITICAL_SECTION, 24, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, PRTL_CRITICAL_SECTION_DEBUG, DebugInfo, 0, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, LONG, LockCount, 4, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, LONG, RecursionCount, 8, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, HANDLE, OwningThread, 12, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, HANDLE, LockSemaphore, 16, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION, ULONG_PTR, SpinCount, 20, 4, 4);
}

static void test_pack_RTL_CRITICAL_SECTION_DEBUG(void)
{
    /* RTL_CRITICAL_SECTION_DEBUG (pack 4) */
    TEST_TYPE(RTL_CRITICAL_SECTION_DEBUG, 32, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, WORD, Type, 0, 2, 2);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, WORD, CreatorBackTraceIndex, 2, 2, 2);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, struct _RTL_CRITICAL_SECTION *, CriticalSection, 4, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, LIST_ENTRY, ProcessLocksList, 8, 8, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, DWORD, EntryCount, 16, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, DWORD, ContentionCount, 20, 4, 4);
    TEST_FIELD(RTL_CRITICAL_SECTION_DEBUG, DWORD[ 2 ], Spare, 24, 8, 4);
}

static void test_pack_RTL_OSVERSIONINFOEXW(void)
{
    /* RTL_OSVERSIONINFOEXW (pack 4) */
    TEST_TYPE(RTL_OSVERSIONINFOEXW, 284, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, DWORD, dwOSVersionInfoSize, 0, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, DWORD, dwMajorVersion, 4, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, DWORD, dwMinorVersion, 8, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, DWORD, dwBuildNumber, 12, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, DWORD, dwPlatformId, 16, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, WCHAR[128], szCSDVersion, 20, 256, 2);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, WORD, wServicePackMajor, 276, 2, 2);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, WORD, wServicePackMinor, 278, 2, 2);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, WORD, wSuiteMask, 280, 2, 2);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, BYTE, wProductType, 282, 1, 1);
    TEST_FIELD(RTL_OSVERSIONINFOEXW, BYTE, wReserved, 283, 1, 1);
}

static void test_pack_RTL_OSVERSIONINFOW(void)
{
    /* RTL_OSVERSIONINFOW (pack 4) */
    TEST_TYPE(RTL_OSVERSIONINFOW, 276, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, DWORD, dwOSVersionInfoSize, 0, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, DWORD, dwMajorVersion, 4, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, DWORD, dwMinorVersion, 8, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, DWORD, dwBuildNumber, 12, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, DWORD, dwPlatformId, 16, 4, 4);
    TEST_FIELD(RTL_OSVERSIONINFOW, WCHAR[128], szCSDVersion, 20, 256, 2);
}

static void test_pack_RTL_RESOURCE_DEBUG(void)
{
    /* RTL_RESOURCE_DEBUG (pack 4) */
    TEST_TYPE(RTL_RESOURCE_DEBUG, 32, 4);
    TEST_FIELD(RTL_RESOURCE_DEBUG, WORD, Type, 0, 2, 2);
    TEST_FIELD(RTL_RESOURCE_DEBUG, WORD, CreatorBackTraceIndex, 2, 2, 2);
    TEST_FIELD(RTL_RESOURCE_DEBUG, struct _RTL_CRITICAL_SECTION *, CriticalSection, 4, 4, 4);
    TEST_FIELD(RTL_RESOURCE_DEBUG, LIST_ENTRY, ProcessLocksList, 8, 8, 4);
    TEST_FIELD(RTL_RESOURCE_DEBUG, DWORD, EntryCount, 16, 4, 4);
    TEST_FIELD(RTL_RESOURCE_DEBUG, DWORD, ContentionCount, 20, 4, 4);
    TEST_FIELD(RTL_RESOURCE_DEBUG, DWORD[ 2 ], Spare, 24, 8, 4);
}

static void test_pack_SECURITY_CONTEXT_TRACKING_MODE(void)
{
    /* SECURITY_CONTEXT_TRACKING_MODE */
    TEST_TYPE(SECURITY_CONTEXT_TRACKING_MODE, 1, 1);
}

static void test_pack_SECURITY_DESCRIPTOR(void)
{
    /* SECURITY_DESCRIPTOR (pack 4) */
    TEST_TYPE(SECURITY_DESCRIPTOR, 20, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR, BYTE, Revision, 0, 1, 1);
    TEST_FIELD(SECURITY_DESCRIPTOR, BYTE, Sbz1, 1, 1, 1);
    TEST_FIELD(SECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, Control, 2, 2, 2);
    TEST_FIELD(SECURITY_DESCRIPTOR, PSID, Owner, 4, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR, PSID, Group, 8, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR, PACL, Sacl, 12, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR, PACL, Dacl, 16, 4, 4);
}

static void test_pack_SECURITY_DESCRIPTOR_CONTROL(void)
{
    /* SECURITY_DESCRIPTOR_CONTROL */
    TEST_TYPE(SECURITY_DESCRIPTOR_CONTROL, 2, 2);
    TEST_TYPE_UNSIGNED(SECURITY_DESCRIPTOR_CONTROL);
}

static void test_pack_SECURITY_DESCRIPTOR_RELATIVE(void)
{
    /* SECURITY_DESCRIPTOR_RELATIVE (pack 4) */
    TEST_TYPE(SECURITY_DESCRIPTOR_RELATIVE, 20, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, BYTE, Revision, 0, 1, 1);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, BYTE, Sbz1, 1, 1, 1);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, SECURITY_DESCRIPTOR_CONTROL, Control, 2, 2, 2);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, DWORD, Owner, 4, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, DWORD, Group, 8, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, DWORD, Sacl, 12, 4, 4);
    TEST_FIELD(SECURITY_DESCRIPTOR_RELATIVE, DWORD, Dacl, 16, 4, 4);
}

static void test_pack_SECURITY_INFORMATION(void)
{
    /* SECURITY_INFORMATION */
    TEST_TYPE(SECURITY_INFORMATION, 4, 4);
    TEST_TYPE_UNSIGNED(SECURITY_INFORMATION);
}

static void test_pack_SECURITY_QUALITY_OF_SERVICE(void)
{
    /* SECURITY_QUALITY_OF_SERVICE (pack 4) */
    TEST_FIELD(SECURITY_QUALITY_OF_SERVICE, DWORD, Length, 0, 4, 4);
}

static void test_pack_SHORT(void)
{
    /* SHORT */
    TEST_TYPE(SHORT, 2, 2);
    TEST_TYPE_SIGNED(SHORT);
}

static void test_pack_SID(void)
{
    /* SID (pack 4) */
    TEST_TYPE(SID, 12, 4);
    TEST_FIELD(SID, BYTE, Revision, 0, 1, 1);
    TEST_FIELD(SID, BYTE, SubAuthorityCount, 1, 1, 1);
    TEST_FIELD(SID, SID_IDENTIFIER_AUTHORITY, IdentifierAuthority, 2, 6, 1);
    TEST_FIELD(SID, DWORD[1], SubAuthority, 8, 4, 4);
}

static void test_pack_SID_AND_ATTRIBUTES(void)
{
    /* SID_AND_ATTRIBUTES (pack 4) */
    TEST_TYPE(SID_AND_ATTRIBUTES, 8, 4);
    TEST_FIELD(SID_AND_ATTRIBUTES, PSID, Sid, 0, 4, 4);
    TEST_FIELD(SID_AND_ATTRIBUTES, DWORD, Attributes, 4, 4, 4);
}

static void test_pack_SID_IDENTIFIER_AUTHORITY(void)
{
    /* SID_IDENTIFIER_AUTHORITY (pack 4) */
    TEST_TYPE(SID_IDENTIFIER_AUTHORITY, 6, 1);
    TEST_FIELD(SID_IDENTIFIER_AUTHORITY, BYTE[6], Value, 0, 6, 1);
}

static void test_pack_SINGLE_LIST_ENTRY(void)
{
    /* SINGLE_LIST_ENTRY (pack 4) */
    TEST_TYPE(SINGLE_LIST_ENTRY, 4, 4);
    TEST_FIELD(SINGLE_LIST_ENTRY, struct _SINGLE_LIST_ENTRY *, Next, 0, 4, 4);
}

static void test_pack_SYSTEM_ALARM_ACE(void)
{
    /* SYSTEM_ALARM_ACE (pack 4) */
    TEST_TYPE(SYSTEM_ALARM_ACE, 12, 4);
    TEST_FIELD(SYSTEM_ALARM_ACE, ACE_HEADER, Header, 0, 4, 2);
    TEST_FIELD(SYSTEM_ALARM_ACE, DWORD, Mask, 4, 4, 4);
    TEST_FIELD(SYSTEM_ALARM_ACE, DWORD, SidStart, 8, 4, 4);
}

static void test_pack_SYSTEM_AUDIT_ACE(void)
{
    /* SYSTEM_AUDIT_ACE (pack 4) */
    TEST_TYPE(SYSTEM_AUDIT_ACE, 12, 4);
    TEST_FIELD(SYSTEM_AUDIT_ACE, ACE_HEADER, Header, 0, 4, 2);
    TEST_FIELD(SYSTEM_AUDIT_ACE, DWORD, Mask, 4, 4, 4);
    TEST_FIELD(SYSTEM_AUDIT_ACE, DWORD, SidStart, 8, 4, 4);
}

static void test_pack_TCHAR(void)
{
    /* TCHAR */
    TEST_TYPE(TCHAR, 1, 1);
}

static void test_pack_TOKEN_DEFAULT_DACL(void)
{
    /* TOKEN_DEFAULT_DACL (pack 4) */
    TEST_TYPE(TOKEN_DEFAULT_DACL, 4, 4);
    TEST_FIELD(TOKEN_DEFAULT_DACL, PACL, DefaultDacl, 0, 4, 4);
}

static void test_pack_TOKEN_GROUPS(void)
{
    /* TOKEN_GROUPS (pack 4) */
    TEST_TYPE(TOKEN_GROUPS, 12, 4);
    TEST_FIELD(TOKEN_GROUPS, DWORD, GroupCount, 0, 4, 4);
    TEST_FIELD(TOKEN_GROUPS, SID_AND_ATTRIBUTES[ANYSIZE_ARRAY], Groups, 4, 8, 4);
}

static void test_pack_TOKEN_OWNER(void)
{
    /* TOKEN_OWNER (pack 4) */
    TEST_TYPE(TOKEN_OWNER, 4, 4);
    TEST_FIELD(TOKEN_OWNER, PSID, Owner, 0, 4, 4);
}

static void test_pack_TOKEN_PRIMARY_GROUP(void)
{
    /* TOKEN_PRIMARY_GROUP (pack 4) */
    TEST_TYPE(TOKEN_PRIMARY_GROUP, 4, 4);
    TEST_FIELD(TOKEN_PRIMARY_GROUP, PSID, PrimaryGroup, 0, 4, 4);
}

static void test_pack_TOKEN_PRIVILEGES(void)
{
    /* TOKEN_PRIVILEGES (pack 4) */
    TEST_TYPE(TOKEN_PRIVILEGES, 16, 4);
    TEST_FIELD(TOKEN_PRIVILEGES, DWORD, PrivilegeCount, 0, 4, 4);
    TEST_FIELD(TOKEN_PRIVILEGES, LUID_AND_ATTRIBUTES[ANYSIZE_ARRAY], Privileges, 4, 12, 4);
}

static void test_pack_TOKEN_SOURCE(void)
{
    /* TOKEN_SOURCE (pack 4) */
    TEST_TYPE(TOKEN_SOURCE, 16, 4);
    TEST_FIELD(TOKEN_SOURCE, char[TOKEN_SOURCE_LENGTH], SourceName, 0, 8, 1);
    TEST_FIELD(TOKEN_SOURCE, LUID, SourceIdentifier, 8, 8, 4);
}

static void test_pack_TOKEN_STATISTICS(void)
{
    /* TOKEN_STATISTICS (pack 4) */
    TEST_FIELD(TOKEN_STATISTICS, LUID, TokenId, 0, 8, 4);
    TEST_FIELD(TOKEN_STATISTICS, LUID, AuthenticationId, 8, 8, 4);
    TEST_FIELD(TOKEN_STATISTICS, LARGE_INTEGER, ExpirationTime, 16, 8, 4);
}

static void test_pack_TOKEN_USER(void)
{
    /* TOKEN_USER (pack 4) */
    TEST_TYPE(TOKEN_USER, 8, 4);
    TEST_FIELD(TOKEN_USER, SID_AND_ATTRIBUTES, User, 0, 8, 4);
}

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

static void test_pack_ULONGLONG(void)
{
    /* ULONGLONG */
    TEST_TYPE(ULONGLONG, 8, 8);
    TEST_TYPE_UNSIGNED(ULONGLONG);
}

static void test_pack_WAITORTIMERCALLBACKFUNC(void)
{
    /* WAITORTIMERCALLBACKFUNC */
    TEST_TYPE(WAITORTIMERCALLBACKFUNC, 4, 4);
}

static void test_pack_WCHAR(void)
{
    /* WCHAR */
    TEST_TYPE(WCHAR, 2, 2);
    TEST_TYPE_UNSIGNED(WCHAR);
}

static void test_pack_ATOM(void)
{
    /* ATOM */
    TEST_TYPE(ATOM, 2, 2);
    TEST_TYPE_UNSIGNED(ATOM);
}

static void test_pack_BOOL(void)
{
    /* BOOL */
    TEST_TYPE(BOOL, 4, 4);
    TEST_TYPE_SIGNED(BOOL);
}

static void test_pack_BYTE(void)
{
    /* BYTE */
    TEST_TYPE(BYTE, 1, 1);
    TEST_TYPE_UNSIGNED(BYTE);
}

static void test_pack_COLORREF(void)
{
    /* COLORREF */
    TEST_TYPE(COLORREF, 4, 4);
    TEST_TYPE_UNSIGNED(COLORREF);
}

static void test_pack_DWORD(void)
{
    /* DWORD */
    TEST_TYPE(DWORD, 4, 4);
    TEST_TYPE_UNSIGNED(DWORD);
}

static void test_pack_FARPROC(void)
{
    /* FARPROC */
    TEST_TYPE(FARPROC, 4, 4);
}

static void test_pack_FLOAT(void)
{
    /* FLOAT */
    TEST_TYPE(FLOAT, 4, 4);
}

static void test_pack_GLOBALHANDLE(void)
{
    /* GLOBALHANDLE */
    TEST_TYPE(GLOBALHANDLE, 4, 4);
}

static void test_pack_HCURSOR(void)
{
    /* HCURSOR */
    TEST_TYPE(HCURSOR, 4, 4);
    TEST_TYPE_UNSIGNED(HCURSOR);
}

static void test_pack_HFILE(void)
{
    /* HFILE */
    TEST_TYPE(HFILE, 4, 4);
    TEST_TYPE_SIGNED(HFILE);
}

static void test_pack_HGDIOBJ(void)
{
    /* HGDIOBJ */
    TEST_TYPE(HGDIOBJ, 4, 4);
}

static void test_pack_HGLOBAL(void)
{
    /* HGLOBAL */
    TEST_TYPE(HGLOBAL, 4, 4);
}

static void test_pack_HLOCAL(void)
{
    /* HLOCAL */
    TEST_TYPE(HLOCAL, 4, 4);
}

static void test_pack_HMODULE(void)
{
    /* HMODULE */
    TEST_TYPE(HMODULE, 4, 4);
    TEST_TYPE_UNSIGNED(HMODULE);
}

static void test_pack_INT(void)
{
    /* INT */
    TEST_TYPE(INT, 4, 4);
    TEST_TYPE_SIGNED(INT);
}

static void test_pack_LOCALHANDLE(void)
{
    /* LOCALHANDLE */
    TEST_TYPE(LOCALHANDLE, 4, 4);
}

static void test_pack_LPARAM(void)
{
    /* LPARAM */
    TEST_TYPE(LPARAM, 4, 4);
}

static void test_pack_LPCRECT(void)
{
    /* LPCRECT */
    TEST_TYPE(LPCRECT, 4, 4);
    TEST_TYPE_POINTER(LPCRECT, 16, 4);
}

static void test_pack_LPCRECTL(void)
{
    /* LPCRECTL */
    TEST_TYPE(LPCRECTL, 4, 4);
    TEST_TYPE_POINTER(LPCRECTL, 16, 4);
}

static void test_pack_LPCVOID(void)
{
    /* LPCVOID */
    TEST_TYPE(LPCVOID, 4, 4);
}

static void test_pack_LPPOINT(void)
{
    /* LPPOINT */
    TEST_TYPE(LPPOINT, 4, 4);
    TEST_TYPE_POINTER(LPPOINT, 8, 4);
}

static void test_pack_LPPOINTS(void)
{
    /* LPPOINTS */
    TEST_TYPE(LPPOINTS, 4, 4);
    TEST_TYPE_POINTER(LPPOINTS, 4, 2);
}

static void test_pack_LPRECT(void)
{
    /* LPRECT */
    TEST_TYPE(LPRECT, 4, 4);
    TEST_TYPE_POINTER(LPRECT, 16, 4);
}

static void test_pack_LPRECTL(void)
{
    /* LPRECTL */
    TEST_TYPE(LPRECTL, 4, 4);
    TEST_TYPE_POINTER(LPRECTL, 16, 4);
}

static void test_pack_LPSIZE(void)
{
    /* LPSIZE */
    TEST_TYPE(LPSIZE, 4, 4);
    TEST_TYPE_POINTER(LPSIZE, 8, 4);
}

static void test_pack_LRESULT(void)
{
    /* LRESULT */
    TEST_TYPE(LRESULT, 4, 4);
}

static void test_pack_POINT(void)
{
    /* POINT (pack 4) */
    TEST_TYPE(POINT, 8, 4);
    TEST_FIELD(POINT, LONG, x, 0, 4, 4);
    TEST_FIELD(POINT, LONG, y, 4, 4, 4);
}

static void test_pack_POINTL(void)
{
    /* POINTL (pack 4) */
    TEST_TYPE(POINTL, 8, 4);
    TEST_FIELD(POINTL, LONG, x, 0, 4, 4);
    TEST_FIELD(POINTL, LONG, y, 4, 4, 4);
}

static void test_pack_POINTS(void)
{
    /* POINTS (pack 4) */
    TEST_TYPE(POINTS, 4, 2);
    TEST_FIELD(POINTS, SHORT, x, 0, 2, 2);
    TEST_FIELD(POINTS, SHORT, y, 2, 2, 2);
}

static void test_pack_PPOINT(void)
{
    /* PPOINT */
    TEST_TYPE(PPOINT, 4, 4);
    TEST_TYPE_POINTER(PPOINT, 8, 4);
}

static void test_pack_PPOINTL(void)
{
    /* PPOINTL */
    TEST_TYPE(PPOINTL, 4, 4);
    TEST_TYPE_POINTER(PPOINTL, 8, 4);
}

static void test_pack_PPOINTS(void)
{
    /* PPOINTS */
    TEST_TYPE(PPOINTS, 4, 4);
    TEST_TYPE_POINTER(PPOINTS, 4, 2);
}

static void test_pack_PRECT(void)
{
    /* PRECT */
    TEST_TYPE(PRECT, 4, 4);
    TEST_TYPE_POINTER(PRECT, 16, 4);
}

static void test_pack_PRECTL(void)
{
    /* PRECTL */
    TEST_TYPE(PRECTL, 4, 4);
    TEST_TYPE_POINTER(PRECTL, 16, 4);
}

static void test_pack_PROC(void)
{
    /* PROC */
    TEST_TYPE(PROC, 4, 4);
}

static void test_pack_PSIZE(void)
{
    /* PSIZE */
    TEST_TYPE(PSIZE, 4, 4);
    TEST_TYPE_POINTER(PSIZE, 8, 4);
}

static void test_pack_PSZ(void)
{
    /* PSZ */
    TEST_TYPE(PSZ, 4, 4);
}

static void test_pack_RECT(void)
{
    /* RECT (pack 4) */
    TEST_TYPE(RECT, 16, 4);
    TEST_FIELD(RECT, LONG, left, 0, 4, 4);
    TEST_FIELD(RECT, LONG, top, 4, 4, 4);
    TEST_FIELD(RECT, LONG, right, 8, 4, 4);
    TEST_FIELD(RECT, LONG, bottom, 12, 4, 4);
}

static void test_pack_RECTL(void)
{
    /* RECTL (pack 4) */
    TEST_TYPE(RECTL, 16, 4);
    TEST_FIELD(RECTL, LONG, left, 0, 4, 4);
    TEST_FIELD(RECTL, LONG, top, 4, 4, 4);
    TEST_FIELD(RECTL, LONG, right, 8, 4, 4);
    TEST_FIELD(RECTL, LONG, bottom, 12, 4, 4);
}

static void test_pack_SIZE(void)
{
    /* SIZE (pack 4) */
    TEST_TYPE(SIZE, 8, 4);
    TEST_FIELD(SIZE, LONG, cx, 0, 4, 4);
    TEST_FIELD(SIZE, LONG, cy, 4, 4, 4);
}

static void test_pack_SIZEL(void)
{
    /* SIZEL */
    TEST_TYPE(SIZEL, 8, 4);
}

static void test_pack_UCHAR(void)
{
    /* UCHAR */
    TEST_TYPE(UCHAR, 1, 1);
    TEST_TYPE_UNSIGNED(UCHAR);
}

static void test_pack_UINT(void)
{
    /* UINT */
    TEST_TYPE(UINT, 4, 4);
    TEST_TYPE_UNSIGNED(UINT);
}

static void test_pack_ULONG(void)
{
    /* ULONG */
    TEST_TYPE(ULONG, 4, 4);
    TEST_TYPE_UNSIGNED(ULONG);
}

static void test_pack_USHORT(void)
{
    /* USHORT */
    TEST_TYPE(USHORT, 2, 2);
    TEST_TYPE_UNSIGNED(USHORT);
}

static void test_pack_WORD(void)
{
    /* WORD */
    TEST_TYPE(WORD, 2, 2);
    TEST_TYPE_UNSIGNED(WORD);
}

static void test_pack_WPARAM(void)
{
    /* WPARAM */
    TEST_TYPE(WPARAM, 4, 4);
}

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_OPTIONAL_HEADER();
    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_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_LPPOINTS();
    test_pack_LPRECT();
    test_pack_LPRECTL();
    test_pack_LPSIZE();
    test_pack_LPTOP_LEVEL_EXCEPTION_FILTER();
    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_OPTIONAL_HEADER();
    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_POINTS();
    test_pack_PPOINT();
    test_pack_PPOINTL();
    test_pack_PPOINTS();
    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_PTOP_LEVEL_EXCEPTION_FILTER();
    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();
}
