⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 generated.c

📁 winNT技术操作系统,国外开放的原代码和LIUX一样
💻 C
📖 第 1 页 / 共 5 页
字号:
/* 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", \
           (int)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", \
             (long int)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", (int)_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", (int)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", ((int) 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, PVOID, ExceptionAddress, 12, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, DWORD, NumberParameters, 16, 4, 4);
    TEST_FIELD(EXCEPTION_RECORD, ULONG_PTR[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);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -