Update widl to current Wine version.

This commit is contained in:
Jacek Caban 2018-08-31 10:13:51 +02:00
parent 079ed545d3
commit cb6bc23b4d
24 changed files with 1326 additions and 861 deletions

View File

@ -1 +1 @@
WIDL version 3.1
WIDL version 3.14

View File

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for widl 3.1.
# Generated by GNU Autoconf 2.69 for widl 3.14.
#
# Report bugs to <mingw-w64-public@lists.sourceforge.net>.
#
@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='widl'
PACKAGE_TARNAME='widl'
PACKAGE_VERSION='3.1'
PACKAGE_STRING='widl 3.1'
PACKAGE_VERSION='3.14'
PACKAGE_STRING='widl 3.14'
PACKAGE_BUGREPORT='mingw-w64-public@lists.sourceforge.net'
PACKAGE_URL=''
@ -1283,7 +1283,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures widl 3.1 to adapt to many kinds of systems.
\`configure' configures widl 3.14 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1354,7 +1354,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of widl 3.1:";;
short | recursive ) echo "Configuration of widl 3.14:";;
esac
cat <<\_ACEOF
@ -1448,7 +1448,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
widl configure 3.1
widl configure 3.14
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -2001,7 +2001,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by widl $as_me 3.1, which was
It was created by widl $as_me 3.14, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -2979,7 +2979,7 @@ fi
# Define the identity of the package.
PACKAGE='widl'
VERSION='3.1'
VERSION='3.14'
cat >>confdefs.h <<_ACEOF
@ -5645,7 +5645,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by widl $as_me 3.1, which was
This file was extended by widl $as_me 3.14, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -5711,7 +5711,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
widl config.status 3.1
widl config.status 3.14
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View File

@ -130,12 +130,12 @@ typedef GUID FMTID,*LPFMTID;
#define REFCLSID const CLSID &
#define REFIID const IID &
#define REFFMTID const FMTID &
#else /* !defined(__cplusplus) && !defined(CINTERFACE) */
#else /* !defined(__cplusplus) */
#define REFGUID const GUID* __MIDL_CONST
#define REFCLSID const CLSID* __MIDL_CONST
#define REFIID const IID* __MIDL_CONST
#define REFFMTID const FMTID* __MIDL_CONST
#endif /* !defined(__cplusplus) && !defined(CINTERFACE) */
#endif /* !defined(__cplusplus) */
#if defined(__cplusplus) && !defined(CINTERFACE)
#define IsEqualGUID(rguid1, rguid2) (!memcmp(&(rguid1), &(rguid2), sizeof(GUID)))

View File

@ -0,0 +1,309 @@
/*
* NDR Types
*
* Copyright 2006 Robert Shearman (for CodeWeavers)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifndef __NDRTYPES_H__
#define __NDRTYPES_H__
#include <limits.h>
typedef struct
{
unsigned short MustSize : 1; /* 0x0001 - client interpreter MUST size this
* parameter, other parameters may be skipped, using the value in
* NDR_PROC_PARTIAL_OIF_HEADER::constant_client_buffer_size instead. */
unsigned short MustFree : 1; /* 0x0002 - server interpreter MUST size this
* parameter, other parameters may be skipped, using the value in
* NDR_PROC_PARTIAL_OIF_HEADER::constant_server_buffer_size instead. */
unsigned short IsPipe : 1; /* 0x0004 - The parameter is a pipe handle */
unsigned short IsIn : 1; /* 0x0008 - The parameter is an input */
unsigned short IsOut : 1; /* 0x0010 - The parameter is an output */
unsigned short IsReturn : 1; /* 0x0020 - The parameter is to be returned */
unsigned short IsBasetype : 1; /* 0x0040 - The parameter is simple and has the
* format defined by NDR_PARAM_OIF_BASETYPE rather than by
* NDR_PARAM_OIF_OTHER. */
unsigned short IsByValue : 1; /* 0x0080 - Set for compound types being sent by
* value. Can be of type: structure, union, transmit_as, represent_as,
* wire_marshal and SAFEARRAY. */
unsigned short IsSimpleRef : 1; /* 0x0100 - parameter that is a reference
* pointer to anything other than another pointer, and which has no
* allocate attributes. */
unsigned short IsDontCallFreeInst : 1; /* 0x0200 - Used for some represent_as types
* for when the free instance routine should not be called. */
unsigned short SaveForAsyncFinish : 1; /* 0x0400 - Unknown */
unsigned short Unused : 2;
unsigned short ServerAllocSize : 3; /* 0xe000 - If non-zero
* specifies the size of the object in numbers of 8byte blocks needed.
* It will be stored on the server's stack rather than using an allocate
* call. */
} PARAM_ATTRIBUTES;
typedef struct
{
unsigned char ServerMustSize : 1; /* 0x01 - the server must perform a
* sizing pass. */
unsigned char ClientMustSize : 1; /* 0x02 - the client must perform a
* sizing pass. */
unsigned char HasReturn : 1; /* 0x04 - procedure has a return value. */
unsigned char HasPipes : 1; /* 0x08 - the pipe package should be used. */
unsigned char Unused : 1; /* 0x10 - not used */
unsigned char HasAsyncUuid : 1; /* 0x20 - indicates an asynchronous DCOM
* procedure. */
unsigned char HasExtensions : 1; /* 0x40 - indicates that Win2000
* extensions are in use. */
unsigned char HasAsyncHandle : 1; /* 0x80 - indicates an asynchronous RPC
* procedure. */
} INTERPRETER_OPT_FLAGS, *PINTERPRETER_OPT_FLAGS;
typedef struct
{
unsigned char HasNewCorrDesc : 1; /* 0x01 - indicates new correlation
* descriptors in use. */
unsigned char ClientCorrCheck : 1; /* 0x02 - client needs correlation
* check. */
unsigned char ServerCorrCheck : 1; /* 0x04 - server needs correlation
* check. */
unsigned char HasNotify : 1; /* 0x08 - should call MIDL [notify]
* routine @ NotifyIndex. */
unsigned char HasNotify2 : 1; /* 0x10 - should call MIDL [notify_flag] routine @
* NotifyIndex. */
/* The following bits are in fact used by midl but haven't yet been
named in the SDK. */
unsigned char Unused : 3; /* 0x20 - has complex return */
/* 0x40 - has range on conformance */
} INTERPRETER_OPT_FLAGS2, *PINTERPRETER_OPT_FLAGS2;
/* Win2000 extensions */
typedef struct
{
/* size in bytes of all following extensions */
unsigned char Size;
INTERPRETER_OPT_FLAGS2 Flags2;
/* client cache size hint */
unsigned short ClientCorrHint;
/* server cache size hint */
unsigned short ServerCorrHint;
/* index of routine in MIDL_STUB_DESC::NotifyRoutineTable to call if
* HasNotify or HasNotify2 flag set */
unsigned short NotifyIndex;
} NDR_PROC_HEADER_EXTS;
typedef struct
{
/* size in bytes of all following extensions */
unsigned char Size;
INTERPRETER_OPT_FLAGS2 Flags2;
/* client cache size hint */
unsigned short ClientCorrHint;
/* server cache size hint */
unsigned short ServerCorrHint;
/* index of routine in MIDL_STUB_DESC::NotifyRoutineTable to call if
* HasNotify or HasNotify2 flag set */
unsigned short NotifyIndex;
/* needed only on IA64 to cope with float/register loading */
unsigned short FloatArgMask;
} NDR_PROC_HEADER_EXTS64;
typedef enum
{
FC_BYTE = 0x01, /* 0x01 */
FC_CHAR, /* 0x02 */
FC_SMALL, /* 0x03 */
FC_USMALL, /* 0x04 */
FC_WCHAR, /* 0x05 */
FC_SHORT, /* 0x06 */
FC_USHORT, /* 0x07 */
FC_LONG, /* 0x08 */
FC_ULONG, /* 0x09 */
FC_FLOAT, /* 0x0a */
FC_HYPER, /* 0x0b */
FC_DOUBLE, /* 0x0c */
FC_ENUM16, /* 0x0d */
FC_ENUM32, /* 0x0e */
FC_IGNORE, /* 0x0f */
FC_ERROR_STATUS_T, /* 0x10 */
FC_RP, /* 0x11 */ /* reference pointer */
FC_UP, /* 0x12 */ /* unique pointer */
FC_OP, /* 0x13 */ /* object pointer */
FC_FP, /* 0x14 */ /* full pointer */
FC_STRUCT, /* 0x15 */ /* simple structure */
FC_PSTRUCT, /* 0x16 */ /* simple structure w/ pointers */
FC_CSTRUCT, /* 0x17 */ /* conformant structure */
FC_CPSTRUCT, /* 0x18 */ /* conformant structure w/ pointers */
FC_CVSTRUCT, /* 0x19 */ /* conformant varying struct */
FC_BOGUS_STRUCT, /* 0x1a */ /* complex structure */
FC_CARRAY, /* 0x1b */ /* conformant array */
FC_CVARRAY, /* 0x1c */ /* conformant varying array */
FC_SMFARRAY, /* 0x1d */ /* small (<64K) fixed array */
FC_LGFARRAY, /* 0x1e */ /* large (>= 64k) fixed array */
FC_SMVARRAY, /* 0x1f */ /* small (<64k) varying array */
FC_LGVARRAY, /* 0x20 */ /* large (>= 64k) varying array */
FC_BOGUS_ARRAY, /* 0x21 */ /* complex array */
FC_C_CSTRING, /* 0x22 */ /* conformant char string */
FC_C_BSTRING, /* 0x23 */
FC_C_SSTRING, /* 0x24 */
FC_C_WSTRING, /* 0x25 */ /* conformant wchar string */
FC_CSTRING, /* 0x26 */ /* non-conformant char string */
FC_BSTRING, /* 0x27 */
FC_SSTRING, /* 0x28 */
FC_WSTRING, /* 0x29 */ /* non-conformant wchar string */
FC_ENCAPSULATED_UNION, /* 0x2a */
FC_NON_ENCAPSULATED_UNION, /* 0x2b */
FC_BYTE_COUNT_POINTER, /* 0x2c */ /* [byte_count] ACF attribute */
FC_TRANSMIT_AS, /* 0x2d */
FC_REPRESENT_AS, /* 0x2e */
FC_IP, /* 0x2f */ /* interface pointer */
FC_BIND_CONTEXT, /* 0x30 */
FC_BIND_GENERIC, /* 0x31 */
FC_BIND_PRIMITIVE, /* 0x32 */
FC_AUTO_HANDLE, /* 0x33 */
FC_CALLBACK_HANDLE, /* 0x34 */
FC_UNUSED1, /* 0x35 */
FC_POINTER, /* 0x36 */
FC_ALIGNM2, /* 0x37 */
FC_ALIGNM4, /* 0x38 */
FC_ALIGNM8, /* 0x39 */
FC_UNUSED2, /* 0x3a */
FC_UNUSED3, /* 0x3b */
FC_UNUSED4, /* 0x3c */
FC_STRUCTPAD1, /* 0x3d */
FC_STRUCTPAD2, /* 0x3e */
FC_STRUCTPAD3, /* 0x3f */
FC_STRUCTPAD4, /* 0x40 */
FC_STRUCTPAD5, /* 0x41 */
FC_STRUCTPAD6, /* 0x42 */
FC_STRUCTPAD7, /* 0x43 */
FC_STRING_SIZED, /* 0x44 */
FC_UNUSED5, /* 0x45 */
FC_NO_REPEAT, /* 0x46 */
FC_FIXED_REPEAT, /* 0x47 */
FC_VARIABLE_REPEAT, /* 0x48 */
FC_FIXED_OFFSET, /* 0x49 */
FC_VARIABLE_OFFSET, /* 0x4a */
FC_PP, /* 0x4b */ /* pointer layout */
/* FC_PP: FC_PAD layouts */
/* layouts: FC_NO_REPEAT FC_PAD instance */
/* instance: NdrFcShort(memofs), NdrFcShort(bufofs), desc */
FC_EMBEDDED_COMPLEX, /* 0x4c */
FC_IN_PARAM, /* 0x4d */
FC_IN_PARAM_BASETYPE, /* 0x4e */
FC_IN_PARAM_NO_FREE_INST, /* 0x4f */
FC_IN_OUT_PARAM, /* 0x50 */
FC_OUT_PARAM, /* 0x51 */
FC_RETURN_PARAM, /* 0x52 */
FC_RETURN_PARAM_BASETYPE, /* 0x53 */
FC_DEREFERENCE, /* 0x54 */
FC_DIV_2, /* 0x55 */
FC_MULT_2, /* 0x56 */
FC_ADD_1, /* 0x57 */
FC_SUB_1, /* 0x58 */
FC_CALLBACK, /* 0x59 */
FC_CONSTANT_IID, /* 0x5a */
FC_END, /* 0x5b */
FC_PAD, /* 0x5c */
FC_HARD_STRUCT = 0xb1,
FC_TRANSMIT_AS_PTR, /* 0xb2 */
FC_REPRESENT_AS_PTR, /* 0xb3 */
FC_USER_MARSHAL, /* 0xb4 */
FC_PIPE, /* 0xb5 */
FC_BLKHOLE, /* 0xb6 */
FC_RANGE, /* 0xb7 */
FC_INT3264, /* 0xb8 */
FC_UINT3264, /* 0xb9 */
} FORMAT_CHARACTER;
#define FC_ALLOCATE_ALL_NODES 0x01
#define FC_DONT_FREE 0x02
#define FC_ALLOCED_ON_STACK 0x04
#define FC_SIMPLE_POINTER 0x08
#define FC_POINTER_DEREF 0x10
/* flags for all handle types */
#define HANDLE_PARAM_IS_VIA_PTR 0x80
#define HANDLE_PARAM_IS_IN 0x40
#define HANDLE_PARAM_IS_OUT 0x20
#define HANDLE_PARAM_IS_RETURN 0x10
/* flags for context handles */
#define NDR_STRICT_CONTEXT_HANDLE 0x08
#define NDR_CONTEXT_HANDLE_NOSERIALIZE 0x04
#define NDR_CONTEXT_HANDLE_SERIALIZE 0x02
#define NDR_CONTEXT_HANDLE_CANNOT_BE_NULL 0x01
#define Oi_FULL_PTR_USED 0x01
#define Oi_RPCSS_ALLOC_USED 0x02
#define Oi_OBJECT_PROC 0x04
#define Oi_HAS_RPCFLAGS 0x08
#define Oi_OBJ_USE_V2_INTERPRETER 0x20
#define Oi_HAS_COMM_OR_FAULT 0x20
#define Oi_USE_NEW_INIT_ROUTINES 0x40
#define FC_NORMAL_CONFORMANCE (unsigned char) 0x00
#define FC_POINTER_CONFORMANCE (unsigned char) 0x10
#define FC_TOP_LEVEL_CONFORMANCE (unsigned char) 0x20
#define FC_CONSTANT_CONFORMANCE (unsigned char) 0x40
#define FC_TOP_LEVEL_MULTID_CONFORMANCE (unsigned char) 0x80
#define USER_MARSHAL_UNIQUE 0x80
#define USER_MARSHAL_REF 0x40
#define USER_MARSHAL_POINTER 0xc0
#define USER_MARSHAL_IID 0x20
#endif

View File

@ -1683,7 +1683,7 @@ typedef enum _PROC_THREAD_ATTRIBUTE_NUM
#define PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY (ProcThreadAttributeGroupAffinity | PROC_THREAD_ATTRIBUTE_THREAD | PROC_THREAD_ATTRIBUTE_INPUT)
#define PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR (ProcThreadAttributeIdealProcessor | PROC_THREAD_ATTRIBUTE_THREAD | PROC_THREAD_ATTRIBUTE_INPUT)
#define PROC_THREAD_ATTRIBUTE_UMS_THREAD (ProcThreadAttributeUmsThread | PROC_THREAD_ATTRIBUTE_THREAD | PROC_THREAD_ATTRIBUTE_INPUT)
#define PROC_THREAD_ATTRIBUTE_MIGITATION_POLICY (ProcThreadAttributeMitigationPolicy | PROC_THREAD_ATTRIBUTE_INPUT)
#define PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY (ProcThreadAttributeMitigationPolicy | PROC_THREAD_ATTRIBUTE_INPUT)
#define PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES (ProcThreadAttributeSecurityCapabilities | PROC_THREAD_ATTRIBUTE_INPUT)
#define PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL (ProcThreadAttributeProtectionLevel | PROC_THREAD_ATTRIBUTE_INPUT)
#define PROC_THREAD_ATTRIBUTE_JOB_LIST (ProcThreadAttributeJobList | PROC_THREAD_ATTRIBUTE_INPUT)
@ -1694,6 +1694,20 @@ typedef enum _PROC_THREAD_ATTRIBUTE_NUM
#define SYMBOLIC_LINK_FLAG_DIRECTORY (0x1)
#define VALID_SYMBOLIC_LINK_FLAGS SYMBOLIC_LINK_FLAG_DIRECTORY
typedef void *PUMS_CONTEXT;
typedef void *PUMS_COMPLETION_LIST;
typedef PRTL_UMS_SCHEDULER_ENTRY_POINT PUMS_SCHEDULER_ENTRY_POINT;
typedef struct _UMS_SCHEDULER_STARTUP_INFO
{
ULONG UmsVersion;
PUMS_COMPLETION_LIST CompletionList;
PUMS_SCHEDULER_ENTRY_POINT SchedulerProc;
PVOID SchedulerParam;
} UMS_SCHEDULER_STARTUP_INFO, *PUMS_SCHEDULER_STARTUP_INFO;
typedef enum _RTL_UMS_SCHEDULER_REASON UMS_SCHEDULER_REASON;
typedef enum _RTL_UMS_THREAD_INFO_CLASS UMS_THREAD_INFO_CLASS, *PUMS_THREAD_INFO_CLASS;
WINBASEAPI BOOL WINAPI ActivateActCtx(HANDLE,ULONG_PTR *);
WINADVAPI BOOL WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
WINADVAPI BOOL WINAPI AddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID);
@ -1844,6 +1858,7 @@ WINADVAPI BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECUR
#define CreateProcessAsUser WINELIB_NAME_AW(CreateProcessAsUser)
WINADVAPI BOOL WINAPI CreateProcessWithLogonW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPCWSTR,LPWSTR,DWORD,LPVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
WINBASEAPI HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
WINBASEAPI HANDLE WINAPI CreateRemoteThreadEx(HANDLE,LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPPROC_THREAD_ATTRIBUTE_LIST,LPDWORD);
WINADVAPI BOOL WINAPI CreateRestrictedToken(HANDLE,DWORD,DWORD,PSID_AND_ATTRIBUTES,DWORD,PLUID_AND_ATTRIBUTES,DWORD,PSID_AND_ATTRIBUTES,PHANDLE);
WINBASEAPI HANDLE WINAPI CreateSemaphoreA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR);
WINBASEAPI HANDLE WINAPI CreateSemaphoreW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR);
@ -1861,6 +1876,8 @@ WINBASEAPI DWORD WINAPI CreateTapePartition(HANDLE,DWORD,DWORD,DWORD);
WINBASEAPI HANDLE WINAPI CreateThread(LPSECURITY_ATTRIBUTES,SIZE_T,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
WINBASEAPI HANDLE WINAPI CreateTimerQueue(void);
WINBASEAPI BOOL WINAPI CreateTimerQueueTimer(PHANDLE,HANDLE,WAITORTIMERCALLBACK,PVOID,DWORD,DWORD,ULONG);
WINBASEAPI BOOL WINAPI CreateUmsCompletionList(PUMS_COMPLETION_LIST*);
WINBASEAPI BOOL WINAPI CreateUmsThreadContext(PUMS_CONTEXT*);
WINBASEAPI HANDLE WINAPI CreateWaitableTimerA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
WINBASEAPI HANDLE WINAPI CreateWaitableTimerW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
#define CreateWaitableTimer WINELIB_NAME_AW(CreateWaitableTimer)
@ -1894,13 +1911,17 @@ WINBASEAPI void WINAPI DeleteProcThreadAttributeList(struct _PROC_THREAD_
WINBASEAPI BOOL WINAPI DeleteTimerQueue(HANDLE);
WINBASEAPI BOOL WINAPI DeleteTimerQueueEx(HANDLE,HANDLE);
WINBASEAPI BOOL WINAPI DeleteTimerQueueTimer(HANDLE,HANDLE,HANDLE);
WINBASEAPI BOOL WINAPI DeleteUmsCompletionList(PUMS_COMPLETION_LIST);
WINBASEAPI BOOL WINAPI DeleteUmsThreadContext(PUMS_CONTEXT);
WINBASEAPI BOOL WINAPI DeleteVolumeMountPointA(LPCSTR);
WINBASEAPI BOOL WINAPI DeleteVolumeMountPointW(LPCWSTR);
#define DeleteVolumeMountPoint WINELIB_NAME_AW(DeleteVolumeMountPoint)
WINBASEAPI BOOL WINAPI DequeueUmsCompletionListItems(void *, DWORD, PUMS_CONTEXT *);
WINADVAPI BOOL WINAPI DeregisterEventSource(HANDLE);
WINADVAPI BOOL WINAPI DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*);
WINBASEAPI BOOL WINAPI DeviceIoControl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);
WINBASEAPI BOOL WINAPI DisableThreadLibraryCalls(HMODULE);
WINBASEAPI VOID WINAPI DisassociateCurrentThreadFromCallback(PTP_CALLBACK_INSTANCE);
WINBASEAPI BOOL WINAPI DisconnectNamedPipe(HANDLE);
WINBASEAPI BOOL WINAPI DnsHostnameToComputerNameA(LPCSTR,LPSTR,LPDWORD);
WINBASEAPI BOOL WINAPI DnsHostnameToComputerNameW(LPCWSTR,LPWSTR,LPDWORD);
@ -1919,6 +1940,7 @@ WINBASEAPI BOOL WINAPI EndUpdateResourceA(HANDLE,BOOL);
WINBASEAPI BOOL WINAPI EndUpdateResourceW(HANDLE,BOOL);
#define EndUpdateResource WINELIB_NAME_AW(EndUpdateResource)
WINBASEAPI void WINAPI EnterCriticalSection(CRITICAL_SECTION *lpCrit);
WINBASEAPI BOOL WINAPI EnterUmsSchedulingMode(PUMS_SCHEDULER_STARTUP_INFO);
WINBASEAPI BOOL WINAPI EnumResourceLanguagesA(HMODULE,LPCSTR,LPCSTR,ENUMRESLANGPROCA,LONG_PTR);
WINBASEAPI BOOL WINAPI EnumResourceLanguagesW(HMODULE,LPCWSTR,LPCWSTR,ENUMRESLANGPROCW,LONG_PTR);
#define EnumResourceLanguages WINELIB_NAME_AW(EnumResourceLanguages)
@ -1936,6 +1958,7 @@ WINADVAPI BOOL WINAPI EqualPrefixSid(PSID,PSID);
WINBASEAPI DWORD WINAPI EraseTape(HANDLE,DWORD,BOOL);
WINBASEAPI VOID DECLSPEC_NORETURN WINAPI ExitProcess(DWORD);
WINBASEAPI VOID DECLSPEC_NORETURN WINAPI ExitThread(DWORD);
WINBASEAPI BOOL WINAPI ExecuteUmsThread(PUMS_CONTEXT);
WINBASEAPI DWORD WINAPI ExpandEnvironmentStringsA(LPCSTR,LPSTR,DWORD);
WINBASEAPI DWORD WINAPI ExpandEnvironmentStringsW(LPCWSTR,LPWSTR,DWORD);
#define ExpandEnvironmentStrings WINELIB_NAME_AW(ExpandEnvironmentStrings)
@ -2015,6 +2038,7 @@ WINBASEAPI BOOL WINAPI FreeResource(HGLOBAL);
WINADVAPI PVOID WINAPI FreeSid(PSID);
WINADVAPI BOOL WINAPI GetAce(PACL,DWORD,LPVOID*);
WINADVAPI BOOL WINAPI GetAclInformation(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS);
WINBASEAPI HRESULT WINAPI GetApplicationRestartSettings(HANDLE,WCHAR*,DWORD*,DWORD*);
WINBASEAPI UINT WINAPI GetAtomNameA(ATOM,LPSTR,INT);
WINBASEAPI UINT WINAPI GetAtomNameW(ATOM,LPWSTR,INT);
#define GetAtomName WINELIB_NAME_AW(GetAtomName)
@ -2051,6 +2075,7 @@ WINBASEAPI DWORD WINAPI GetCurrentProcessorNumber(void);
WINBASEAPI VOID WINAPI GetCurrentProcessorNumberEx(PPROCESSOR_NUMBER);
WINBASEAPI HANDLE WINAPI GetCurrentThread(void);
#define GetCurrentTime() GetTickCount()
WINBASEAPI PUMS_CONTEXT WINAPI GetCurrentUmsThread(void);
WINBASEAPI BOOL WINAPI GetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,LPDWORD);
WINBASEAPI BOOL WINAPI GetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,LPDWORD);
#define GetDefaultCommConfig WINELIB_NAME_AW(GetDefaultCommConfig)
@ -2118,12 +2143,16 @@ WINBASEAPI HMODULE WINAPI GetModuleHandleW(LPCWSTR);
WINBASEAPI BOOL WINAPI GetModuleHandleExA(DWORD,LPCSTR,HMODULE*);
WINBASEAPI BOOL WINAPI GetModuleHandleExW(DWORD,LPCWSTR,HMODULE*);
#define GetModuleHandleEx WINELIB_NAME_AW(GetModuleHandleEx)
WINBASEAPI BOOL WINAPI GetNamedPipeClientProcessId(HANDLE,PULONG);
WINBASEAPI BOOL WINAPI GetNamedPipeClientSessionId(HANDLE,PULONG);
WINBASEAPI BOOL WINAPI GetNamedPipeHandleStateA(HANDLE,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPSTR,DWORD);
WINBASEAPI BOOL WINAPI GetNamedPipeHandleStateW(HANDLE,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPWSTR,DWORD);
#define GetNamedPipeHandleState WINELIB_NAME_AW(GetNamedPipeHandleState)
WINBASEAPI BOOL WINAPI GetNamedPipeInfo(HANDLE,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
WINBASEAPI BOOL WINAPI GetNamedPipeClientProcessId(HANDLE,PULONG);
WINBASEAPI BOOL WINAPI GetNamedPipeServerProcessId(HANDLE,PULONG);
WINBASEAPI BOOL WINAPI GetNamedPipeServerSessionId(HANDLE,PULONG);
WINBASEAPI VOID WINAPI GetNativeSystemInfo(LPSYSTEM_INFO);
WINBASEAPI PUMS_CONTEXT WINAPI GetNextUmsListItem(PUMS_CONTEXT);
WINBASEAPI BOOL WINAPI GetNumaProcessorNode(UCHAR,PUCHAR);
WINADVAPI BOOL WINAPI GetNumberOfEventLogRecords(HANDLE,PDWORD);
WINADVAPI BOOL WINAPI GetOldestEventLogRecord(HANDLE,PDWORD);
@ -2224,6 +2253,7 @@ WINBASEAPI BOOL WINAPI GetThreadPriorityBoost(HANDLE,PBOOL);
WINBASEAPI BOOL WINAPI GetThreadSelectorEntry(HANDLE,DWORD,LPLDT_ENTRY);
WINBASEAPI BOOL WINAPI GetThreadTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
WINADVAPI BOOL WINAPI GetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,LPVOID,DWORD,LPDWORD);
WINBASEAPI BOOL WINAPI GetUmsCompletionListEvent(PUMS_COMPLETION_LIST, PHANDLE);
WINADVAPI BOOL WINAPI GetUserNameA(LPSTR,LPDWORD);
WINADVAPI BOOL WINAPI GetUserNameW(LPWSTR,LPDWORD);
#define GetUserName WINELIB_NAME_AW(GetUserName)
@ -2244,6 +2274,7 @@ WINBASEAPI BOOL WINAPI GetVolumePathNameW(LPCWSTR,LPWSTR,DWORD);
WINBASEAPI BOOL WINAPI GetVolumePathNamesForVolumeNameA(LPCSTR,LPSTR,DWORD,PDWORD);
WINBASEAPI BOOL WINAPI GetVolumePathNamesForVolumeNameW(LPCWSTR,LPWSTR,DWORD,PDWORD);
#define GetVolumePathNamesForVolumeName WINELIB_NAME_AW(GetVolumePathNamesForVolumeName)
WINADVAPI BOOL WINAPI GetWindowsAccountDomainSid(PSID,PSID,DWORD*);
WINBASEAPI UINT WINAPI GetWindowsDirectoryA(LPSTR,UINT);
WINBASEAPI UINT WINAPI GetWindowsDirectoryW(LPWSTR,UINT);
#define GetWindowsDirectory WINELIB_NAME_AW(GetWindowsDirectory)
@ -2316,6 +2347,7 @@ WINBASEAPI BOOL WINAPI IsBadWritePtr(LPVOID,UINT_PTR);
WINBASEAPI BOOL WINAPI IsDebuggerPresent(void);
WINBASEAPI BOOL WINAPI IsSystemResumeAutomatic(void);
WINADVAPI BOOL WINAPI IsTextUnicode(LPCVOID,INT,LPINT);
WINBASEAPI BOOL WINAPI IsThreadpoolTimerSet(PTP_TIMER);
WINADVAPI BOOL WINAPI IsTokenRestricted(HANDLE);
WINADVAPI BOOL WINAPI IsValidAcl(PACL);
WINADVAPI BOOL WINAPI IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
@ -2328,6 +2360,7 @@ WINADVAPI BOOL WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
WINBASEAPI BOOL WINAPI IsProcessInJob(HANDLE,HANDLE,PBOOL);
WINBASEAPI BOOL WINAPI IsProcessorFeaturePresent(DWORD);
WINBASEAPI void WINAPI LeaveCriticalSection(CRITICAL_SECTION *lpCrit);
WINBASEAPI VOID WINAPI LeaveCriticalSectionWhenCallbackReturns(PTP_CALLBACK_INSTANCE,CRITICAL_SECTION*);
WINBASEAPI HMODULE WINAPI LoadLibraryA(LPCSTR);
WINBASEAPI HMODULE WINAPI LoadLibraryW(LPCWSTR);
#define LoadLibrary WINELIB_NAME_AW(LoadLibrary)
@ -2449,6 +2482,7 @@ WINADVAPI BOOL WINAPI PrivilegedServiceAuditAlarmW(LPCWSTR,LPCWSTR,HANDL
#define PrivilegedServiceAuditAlarm WINELIB_NAME_AW(PrivilegedServiceAuditAlarm)
WINBASEAPI BOOL WINAPI PulseEvent(HANDLE);
WINBASEAPI BOOL WINAPI PurgeComm(HANDLE,DWORD);
WINBASEAPI BOOL WINAPI QueryActCtxSettingsW(DWORD,HANDLE,const WCHAR*,const WCHAR*,WCHAR*,SIZE_T,SIZE_T*);
WINBASEAPI BOOL WINAPI QueryActCtxW(DWORD,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T *);
WINBASEAPI USHORT WINAPI QueryDepthSList(PSLIST_HEADER);
WINBASEAPI DWORD WINAPI QueryDosDeviceA(LPCSTR,LPSTR,DWORD);
@ -2462,6 +2496,7 @@ WINBASEAPI BOOL WINAPI QueryMemoryResourceNotification(HANDLE,PBOOL);
WINBASEAPI BOOL WINAPI QueryPerformanceCounter(LARGE_INTEGER*);
WINBASEAPI BOOL WINAPI QueryPerformanceFrequency(LARGE_INTEGER*);
WINBASEAPI BOOL WINAPI QueryThreadCycleTime(HANDLE,PULONG64);
WINBASEAPI BOOL WINAPI QueryUmsThreadInformation(PUMS_CONTEXT,UMS_THREAD_INFO_CLASS,PVOID,ULONG,PULONG);
WINBASEAPI DWORD WINAPI QueueUserAPC(PAPCFUNC,HANDLE,ULONG_PTR);
WINBASEAPI BOOL WINAPI QueueUserWorkItem(LPTHREAD_START_ROUTINE,PVOID,ULONG);
WINBASEAPI void WINAPI RaiseException(DWORD,DWORD,DWORD,const ULONG_PTR *);
@ -2481,7 +2516,9 @@ WINBASEAPI BOOL WINAPI RegisterWaitForSingleObject(PHANDLE,HANDLE,WAITORT
WINBASEAPI HANDLE WINAPI RegisterWaitForSingleObjectEx(HANDLE,WAITORTIMERCALLBACK,PVOID,ULONG,ULONG);
WINBASEAPI VOID WINAPI ReleaseActCtx(HANDLE);
WINBASEAPI BOOL WINAPI ReleaseMutex(HANDLE);
WINBASEAPI VOID WINAPI ReleaseMutexWhenCallbackReturns(PTP_CALLBACK_INSTANCE,HANDLE);
WINBASEAPI BOOL WINAPI ReleaseSemaphore(HANDLE,LONG,LPLONG);
WINBASEAPI VOID WINAPI ReleaseSemaphoreWhenCallbackReturns(PTP_CALLBACK_INSTANCE,HANDLE,DWORD);
WINBASEAPI VOID WINAPI ReleaseSRWLockExclusive(PSRWLOCK);
WINBASEAPI VOID WINAPI ReleaseSRWLockShared(PSRWLOCK);
WINBASEAPI ULONG WINAPI RemoveVectoredExceptionHandler(PVOID);
@ -2493,6 +2530,7 @@ WINBASEAPI BOOL WINAPI RemoveDirectoryW(LPCWSTR);
#define RemoveDirectory WINELIB_NAME_AW(RemoveDirectory)
WINADVAPI BOOL WINAPI ReportEventA(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCSTR *,LPVOID);
WINADVAPI BOOL WINAPI ReportEventW(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCWSTR *,LPVOID);
WINBASEAPI BOOL WINAPI RequestDeviceWakeup(HANDLE);
WINBASEAPI BOOL WINAPI RequestWakeupLatency(LATENCY_TIME latency);
#define ReportEvent WINELIB_NAME_AW(ReportEvent)
WINBASEAPI BOOL WINAPI ResetEvent(HANDLE);
@ -2531,6 +2569,7 @@ WINBASEAPI BOOL WINAPI SetEnvironmentVariableW(LPCWSTR,LPCWSTR);
#define SetEnvironmentVariable WINELIB_NAME_AW(SetEnvironmentVariable)
WINBASEAPI UINT WINAPI SetErrorMode(UINT);
WINBASEAPI BOOL WINAPI SetEvent(HANDLE);
WINBASEAPI VOID WINAPI SetEventWhenCallbackReturns(PTP_CALLBACK_INSTANCE,HANDLE);
WINBASEAPI VOID WINAPI SetFileApisToANSI(void);
WINBASEAPI VOID WINAPI SetFileApisToOEM(void);
WINBASEAPI BOOL WINAPI SetFileAttributesA(LPCSTR,DWORD);
@ -2576,6 +2615,8 @@ WINBASEAPI BOOL WINAPI SetThreadContext(HANDLE,const CONTEXT *);
WINBASEAPI BOOL WINAPI SetThreadErrorMode(DWORD,LPDWORD);
WINBASEAPI DWORD WINAPI SetThreadExecutionState(EXECUTION_STATE);
WINBASEAPI DWORD WINAPI SetThreadIdealProcessor(HANDLE,DWORD);
WINBASEAPI VOID WINAPI SetThreadpoolThreadMaximum(PTP_POOL,DWORD);
WINBASEAPI BOOL WINAPI SetThreadpoolThreadMinimum(PTP_POOL,DWORD);
WINBASEAPI BOOL WINAPI SetThreadPriority(HANDLE,INT);
WINBASEAPI BOOL WINAPI SetThreadPriorityBoost(HANDLE,BOOL);
WINADVAPI BOOL WINAPI SetThreadToken(PHANDLE,HANDLE);
@ -2593,6 +2634,7 @@ WINBASEAPI BOOL WINAPI SetVolumeMountPointW(LPCWSTR,LPCWSTR);
#define SetVolumeMountPoint WINELIB_NAME_AW(SetVolumeMountPoint)
WINBASEAPI BOOL WINAPI SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,LPVOID,BOOL);
WINBASEAPI BOOL WINAPI SetWaitableTimerEx(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,LPVOID,REASON_CONTEXT*,ULONG);
WINBASEAPI BOOL WINAPI SetUmsThreadInformation(PUMS_CONTEXT,UMS_THREAD_INFO_CLASS,void *,ULONG);
WINBASEAPI BOOL WINAPI SetupComm(HANDLE,DWORD,DWORD);
WINBASEAPI DWORD WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL);
WINBASEAPI DWORD WINAPI SizeofResource(HMODULE,HRSRC);
@ -2626,6 +2668,7 @@ WINBASEAPI BOOL WINAPI UnlockFileEx(HANDLE,DWORD,DWORD,DWORD,LPOVERLAPPED
#define UnlockResource(handle) ((handle), 0)
#define UnlockSegment(handle) GlobalUnfix((HANDLE)(handle))
WINBASEAPI BOOL WINAPI UnmapViewOfFile(LPCVOID);
WINBASEAPI BOOL WINAPI UmsThreadYield(void *);
WINBASEAPI HRESULT WINAPI UnregisterApplicationRestart(void);
WINBASEAPI BOOL WINAPI UnregisterWait(HANDLE);
WINBASEAPI BOOL WINAPI UnregisterWaitEx(HANDLE,HANDLE);
@ -2654,6 +2697,8 @@ WINBASEAPI DWORD WINAPI WaitForMultipleObjectsEx(DWORD,const HANDLE*,BOOL,
WINBASEAPI DWORD WINAPI WaitForSingleObject(HANDLE,DWORD);
WINBASEAPI DWORD WINAPI WaitForSingleObjectEx(HANDLE,DWORD,BOOL);
WINBASEAPI VOID WINAPI WaitForThreadpoolTimerCallbacks(PTP_TIMER,BOOL);
WINBASEAPI VOID WINAPI WaitForThreadpoolWaitCallbacks(PTP_WAIT,BOOL);
WINBASEAPI VOID WINAPI WaitForThreadpoolWorkCallbacks(PTP_WORK,BOOL);
WINBASEAPI BOOL WINAPI WaitNamedPipeA(LPCSTR,DWORD);
WINBASEAPI BOOL WINAPI WaitNamedPipeW(LPCWSTR,DWORD);
#define WaitNamedPipe WINELIB_NAME_AW(WaitNamedPipe)
@ -2662,7 +2707,9 @@ WINBASEAPI VOID WINAPI WakeConditionVariable(PCONDITION_VARIABLE);
WINBASEAPI UINT WINAPI WinExec(LPCSTR,UINT);
WINBASEAPI BOOL WINAPI Wow64DisableWow64FsRedirection(PVOID*);
WINBASEAPI BOOLEAN WINAPI Wow64EnableWow64FsRedirection(BOOLEAN);
WINBASEAPI BOOL WINAPI Wow64GetThreadContext(HANDLE, WOW64_CONTEXT *);
WINBASEAPI BOOL WINAPI Wow64RevertWow64FsRedirection(PVOID);
WINBASEAPI BOOL WINAPI Wow64SetThreadContext(HANDLE, const WOW64_CONTEXT *);
WINADVAPI DWORD WINAPI WriteEncryptedFileRaw(PFE_IMPORT_FUNC,PVOID,PVOID);
WINBASEAPI BOOL WINAPI WriteFile(HANDLE,LPCVOID,DWORD,LPDWORD,LPOVERLAPPED);
WINBASEAPI BOOL WINAPI WriteFileEx(HANDLE,LPCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);

View File

@ -71,6 +71,8 @@ extern "C" {
# endif
# elif defined(__arm__) && defined (__GNUC__) && !defined(__SOFTFP__)
# define __stdcall __attribute__((pcs("aapcs-vfp")))
# elif defined(__aarch64__) && defined (__GNUC__)
# define __stdcall __attribute__((ms_abi))
# else /* __i386__ */
# define __stdcall
# endif /* __i386__ */
@ -91,13 +93,15 @@ extern "C" {
# endif
# elif defined(__arm__) && defined (__GNUC__) && !defined(__SOFTFP__)
# define __cdecl __attribute__((pcs("aapcs-vfp")))
# elif defined(__aarch64__) && defined (__GNUC__)
# define __cdecl __attribute__((ms_abi))
# elif !defined(_MSC_VER)
# define __cdecl
# endif
#endif /* __cdecl */
#ifndef __ms_va_list
# if defined(__x86_64__) && defined (__GNUC__)
# if (defined(__x86_64__) || defined(__aarch64__)) && defined (__GNUC__)
# define __ms_va_list __builtin_ms_va_list
# define __ms_va_start(list,arg) __builtin_ms_va_start(list,arg)
# define __ms_va_end(list) __builtin_ms_va_end(list)
@ -289,6 +293,7 @@ typedef DWORD COLORREF, *LPCOLORREF;
/* Handle types */
typedef int HFILE;
DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);
DECLARE_HANDLE(HACCEL);
DECLARE_HANDLE(HBITMAP);
DECLARE_HANDLE(HBRUSH);
@ -432,6 +437,20 @@ typedef struct _RECTL
typedef const RECTL *LPCRECTL;
/* DPI awareness */
typedef enum DPI_AWARENESS
{
DPI_AWARENESS_INVALID = -1,
DPI_AWARENESS_UNAWARE = 0,
DPI_AWARENESS_SYSTEM_AWARE,
DPI_AWARENESS_PER_MONITOR_AWARE
} DPI_AWARENESS;
#define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1)
#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4)
#ifdef __cplusplus
}
#endif

View File

@ -1,205 +0,0 @@
/*
* RPC format chars, as found by studying MIDL output.
* Some, but not all, usage of these are explained on MSDN.
*/
#ifndef __WINE_RPCFC_H
#define __WINE_RPCFC_H
/* base types */
#define RPC_FC_BYTE 0x01
#define RPC_FC_CHAR 0x02
#define RPC_FC_SMALL 0x03
#define RPC_FC_USMALL 0x04
#define RPC_FC_WCHAR 0x05
#define RPC_FC_SHORT 0x06
#define RPC_FC_USHORT 0x07
#define RPC_FC_LONG 0x08
#define RPC_FC_ULONG 0x09
#define RPC_FC_FLOAT 0x0a
#define RPC_FC_HYPER 0x0b
#define RPC_FC_DOUBLE 0x0c
#define RPC_FC_ENUM16 0x0d
#define RPC_FC_ENUM32 0x0e
#define RPC_FC_IGNORE 0x0f
#define RPC_FC_ERROR_STATUS_T 0x10
/* other stuff */
#define RPC_FC_RP 0x11 /* reference pointer */
#define RPC_FC_UP 0x12 /* unique pointer */
#define RPC_FC_OP 0x13 /* unique pointer in object ? */
#define RPC_FC_FP 0x14 /* full pointer */
#define RPC_FC_STRUCT 0x15 /* simple structure */
/* FC_STRUCT: align-1, NdrFcShort(size), fields */
#define RPC_FC_PSTRUCT 0x16 /* simple structure w/ pointers */
/* FC_PTRUCT: align-1, NdrFcShort(size), ptrs, fields */
#define RPC_FC_CSTRUCT 0x17 /* conformant structure */
#define RPC_FC_CPSTRUCT 0x18 /* conformant structure w/ pointers */
#define RPC_FC_CVSTRUCT 0x19 /* conformant varying struct */
#define RPC_FC_BOGUS_STRUCT 0x1a /* complex structure */
#define RPC_FC_CARRAY 0x1b /* conformant array */
/* FC_CARRAY: align-1, NdrFcShort(size), conformance, ptrs, fields */
#define RPC_FC_CVARRAY 0x1c /* conformant varying array */
/* FC_CARRAY: align-1, NdrFcShort(size), conformance, variance, ptrs, fields */
#define RPC_FC_SMFARRAY 0x1d /* small (<64K) fixed array */
/* FC_SMFARRAY: align-1, NdrFcShort(size), ptrs, fields */
#define RPC_FC_LGFARRAY 0x1e /* large (>= 64k) fixed array */
#define RPC_FC_SMVARRAY 0x1f /* small (<64k) varying array */
#define RPC_FC_LGVARRAY 0x20 /* large (>= 64k) varying array */
#define RPC_FC_BOGUS_ARRAY 0x21 /* complex array */
#define RPC_FC_C_CSTRING 0x22
#define RPC_FC_C_SSTRING 0x24
#define RPC_FC_C_WSTRING 0x25
#define RPC_FC_CSTRING 0x26
#define RPC_FC_SSTRING 0x28
#define RPC_FC_WSTRING 0x29
#define RPC_FC_ENCAPSULATED_UNION 0x2a
#define RPC_FC_NON_ENCAPSULATED_UNION 0x2b
#define RPC_FC_BYTE_COUNT_POINTER 0x2c /* [byte_count] ACF attribute */
#define RPC_FC_TRANSMIT_AS 0x2d
#define RPC_FC_REPRESENT_AS 0x2e
#define RPC_FC_IP 0x2f /* interface pointer */
/* FC_IP: FC_CONSTANT_IID iid */
/* FC_IP: FC_PAD correlation */
#define RPC_FC_BIND_CONTEXT 0x30
#define RPC_FC_BIND_GENERIC 0x31
#define RPC_FC_BIND_PRIMITIVE 0x32
#define RPC_FC_AUTO_HANDLE 0x33
#define RPC_FC_CALLBACK_HANDLE 0x34
#define RPC_FC_POINTER 0x36
#define RPC_FC_ALIGNM2 0x37
#define RPC_FC_ALIGNM4 0x38
#define RPC_FC_ALIGNM8 0x39
#define RPC_FC_STRUCTPAD1 0x3d
#define RPC_FC_STRUCTPAD2 0x3e
#define RPC_FC_STRUCTPAD3 0x3f
#define RPC_FC_STRUCTPAD4 0x40
#define RPC_FC_STRUCTPAD5 0x41
#define RPC_FC_STRUCTPAD6 0x42
#define RPC_FC_STRUCTPAD7 0x43
#define RPC_FC_STRING_SIZED 0x44
#define RPC_FC_NO_REPEAT 0x46
#define RPC_FC_FIXED_REPEAT 0x47
#define RPC_FC_VARIABLE_REPEAT 0x48
#define RPC_FC_FIXED_OFFSET 0x49
#define RPC_FC_VARIABLE_OFFSET 0x4a
#define RPC_FC_PP 0x4b /* pointer layout */
/* FC_PP: FC_PAD layouts */
/* layouts: FC_NO_REPEAT FC_PAD instance */
/* instance: NdrFcShort(memofs), NdrFcShort(bufofs), desc */
#define RPC_FC_EMBEDDED_COMPLEX 0x4c
/* FC_EMBEDDED_COMPLEX: padding, NdrFcShort(typeofs) */
#define RPC_FC_IN_PARAM 0x4d
/* FC_IN_PARAM: stacksiz, NdrFcShort(typeofs) */
#define RPC_FC_IN_PARAM_BASETYPE 0x4e
/* FC_IN_PARAM_BASETYPE: basetype */
#define RPC_FC_IN_PARAM_NO_FREE_INST 0x4f
#define RPC_FC_IN_OUT_PARAM 0x50
/* FC_IN_OUT_PARAM: stacksiz, NdrFcShort(typeofs) */
#define RPC_FC_OUT_PARAM 0x51
/* FC_OUT_PARAM: stacksiz, NdrFcShort(typeofs) */
#define RPC_FC_RETURN_PARAM 0x52
/* FC_RETURN_PARAM: stacksiz, NdrFcShort(typeofs) */
#define RPC_FC_RETURN_PARAM_BASETYPE 0x53
/* FC_RETURN_PARAM_BASETYPE: basetype */
#define RPC_FC_DEREFERENCE 0x54
#define RPC_FC_DIV_2 0x55
#define RPC_FC_MULT_2 0x56
#define RPC_FC_ADD_1 0x57
#define RPC_FC_SUB_1 0x58
#define RPC_FC_CALLBACK 0x59
#define RPC_FC_CONSTANT_IID 0x5a
/* FC_CONSTANT_IID: NdrFcLong(), NdrFcShort(), NdrFcShort(), 8x () */
#define RPC_FC_END 0x5b
#define RPC_FC_PAD 0x5c
#define RPC_FC_USER_MARSHAL 0xb4
#define RPC_FC_RANGE 0xb7
#define RPC_FC_INT3264 0xb8
#define RPC_FC_UINT3264 0xb9
/* FC_RP/UP/OP/FP: flags, NdrFcShort(typeofs)/basetype */
#define RPC_FC_P_ALLOCALLNODES 0x01
#define RPC_FC_P_DONTFREE 0x02
#define RPC_FC_P_ONSTACK 0x04 /* [alloced_on_stack] */
#define RPC_FC_P_SIMPLEPOINTER 0x08 /* [simple_pointer] */
#define RPC_FC_P_DEREF 0x10
#define RPC_FC_BIND_EXPLICIT 0x00
/* proc header: oiflags, NdrFcLong(rpcflags), NdrFcShort(procnum), NdrFcShort(stacksiz),
* oi2 header: NdrFcShort(clientbuf), NdrFcShort(servbuf), oi2flags, parmcount
* oi2 parameters: NdrFcShort(flags), NdrFcShort(stackofs), NdrFcShort(typeofs)/basetype */
#define RPC_FC_PROC_OIF_FULLPTR 0x01
#define RPC_FC_PROC_OIF_RPCSSALLOC 0x02
#define RPC_FC_PROC_OIF_OBJECT 0x04
#define RPC_FC_PROC_OIF_RPCFLAGS 0x08
#define RPC_FC_PROC_OIF_OBJ_V2 0x20
#define RPC_FC_PROC_OIF_HAS_COMM_OR_FAULT 0x20
#define RPC_FC_PROC_OIF_NEWINIT 0x40
#define RPC_FC_PROC_PF_MUSTSIZE 0x0001
#define RPC_FC_PROC_PF_MUSTFREE 0x0002
#define RPC_FC_PROC_PF_PIPE 0x0004
#define RPC_FC_PROC_PF_IN 0x0008
#define RPC_FC_PROC_PF_OUT 0x0010
#define RPC_FC_PROC_PF_RETURN 0x0020
#define RPC_FC_PROC_PF_BASETYPE 0x0040
#define RPC_FC_PROC_PF_BYVAL 0x0080
#define RPC_FC_PROC_PF_SIMPLEREF 0x0100
#define RPC_FC_PROC_PF_DONTFREEINST 0x0200
#define RPC_FC_PROC_PF_SAVEASYNC 0x0400
#define RPC_FC_PROC_PF_SRVALLOCSIZE 0xe000 /* in 8 byte units */
/* correlation types */
#define RPC_FC_NORMAL_CONFORMANCE 0x00
#define RPC_FC_POINTER_CONFORMANCE 0x10
#define RPC_FC_TOP_LEVEL_CONFORMANCE 0x20
#define RPC_FC_CONSTANT_CONFORMANCE 0x40
#define RPC_FC_TOP_LEVEL_MULTID_CONFORMANCE 0x80
/* user marshal flags */
#define USER_MARSHAL_UNIQUE 0x80
#define USER_MARSHAL_REF 0x40
#define USER_MARSHAL_POINTER 0xc0
#define USER_MARSHAL_IID 0x20
/* context handle flags */
#define NDR_CONTEXT_HANDLE_CANNOT_BE_NULL 0x01
#define NDR_CONTEXT_HANDLE_SERIALIZE 0x02
#define NDR_CONTEXT_HANDLE_NO_SERIALIZE 0x04
#define NDR_STRICT_CONTEXT_HANDLE 0x08
#endif /* __WINE_RPCFC_H */

View File

@ -940,7 +940,6 @@ static inline HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define ERROR_WRONG_COMPARTMENT 1468
#define ERROR_AUTHIP_FAILURE 1469
#define ERROR_NO_NVRAM_RESOURCES 1470
#define ERROR_NOT_GUI_PROCESS 1471
#define ERROR_EVENTLOG_FILE_CORRUPT 1500
#define ERROR_EVENTLOG_CANT_START 1501
#define ERROR_LOG_FILE_FULL 1502
@ -3011,6 +3010,85 @@ static inline HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define SCARD_W_CACHE_ITEM_STALE _HRESULT_TYPEDEF_(0x80100071)
#define SCARD_W_CACHE_ITEM_TOO_BIG _HRESULT_TYPEDEF_(0x80100072)
#define WININET_E_OUT_OF_HANDLES _HRESULT_TYPEDEF_(0x80072ee1)
#define WININET_E_TIMEOUT _HRESULT_TYPEDEF_(0x80072ee2)
#define WININET_E_EXTENDED_ERROR _HRESULT_TYPEDEF_(0x80072ee3)
#define WININET_E_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x80072ee4)
#define WININET_E_INVALID_URL _HRESULT_TYPEDEF_(0x80072ee5)
#define WININET_E_UNRECOGNIZED_SCHEME _HRESULT_TYPEDEF_(0x80072ee6)
#define WININET_E_NAME_NOT_RESOLVED _HRESULT_TYPEDEF_(0x80072ee7)
#define WININET_E_PROTOCOL_NOT_FOUND _HRESULT_TYPEDEF_(0x80072ee8)
#define WININET_E_INVALID_OPTION _HRESULT_TYPEDEF_(0x80072ee9)
#define WININET_E_BAD_OPTION_LENGTH _HRESULT_TYPEDEF_(0x80072eea)
#define WININET_E_OPTION_NOT_SETTABLE _HRESULT_TYPEDEF_(0x80072eeb)
#define WININET_E_SHUTDOWN _HRESULT_TYPEDEF_(0x80072eec)
#define WININET_E_INCORRECT_USER_NAME _HRESULT_TYPEDEF_(0x80072eed)
#define WININET_E_INCORRECT_PASSWORD _HRESULT_TYPEDEF_(0x80072eee)
#define WININET_E_LOGIN_FAILURE _HRESULT_TYPEDEF_(0x80072eef)
#define WININET_E_INVALID_OPERATION _HRESULT_TYPEDEF_(0x80072ef0)
#define WININET_E_OPERATION_CANCELLED _HRESULT_TYPEDEF_(0x80072ef1)
#define WININET_E_INCORRECT_HANDLE_TYPE _HRESULT_TYPEDEF_(0x80072ef2)
#define WININET_E_INCORRECT_HANDLE_STATE _HRESULT_TYPEDEF_(0x80072ef3)
#define WININET_E_NOT_PROXY_REQUEST _HRESULT_TYPEDEF_(0x80072ef4)
#define WININET_E_REGISTRY_VALUE_NOT_FOUND _HRESULT_TYPEDEF_(0x80072ef5)
#define WININET_E_BAD_REGISTRY_PARAMETER _HRESULT_TYPEDEF_(0x80072ef6)
#define WININET_E_NO_DIRECT_ACCESS _HRESULT_TYPEDEF_(0x80072ef7)
#define WININET_E_NO_CONTEXT _HRESULT_TYPEDEF_(0x80072ef8)
#define WININET_E_NO_CALLBACK _HRESULT_TYPEDEF_(0x80072ef9)
#define WININET_E_REQUEST_PENDING _HRESULT_TYPEDEF_(0x80072efa)
#define WININET_E_INCORRECT_FORMAT _HRESULT_TYPEDEF_(0x80072efb)
#define WININET_E_ITEM_NOT_FOUND _HRESULT_TYPEDEF_(0x80072efc)
#define WININET_E_CANNOT_CONNECT _HRESULT_TYPEDEF_(0x80072efd)
#define WININET_E_CONNECTION_ABORTED _HRESULT_TYPEDEF_(0x80072efe)
#define WININET_E_CONNECTION_RESET _HRESULT_TYPEDEF_(0x80072eff)
#define WININET_E_FORCE_RETRY _HRESULT_TYPEDEF_(0x80072f00)
#define WININET_E_INVALID_PROXY_REQUEST _HRESULT_TYPEDEF_(0x80072f01)
#define WININET_E_NEED_UI _HRESULT_TYPEDEF_(0x80072f02)
#define WININET_E_HANDLE_EXISTS _HRESULT_TYPEDEF_(0x80072f04)
#define WININET_E_SEC_CERT_DATE_INVALID _HRESULT_TYPEDEF_(0x80072f05)
#define WININET_E_SEC_CERT_CN_INVALID _HRESULT_TYPEDEF_(0x80072f06)
#define WININET_E_HTTP_TO_HTTPS_ON_REDIR _HRESULT_TYPEDEF_(0x80072f07)
#define WININET_E_HTTPS_TO_HTTP_ON_REDIR _HRESULT_TYPEDEF_(0x80072f08)
#define WININET_E_MIXED_SECURITY _HRESULT_TYPEDEF_(0x80072f09)
#define WININET_E_CHG_POST_IS_NON_SECURE _HRESULT_TYPEDEF_(0x80072f0a)
#define WININET_E_POST_IS_NON_SECURE _HRESULT_TYPEDEF_(0x80072f0b)
#define WININET_E_CLIENT_AUTH_CERT_NEEDED _HRESULT_TYPEDEF_(0x80072f0c)
#define WININET_E_INVALID_CA _HRESULT_TYPEDEF_(0x80072f0d)
#define WININET_E_CLIENT_AUTH_NOT_SETUP _HRESULT_TYPEDEF_(0x80072f0e)
#define WININET_E_ASYNC_THREAD_FAILED _HRESULT_TYPEDEF_(0x80072f0f)
#define WININET_E_REDIRECT_SCHEME_CHANGE _HRESULT_TYPEDEF_(0x80072f10)
#define WININET_E_DIALOG_PENDING _HRESULT_TYPEDEF_(0x80072f11)
#define WININET_E_RETRY_DIALOG _HRESULT_TYPEDEF_(0x80072f12)
#define WININET_E_NO_NEW_CONTAINERS _HRESULT_TYPEDEF_(0x80072f13)
#define WININET_E_HTTPS_HTTP_SUBMIT_REDIR _HRESULT_TYPEDEF_(0x80072f14)
#define WININET_E_SEC_CERT_ERRORS _HRESULT_TYPEDEF_(0x80072f17)
#define WININET_E_SEC_CERT_REV_FAILED _HRESULT_TYPEDEF_(0x80072f19)
#define WININET_E_HEADER_NOT_FOUND _HRESULT_TYPEDEF_(0x80072f76)
#define WININET_E_DOWNLEVEL_SERVER _HRESULT_TYPEDEF_(0x80072f77)
#define WININET_E_INVALID_SERVER_RESPONSE _HRESULT_TYPEDEF_(0x80072f78)
#define WININET_E_INVALID_HEADER _HRESULT_TYPEDEF_(0x80072f79)
#define WININET_E_INVALID_QUERY_REQUEST _HRESULT_TYPEDEF_(0x80072f7a)
#define WININET_E_HEADER_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x80072f7b)
#define WININET_E_REDIRECT_FAILED _HRESULT_TYPEDEF_(0x80072f7c)
#define WININET_E_SECURITY_CHANNEL_ERROR _HRESULT_TYPEDEF_(0x80072f7d)
#define WININET_E_UNABLE_TO_CACHE_FILE _HRESULT_TYPEDEF_(0x80072f7e)
#define WININET_E_TCPIP_NOT_INSTALLED _HRESULT_TYPEDEF_(0x80072f7f)
#define WININET_E_NOT_REDIRECTED _HRESULT_TYPEDEF_(0x80072f80)
#define WININET_E_COOKIE_NEEDS_CONFIRMATION _HRESULT_TYPEDEF_(0x80072f81)
#define WININET_E_COOKIE_DECLINED _HRESULT_TYPEDEF_(0x80072f82)
#define WININET_E_DISCONNECTED _HRESULT_TYPEDEF_(0x80072f83)
#define WININET_E_SERVER_UNREACHABLE _HRESULT_TYPEDEF_(0x80072f84)
#define WININET_E_PROXY_SERVER_UNREACHABLE _HRESULT_TYPEDEF_(0x80072f85)
#define WININET_E_BAD_AUTO_PROXY_SCRIPT _HRESULT_TYPEDEF_(0x80072f86)
#define WININET_E_UNABLE_TO_DOWNLOAD_SCRIPT _HRESULT_TYPEDEF_(0x80072f87)
#define WININET_E_REDIRECT_NEEDS_CONFIRMATION _HRESULT_TYPEDEF_(0x80072f88)
#define WININET_E_SEC_INVALID_CERT _HRESULT_TYPEDEF_(0x80072f89)
#define WININET_E_SEC_CERT_REVOKED _HRESULT_TYPEDEF_(0x80072f8a)
#define WININET_E_FAILED_DUETOSECURITYCHECK _HRESULT_TYPEDEF_(0x80072f8b)
#define WININET_E_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x80072f8c)
#define WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY _HRESULT_TYPEDEF_(0x80072f8e)
#define WININET_E_DECODING_FAILED _HRESULT_TYPEDEF_(0x80072f8f)
#define D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS _HRESULT_TYPEDEF_(0x887c0001)
#define D3D11_ERROR_FILE_NOT_FOUND _HRESULT_TYPEDEF_(0x887c0002)
#define D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS _HRESULT_TYPEDEF_(0x887c0003)

View File

@ -352,6 +352,10 @@ static const WCHAR LOCALE_NAME_SYSTEM_DEFAULT[] = {'!','s','y','s','-','d','e','
#define NORM_IGNOREKANATYPE 0x00010000
#define NORM_IGNOREWIDTH 0x00020000
#define NORM_LINGUISTIC_CASING 0x08000000
#define FIND_STARTSWITH 0x00100000
#define FIND_ENDSWITH 0x00200000
#define FIND_FROMSTART 0x00400000
#define FIND_FROMEND 0x00800000
#define CP_ACP 0
#define CP_OEMCP 1
@ -822,7 +826,9 @@ enum SYSGEOTYPE
GEO_PARENT,
GEO_DIALINGCODE,
GEO_CURRENCYCODE,
GEO_CURRENCYSYMBOL
GEO_CURRENCYSYMBOL,
GEO_NAME,
GEO_ID
};
enum SYSGEOCLASS
@ -890,6 +896,7 @@ WINBASEAPI INT WINAPI GetCalendarInfoA(LCID,DWORD,DWORD,LPSTR,INT,LPDWOR
WINBASEAPI INT WINAPI GetCalendarInfoW(LCID,DWORD,DWORD,LPWSTR,INT,LPDWORD);
#define GetCalendarInfo WINELIB_NAME_AW(GetCalendarInfo)
WINBASEAPI INT WINAPI GetCurrencyFormatA(LCID,DWORD,LPCSTR,const CURRENCYFMTA*,LPSTR,INT);
WINBASEAPI INT WINAPI GetCurrencyFormatEx(LPCWSTR,DWORD,LPCWSTR,const CURRENCYFMTW*,LPWSTR,int);
WINBASEAPI INT WINAPI GetCurrencyFormatW(LCID,DWORD,LPCWSTR,const CURRENCYFMTW*,LPWSTR,INT);
#define GetCurrencyFormat WINELIB_NAME_AW(GetCurrencyFormat)
WINBASEAPI INT WINAPI GetDateFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,INT);
@ -961,6 +968,7 @@ WINBASEAPI BOOL WINAPI SetThreadLocale(LCID);
WINBASEAPI LANGID WINAPI SetThreadUILanguage(LANGID);
WINBASEAPI BOOL WINAPI SetUserGeoID(GEOID);
WINBASEAPI INT WINAPI WideCharToMultiByte(UINT,DWORD,LPCWSTR,INT,LPSTR,INT,LPCSTR,LPBOOL);
WINBASEAPI INT WINAPI FindNLSStringEx(const WCHAR *,DWORD,const WCHAR *,INT,const WCHAR *,INT,INT *,NLSVERSIONINFO *,void *,LPARAM);
#ifdef __cplusplus
}

View File

@ -759,6 +759,10 @@ typedef struct _MEMORY_BASIC_INFORMATION
#define CONTAINING_RECORD(address, type, field) \
((type *)((PCHAR)(address) - offsetof(type, field)))
#ifdef __WINESRC__
# define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#endif
/* Types */
typedef struct _LIST_ENTRY {
@ -995,7 +999,7 @@ typedef struct _LDT_ENTRY {
unsigned BaseHi : 8;
} Bits;
} HighWord;
} LDT_ENTRY, *PLDT_ENTRY;
} LDT_ENTRY, *PLDT_ENTRY, WOW64_LDT_ENTRY, *PWOW64_LDT_ENTRY;
/* x86-64 context definitions */
#if defined(__x86_64__)
@ -1850,12 +1854,12 @@ typedef struct _CONTEXT
DWORD64 X26; /* 0d8 */
DWORD64 X27; /* 0e0 */
DWORD64 X28; /* 0e8 */
DWORD64 Fp; /* 0f0 */
DWORD64 Lr; /* 0f8 */
} DUMMYSTRUCTNAME;
DWORD64 X[29]; /* 008 */
DWORD64 X[31]; /* 008 */
} DUMMYUNIONNAME;
/* CONTEXT_CONTROL */
DWORD64 Fp; /* 0f0 */
DWORD64 Lr; /* 0f8 */
DWORD64 Sp; /* 100 */
DWORD64 Pc; /* 108 */
/* CONTEXT_FLOATING_POINT */
@ -2112,6 +2116,74 @@ typedef CONTEXT *PCONTEXT;
NTSYSAPI void WINAPI RtlCaptureContext(CONTEXT*);
#define WOW64_CONTEXT_i386 0x00010000
#define WOW64_CONTEXT_i486 0x00010000
#define WOW64_CONTEXT_CONTROL (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000001))
#define WOW64_CONTEXT_INTEGER (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000002))
#define WOW64_CONTEXT_SEGMENTS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000004))
#define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000008))
#define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000010))
#define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000020))
#define WOW64_CONTEXT_FULL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS)
#define WOW64_CONTEXT_ALL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | \
WOW64_CONTEXT_SEGMENTS | WOW64_CONTEXT_FLOATING_POINT | \
WOW64_CONTEXT_DEBUG_REGISTERS | WOW64_CONTEXT_EXTENDED_REGISTERS)
#define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000040))
#define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x08000000
#define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000
#define WOW64_CONTEXT_EXCEPTION_REQUEST 0x40000000
#define WOW64_CONTEXT_EXCEPTION_REPORTING 0x80000000
#define WOW64_SIZE_OF_80387_REGISTERS 80
#define WOW64_MAXIMUM_SUPPORTED_EXTENSION 512
typedef struct _WOW64_FLOATING_SAVE_AREA
{
DWORD ControlWord;
DWORD StatusWord;
DWORD TagWord;
DWORD ErrorOffset;
DWORD ErrorSelector;
DWORD DataOffset;
DWORD DataSelector;
BYTE RegisterArea[WOW64_SIZE_OF_80387_REGISTERS];
DWORD Cr0NpxState;
} WOW64_FLOATING_SAVE_AREA, *PWOW64_FLOATING_SAVE_AREA;
#include "pshpack4.h"
typedef struct _WOW64_CONTEXT
{
DWORD ContextFlags;
DWORD Dr0;
DWORD Dr1;
DWORD Dr2;
DWORD Dr3;
DWORD Dr6;
DWORD Dr7;
WOW64_FLOATING_SAVE_AREA FloatSave;
DWORD SegGs;
DWORD SegFs;
DWORD SegEs;
DWORD SegDs;
DWORD Edi;
DWORD Esi;
DWORD Ebx;
DWORD Edx;
DWORD Ecx;
DWORD Eax;
DWORD Ebp;
DWORD Eip;
DWORD SegCs;
DWORD EFlags;
DWORD Esp;
DWORD SegSs;
BYTE ExtendedRegisters[WOW64_MAXIMUM_SUPPORTED_EXTENSION];
} WOW64_CONTEXT, *PWOW64_CONTEXT;
#include "poppack.h"
/*
* Product types
*/
@ -2424,6 +2496,58 @@ extern struct _TEB * WINAPI NtCurrentTeb(void);
#define TLS_MINIMUM_AVAILABLE 64
#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE (16 * 1024)
#define IO_REPARSE_TAG_RESERVED_ZERO 0
#define IO_REPARSE_TAG_RESERVED_ONE 1
#define IO_REPARSE_TAG_RESERVED_TWO 2
#define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_TWO
#define IO_REPARSE_TAG_MOUNT_POINT __MSABI_LONG(0xA0000003)
#define IO_REPARSE_TAG_HSM __MSABI_LONG(0xC0000004)
#define IO_REPARSE_TAG_DRIVE_EXTENDER __MSABI_LONG(0x80000005)
#define IO_REPARSE_TAG_HSM2 __MSABI_LONG(0x80000006)
#define IO_REPARSE_TAG_SIS __MSABI_LONG(0x80000007)
#define IO_REPARSE_TAG_WIM __MSABI_LONG(0x80000008)
#define IO_REPARSE_TAG_CSV __MSABI_LONG(0x80000009)
#define IO_REPARSE_TAG_DFS __MSABI_LONG(0x8000000A)
#define IO_REPARSE_TAG_FILTER_MANAGER __MSABI_LONG(0x8000000B)
#define IO_REPARSE_TAG_SYMLINK __MSABI_LONG(0xA000000C)
#define IO_REPARSE_TAG_IIS_CACHE __MSABI_LONG(0xA0000010)
#define IO_REPARSE_TAG_DFSR __MSABI_LONG(0x80000012)
#define IO_REPARSE_TAG_DEDUP __MSABI_LONG(0x80000013)
#define IO_REPARSE_TAG_NFS __MSABI_LONG(0x80000014)
#define IO_REPARSE_TAG_FILE_PLACEHOLDER __MSABI_LONG(0x80000015)
#define IO_REPARSE_TAG_WOF __MSABI_LONG(0x80000017)
#define IO_REPARSE_TAG_WCI __MSABI_LONG(0x80000018)
#define IO_REPARSE_TAG_WCI_1 __MSABI_LONG(0x90001018)
#define IO_REPARSE_TAG_GLOBAL_REPARSE __MSABI_LONG(0xA0000019)
#define IO_REPARSE_TAG_CLOUD __MSABI_LONG(0x9000001A)
#define IO_REPARSE_TAG_CLOUD_1 __MSABI_LONG(0x9000101A)
#define IO_REPARSE_TAG_CLOUD_2 __MSABI_LONG(0x9000201A)
#define IO_REPARSE_TAG_CLOUD_3 __MSABI_LONG(0x9000301A)
#define IO_REPARSE_TAG_CLOUD_4 __MSABI_LONG(0x9000401A)
#define IO_REPARSE_TAG_CLOUD_5 __MSABI_LONG(0x9000501A)
#define IO_REPARSE_TAG_CLOUD_6 __MSABI_LONG(0x9000601A)
#define IO_REPARSE_TAG_CLOUD_7 __MSABI_LONG(0x9000701A)
#define IO_REPARSE_TAG_CLOUD_8 __MSABI_LONG(0x9000801A)
#define IO_REPARSE_TAG_CLOUD_9 __MSABI_LONG(0x9000901A)
#define IO_REPARSE_TAG_CLOUD_A __MSABI_LONG(0x9000A01A)
#define IO_REPARSE_TAG_CLOUD_B __MSABI_LONG(0x9000B01A)
#define IO_REPARSE_TAG_CLOUD_C __MSABI_LONG(0x9000C01A)
#define IO_REPARSE_TAG_CLOUD_D __MSABI_LONG(0x9000D01A)
#define IO_REPARSE_TAG_CLOUD_E __MSABI_LONG(0x9000E01A)
#define IO_REPARSE_TAG_CLOUD_F __MSABI_LONG(0x9000F01A)
#define IO_REPARSE_TAG_CLOUD_MASK __MSABI_LONG(0x0000F000)
#define IO_REPARSE_TAG_APPEXECLINK __MSABI_LONG(0x8000001B)
#define IO_REPARSE_TAG_GVFS __MSABI_LONG(0x9000001C)
#define IO_REPARSE_TAG_STORAGE_SYNC __MSABI_LONG(0x8000001E)
#define IO_REPARSE_TAG_WCI_TOMBSTONE __MSABI_LONG(0xA000001F)
#define IO_REPARSE_TAG_UNHANDLED __MSABI_LONG(0x80000020)
#define IO_REPARSE_TAG_ONEDRIVE __MSABI_LONG(0x80000021)
#define IO_REPARSE_TAG_GVFS_TOMBSTONE __MSABI_LONG(0xA0000022)
/*
* File formats definitions
*/
@ -3621,10 +3745,11 @@ typedef enum ReplacesCorHdrNumericDefines
COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,
COMIMAGE_FLAGS_NATIVE_ENTRYPOINT= 0x00000010,
COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,
COMIMAGE_FLAGS_32BITPREFERRED = 0x00020000,
COR_VERSION_MAJOR_V2 = 2,
COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,
COR_VERSION_MINOR = 0,
COR_VERSION_MINOR = 5,
COR_DELETED_NAME_LENGTH = 8,
COR_VTABLEGAP_NAME_LENGTH = 8,
@ -5367,6 +5492,7 @@ typedef struct _TAPE_GET_MEDIA_PARAMETERS {
#define REG_NOTIFY_CHANGE_ATTRIBUTES 0x02
#define REG_NOTIFY_CHANGE_LAST_SET 0x04
#define REG_NOTIFY_CHANGE_SECURITY 0x08
#define REG_NOTIFY_THREAD_AGNOSTIC 0x10000000
#define KEY_QUERY_VALUE 0x00000001
#define KEY_SET_VALUE 0x00000002
@ -5746,15 +5872,50 @@ typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION {
typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION;
typedef enum {
ACTCX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0,
ACTCX_COMPATIBILITY_ELEMENT_TYPE_OS
} ACTCTX_COMPATIBILITY_ELEMENT_TYPE;
typedef struct _COMPATIBILITY_CONTEXT_ELEMENT {
GUID Id;
ACTCTX_COMPATIBILITY_ELEMENT_TYPE Type;
} COMPATIBILITY_CONTEXT_ELEMENT, *PCOMPATIBILITY_CONTEXT_ELEMENT;
#if !defined(__WINESRC__) && (defined(_MSC_EXTENSIONS) || ((defined(__GNUC__) && __GNUC__ >= 3)))
typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION {
DWORD ElementCount;
COMPATIBILITY_CONTEXT_ELEMENT Elements[];
} ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION, *PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION;
#endif
typedef enum {
ACTCTX_RUN_LEVEL_UNSPECIFIED = 0,
ACTCTX_RUN_LEVEL_AS_INVOKER,
ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE,
ACTCTX_RUN_LEVEL_REQUIRE_ADMIN,
ACTCTX_RUN_LEVEL_NUMBERS
} ACTCTX_REQUESTED_RUN_LEVEL;
typedef struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION {
DWORD ulFlags;
ACTCTX_REQUESTED_RUN_LEVEL RunLevel;
DWORD UiAccess;
} ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION, *PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION;
typedef const struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION;
typedef enum _ACTIVATION_CONTEXT_INFO_CLASS {
ActivationContextBasicInformation = 1,
ActivationContextDetailedInformation = 2,
AssemblyDetailedInformationInActivationContext = 3,
FileInformationInAssemblyOfAssemblyInActivationContext = 4,
RunlevelInformationInActivationContext = 5,
CompatibilityInformationInActivationContext = 6,
ActivationContextManifestResourceName = 7,
MaxActivationContextInfoClass,
AssemblyDetailedInformationInActivationContxt = 3,
FileInformationInAssemblyOfAssemblyInActivationContxt = 4
AssemblyDetailedInformationInActivationContxt = AssemblyDetailedInformationInActivationContext,
FileInformationInAssemblyOfAssemblyInActivationContxt = FileInformationInAssemblyOfAssemblyInActivationContext
} ACTIVATION_CONTEXT_INFO_CLASS;
#define ACTIVATION_CONTEXT_PATH_TYPE_NONE 1
@ -5771,6 +5932,8 @@ typedef enum _ACTIVATION_CONTEXT_INFO_CLASS {
#define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION 7
#define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE 8
#define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES 9
#define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS 10
#define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO 11
typedef enum _JOBOBJECTINFOCLASS
{
@ -5891,6 +6054,8 @@ typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP
RelationAll = 0xffff
} LOGICAL_PROCESSOR_RELATIONSHIP;
#define LTP_PC_SMT 0x1
typedef enum _PROCESSOR_CACHE_TYPE
{
CacheUnified,
@ -6087,6 +6252,47 @@ typedef VOID (CALLBACK *PTP_WIN32_IO_CALLBACK)(PTP_CALLBACK_INSTANCE,PVOID,PVOID
NTSYSAPI BOOLEAN NTAPI RtlGetProductInfo(DWORD,DWORD,DWORD,DWORD,PDWORD);
typedef enum _RTL_UMS_THREAD_INFO_CLASS
{
UmsThreadInvalidInfoClass,
UmsThreadUserContext,
UmsThreadPriority,
UmsThreadAffinity,
UmsThreadTeb,
UmsThreadIsSuspended,
UmsThreadIsTerminated,
UmsThreadMaxInfoClass
} RTL_UMS_THREAD_INFO_CLASS, *PRTL_UMS_THREAD_INFO_CLASS;
typedef enum _RTL_UMS_SCHEDULER_REASON
{
UmsSchedulerStartup,
UmsSchedulerThreadBlocked,
UmsSchedulerThreadYield,
} RTL_UMS_SCHEDULER_REASON, *PRTL_UMS_SCHEDULER_REASON;
typedef void (CALLBACK *PRTL_UMS_SCHEDULER_ENTRY_POINT)(RTL_UMS_SCHEDULER_REASON,ULONG_PTR,PVOID);
typedef enum _PROCESS_MITIGATION_POLICY
{
ProcessDEPPolicy,
ProcessASLRPolicy,
ProcessDynamicCodePolicy,
ProcessStrictHandleCheckPolicy,
ProcessSystemCallDisablePolicy,
ProcessMitigationOptionsMask,
ProcessExtensionPointDisablePolicy,
ProcessControlFlowGuardPolicy,
ProcessSignaturePolicy,
ProcessFontDisablePolicy,
ProcessImageLoadPolicy,
ProcessSystemCallFilterPolicy,
ProcessPayloadRestrictionPolicy,
ProcessChildProcessPolicy,
ProcessSideChannelIsolationPolicy,
MaxProcessMitigationPolicy
} PROCESS_MITIGATION_POLICY, *PPROCESS_MITIGATION_POLICY;
#ifdef __cplusplus
}
#endif

View File

@ -91,7 +91,7 @@ static void write_function_stub( const type_t *iface, const var_t *func,
print_client("MIDL_STUB_MESSAGE _StubMsg;\n");
if (handle_var)
{
if (explicit_fc == RPC_FC_BIND_GENERIC)
if (explicit_fc == FC_BIND_GENERIC)
print_client("%s %s;\n",
get_explicit_generic_handle_type(handle_var)->name, handle_var->name );
print_client("RPC_BINDING_HANDLE _Handle;\n");
@ -113,7 +113,7 @@ static void write_function_stub( const type_t *iface, const var_t *func,
print_client("NdrFreeBuffer(&__frame->_StubMsg);\n");
if (explicit_fc == RPC_FC_BIND_GENERIC)
if (explicit_fc == FC_BIND_GENERIC)
{
fprintf(client, "\n");
print_client("if (__frame->_Handle)\n");
@ -144,7 +144,7 @@ static void write_function_stub( const type_t *iface, const var_t *func,
if (handle_var)
{
print_client( "__frame->_Handle = 0;\n" );
if (explicit_fc == RPC_FC_BIND_GENERIC)
if (explicit_fc == FC_BIND_GENERIC)
print_client("__frame->%s = %s;\n", handle_var->name, handle_var->name );
}
if (has_ret && decl_indirect(retval->type))
@ -180,16 +180,16 @@ static void write_function_stub( const type_t *iface, const var_t *func,
switch (explicit_fc)
{
case RPC_FC_BIND_PRIMITIVE:
case FC_BIND_PRIMITIVE:
print_client("__frame->_Handle = %s;\n", handle_var->name);
fprintf(client, "\n");
break;
case RPC_FC_BIND_GENERIC:
case FC_BIND_GENERIC:
print_client("__frame->_Handle = %s_bind(%s);\n",
get_explicit_generic_handle_type(handle_var)->name, handle_var->name);
fprintf(client, "\n");
break;
case RPC_FC_BIND_CONTEXT:
case FC_BIND_CONTEXT:
{
/* if the context_handle attribute appears in the chain of types
* without pointers being followed, then the context handle must

View File

@ -519,11 +519,11 @@ static struct expression_type resolve_expression(const struct expr_loc *expr_loc
break;
case EXPR_STRLIT:
result.is_temporary = TRUE;
result.type = type_new_pointer(RPC_FC_UP, type_new_int(TYPE_BASIC_CHAR, 0), NULL);
result.type = type_new_pointer(FC_UP, type_new_int(TYPE_BASIC_CHAR, 0), NULL);
break;
case EXPR_WSTRLIT:
result.is_temporary = TRUE;
result.type = type_new_pointer(RPC_FC_UP, type_new_int(TYPE_BASIC_WCHAR, 0), NULL);
result.type = type_new_pointer(FC_UP, type_new_int(TYPE_BASIC_WCHAR, 0), NULL);
break;
case EXPR_CHARCONST:
result.is_temporary = TRUE;
@ -573,7 +573,7 @@ static struct expression_type resolve_expression(const struct expr_loc *expr_loc
expr_loc->attr ? expr_loc->attr : "");
result.is_variable = FALSE;
result.is_temporary = TRUE;
result.type = type_new_pointer(RPC_FC_UP, result.type, NULL);
result.type = type_new_pointer(FC_UP, result.type, NULL);
break;
case EXPR_PPTR:
result = resolve_expression(expr_loc, cont_type, e->ref);

View File

@ -805,17 +805,17 @@ const var_t *get_func_handle_var( const type_t *iface, const var_t *func,
if (!is_attr( var->attrs, ATTR_IN ) && is_attr( var->attrs, ATTR_OUT )) continue;
if (type_get_type( var->type ) == TYPE_BASIC && type_basic_get_type( var->type ) == TYPE_BASIC_HANDLE)
{
*explicit_fc = RPC_FC_BIND_PRIMITIVE;
*explicit_fc = FC_BIND_PRIMITIVE;
return var;
}
if (get_explicit_generic_handle_type( var ))
{
*explicit_fc = RPC_FC_BIND_GENERIC;
*explicit_fc = FC_BIND_GENERIC;
return var;
}
if (is_context_handle( var->type ))
{
*explicit_fc = RPC_FC_BIND_CONTEXT;
*explicit_fc = FC_BIND_CONTEXT;
return var;
}
}
@ -824,13 +824,13 @@ const var_t *get_func_handle_var( const type_t *iface, const var_t *func,
{
if (type_get_type( var->type ) == TYPE_BASIC &&
type_basic_get_type( var->type ) == TYPE_BASIC_HANDLE)
*implicit_fc = RPC_FC_BIND_PRIMITIVE;
*implicit_fc = FC_BIND_PRIMITIVE;
else
*implicit_fc = RPC_FC_BIND_GENERIC;
*implicit_fc = FC_BIND_GENERIC;
return var;
}
*implicit_fc = RPC_FC_AUTO_HANDLE;
*implicit_fc = FC_AUTO_HANDLE;
return NULL;
}

View File

@ -111,7 +111,7 @@
#include "expr.h"
#include "typetree.h"
static unsigned char pointer_default = RPC_FC_UP;
static unsigned char pointer_default = FC_UP;
typedef struct list typelist_t;
struct typenode {
@ -4853,19 +4853,19 @@ yyreduce:
case 375:
#line 1110 "parser.y" /* yacc.c:1646 */
{ (yyval.num) = RPC_FC_RP; }
{ (yyval.num) = FC_RP; }
#line 4858 "parser.tab.c" /* yacc.c:1646 */
break;
case 376:
#line 1111 "parser.y" /* yacc.c:1646 */
{ (yyval.num) = RPC_FC_UP; }
{ (yyval.num) = FC_UP; }
#line 4864 "parser.tab.c" /* yacc.c:1646 */
break;
case 377:
#line 1112 "parser.y" /* yacc.c:1646 */
{ (yyval.num) = RPC_FC_FP; }
{ (yyval.num) = FC_FP; }
#line 4870 "parser.tab.c" /* yacc.c:1646 */
break;
@ -5558,12 +5558,12 @@ static var_t *declare_var(attr_list_t *attrs, decl_spec_t *decl_spec, const decl
}
if (is_ptr(ptr))
{
if (ptr_attr && ptr_attr != RPC_FC_UP &&
if (ptr_attr && ptr_attr != FC_UP &&
type_get_type(type_pointer_get_ref(ptr)) == TYPE_INTERFACE)
warning_loc_info(&v->loc_info,
"%s: pointer attribute applied to interface "
"pointer type has no effect\n", v->name);
if (!ptr_attr && top && (*pt)->details.pointer.def_fc != RPC_FC_RP)
if (!ptr_attr && top && (*pt)->details.pointer.def_fc != FC_RP)
{
/* FIXME: this is a horrible hack to cope with the issue that we
* store an offset to the typeformat string in the type object, but
@ -5588,9 +5588,9 @@ static var_t *declare_var(attr_list_t *attrs, decl_spec_t *decl_spec, const decl
t = type_pointer_get_ref(t);
if (type_get_type(t) != TYPE_BASIC &&
(get_basic_fc(t) != RPC_FC_CHAR &&
get_basic_fc(t) != RPC_FC_BYTE &&
get_basic_fc(t) != RPC_FC_WCHAR))
(get_basic_fc(t) != FC_CHAR &&
get_basic_fc(t) != FC_BYTE &&
get_basic_fc(t) != FC_WCHAR))
{
error_loc("'%s': [string] attribute is only valid on 'char', 'byte', or 'wchar_t' pointers and arrays\n",
v->name);
@ -5821,7 +5821,7 @@ static declarator_t *make_declarator(var_t *var)
static type_t *make_safearray(type_t *type)
{
return type_new_array(NULL, type_new_alias(type, "SAFEARRAY"), TRUE, 0,
NULL, NULL, RPC_FC_RP);
NULL, NULL, FC_RP);
}
static typelib_t *make_library(const char *name, const attr_list_t *attrs)

View File

@ -38,7 +38,7 @@
#include "expr.h"
#include "typetree.h"
static unsigned char pointer_default = RPC_FC_UP;
static unsigned char pointer_default = FC_UP;
typedef struct list typelist_t;
struct typenode {
@ -1107,9 +1107,9 @@ threading_type:
;
pointer_type:
tREF { $$ = RPC_FC_RP; }
| tUNIQUE { $$ = RPC_FC_UP; }
| tPTR { $$ = RPC_FC_FP; }
tREF { $$ = FC_RP; }
| tUNIQUE { $$ = FC_UP; }
| tPTR { $$ = FC_FP; }
;
structdef: tSTRUCT t_ident '{' fields '}' { $$ = type_new_struct($2, current_namespace, TRUE, $4); }
@ -1501,12 +1501,12 @@ static var_t *declare_var(attr_list_t *attrs, decl_spec_t *decl_spec, const decl
}
if (is_ptr(ptr))
{
if (ptr_attr && ptr_attr != RPC_FC_UP &&
if (ptr_attr && ptr_attr != FC_UP &&
type_get_type(type_pointer_get_ref(ptr)) == TYPE_INTERFACE)
warning_loc_info(&v->loc_info,
"%s: pointer attribute applied to interface "
"pointer type has no effect\n", v->name);
if (!ptr_attr && top && (*pt)->details.pointer.def_fc != RPC_FC_RP)
if (!ptr_attr && top && (*pt)->details.pointer.def_fc != FC_RP)
{
/* FIXME: this is a horrible hack to cope with the issue that we
* store an offset to the typeformat string in the type object, but
@ -1531,9 +1531,9 @@ static var_t *declare_var(attr_list_t *attrs, decl_spec_t *decl_spec, const decl
t = type_pointer_get_ref(t);
if (type_get_type(t) != TYPE_BASIC &&
(get_basic_fc(t) != RPC_FC_CHAR &&
get_basic_fc(t) != RPC_FC_BYTE &&
get_basic_fc(t) != RPC_FC_WCHAR))
(get_basic_fc(t) != FC_CHAR &&
get_basic_fc(t) != FC_BYTE &&
get_basic_fc(t) != FC_WCHAR))
{
error_loc("'%s': [string] attribute is only valid on 'char', 'byte', or 'wchar_t' pointers and arrays\n",
v->name);
@ -1764,7 +1764,7 @@ static declarator_t *make_declarator(var_t *var)
static type_t *make_safearray(type_t *type)
{
return type_new_array(NULL, type_new_alias(type, "SAFEARRAY"), TRUE, 0,
NULL, NULL, RPC_FC_RP);
NULL, NULL, FC_RP);
}
static typelib_t *make_library(const char *name, const attr_list_t *attrs)

View File

@ -152,7 +152,7 @@ static void free_variable( const var_t *arg, const char *local_var_prefix )
break;
case TGT_STRUCT:
if (get_struct_fc(type) != RPC_FC_STRUCT)
if (get_struct_fc(type) != FC_STRUCT)
print_proxy("/* FIXME: %s code for %s struct type 0x%x missing */\n", __FUNCTION__, arg->name, get_struct_fc(type) );
break;

View File

@ -104,7 +104,7 @@ static void write_function_stub(const type_t *iface, const var_t *func, unsigned
write_parameters_init(server, indent, func, "__frame->");
if (explicit_fc == RPC_FC_BIND_PRIMITIVE)
if (explicit_fc == FC_BIND_PRIMITIVE)
{
print_server("__frame->%s = _pRpcMessage->Handle;\n", handle_var->name);
fprintf(server, "\n");

File diff suppressed because it is too large Load Diff

View File

@ -100,3 +100,4 @@ unsigned char get_basic_fc(const type_t *type);
unsigned char get_pointer_fc(const type_t *type, const attr_list_t *attrs, int toplevel_param);
unsigned char get_struct_fc(const type_t *type);
enum typegen_type typegen_detect_type(const type_t *type, const attr_list_t *attrs, unsigned int flags);
unsigned int type_memsize_and_alignment(const type_t *t, unsigned int *align);

View File

@ -442,6 +442,7 @@ void type_interface_define(type_t *iface, type_t *inherit, statement_list_t *stm
iface->details.iface->disp_methods = NULL;
iface->details.iface->stmts = stmts;
iface->details.iface->inherit = inherit;
iface->details.iface->disp_inherit = NULL;
iface->defined = TRUE;
compute_method_indexes(iface);
}
@ -454,14 +455,22 @@ void type_dispinterface_define(type_t *iface, var_list_t *props, var_list_t *met
iface->details.iface->stmts = NULL;
iface->details.iface->inherit = find_type("IDispatch", NULL, 0);
if (!iface->details.iface->inherit) error_loc("IDispatch is undefined\n");
iface->details.iface->disp_inherit = NULL;
iface->defined = TRUE;
compute_method_indexes(iface);
}
void type_dispinterface_define_from_iface(type_t *dispiface, type_t *iface)
{
type_dispinterface_define(dispiface, iface->details.iface->disp_props,
iface->details.iface->disp_methods);
dispiface->details.iface = xmalloc(sizeof(*dispiface->details.iface));
dispiface->details.iface->disp_props = NULL;
dispiface->details.iface->disp_methods = NULL;
dispiface->details.iface->stmts = NULL;
dispiface->details.iface->inherit = find_type("IDispatch", NULL, 0);
if (!dispiface->details.iface->inherit) error_loc("IDispatch is undefined\n");
dispiface->details.iface->disp_inherit = iface;
dispiface->defined = TRUE;
compute_method_indexes(dispiface);
}
void type_module_define(type_t *module, statement_list_t *stmts)

View File

@ -176,6 +176,13 @@ static inline var_list_t *type_dispiface_get_methods(const type_t *type)
return type->details.iface->disp_methods;
}
static inline type_t *type_dispiface_get_inherit(const type_t *type)
{
type = type_get_real_type(type);
assert(type_get_type(type) == TYPE_INTERFACE);
return type->details.iface->disp_inherit;
}
static inline int type_is_defined(const type_t *type)
{
return type->defined;

View File

@ -24,7 +24,7 @@
#include <stdarg.h>
#include <assert.h>
#include "guiddef.h"
#include "wine/rpcfc.h"
#include "ndrtypes.h"
#include "wine/list.h"
#ifndef UUID_DEFINED
@ -343,6 +343,7 @@ struct iface_details
var_list_t *disp_methods;
var_list_t *disp_props;
struct _type_t *inherit;
struct _type_t *disp_inherit;
};
struct module_details

View File

@ -52,6 +52,7 @@
#include "hash.h"
#include "typetree.h"
#include "parser.h"
#include "typegen.h"
enum MSFT_segment_index {
MSFT_SEG_TYPEINFO = 0, /* type information */
@ -780,8 +781,6 @@ static int encode_type(
int vt, /* [I] vt to encode */
type_t *type, /* [I] type */
int *encoded_type, /* [O] The encoded type description. */
int *width, /* [O] The width of the type, or NULL. */
int *alignment, /* [O] The alignment of the type, or NULL. */
int *decoded_size) /* [O] The total size of the unencoded TYPEDESCs, including nested descs. */
{
int default_type;
@ -794,8 +793,6 @@ static int encode_type(
chat("encode_type vt %d type %p\n", vt, type);
default_type = 0x80000000 | (vt << 16) | vt;
if (!width) width = &scratch;
if (!alignment) alignment = &scratch;
if (!decoded_size) decoded_size = &scratch;
*decoded_size = 0;
@ -804,38 +801,20 @@ static int encode_type(
case VT_I1:
case VT_UI1:
*encoded_type = default_type;
*width = 1;
*alignment = 1;
break;
case VT_INT:
*encoded_type = 0x80000000 | (VT_I4 << 16) | VT_INT;
if ((typelib->typelib_header.varflags & 0x0f) == SYS_WIN16) {
*width = 2;
*alignment = 2;
} else {
*width = 4;
*alignment = 4;
}
break;
case VT_UINT:
*encoded_type = 0x80000000 | (VT_UI4 << 16) | VT_UINT;
if ((typelib->typelib_header.varflags & 0x0f) == SYS_WIN16) {
*width = 2;
*alignment = 2;
} else {
*width = 4;
*alignment = 4;
}
break;
case VT_UI2:
case VT_I2:
case VT_BOOL:
*encoded_type = default_type;
*width = 2;
*alignment = 2;
break;
case VT_I4:
@ -844,56 +823,40 @@ static int encode_type(
case VT_ERROR:
case VT_HRESULT:
*encoded_type = default_type;
*width = 4;
*alignment = 4;
break;
case VT_R8:
case VT_I8:
case VT_UI8:
*encoded_type = default_type;
*width = 8;
*alignment = 8;
break;
case VT_CY:
case VT_DATE:
*encoded_type = default_type;
*width = 8;
*alignment = 8;
break;
case VT_DECIMAL:
*encoded_type = default_type;
*width = 16;
*alignment = 8;
break;
case VT_VOID:
*encoded_type = 0x80000000 | (VT_EMPTY << 16) | vt;
*width = 0;
*alignment = 1;
break;
case VT_UNKNOWN:
case VT_DISPATCH:
case VT_BSTR:
*encoded_type = default_type;
*width = pointer_size;
*alignment = 4;
break;
case VT_VARIANT:
*encoded_type = default_type;
*width = 8 + 2 * pointer_size;
*alignment = 8;
break;
case VT_LPSTR:
case VT_LPWSTR:
*encoded_type = 0xfffe0000 | vt;
*width = pointer_size;
*alignment = 4;
break;
case VT_PTR:
@ -909,14 +872,12 @@ static int encode_type(
next_vt = VT_VOID;
encode_type(typelib, next_vt, type_pointer_get_ref(type),
&target_type, NULL, NULL, &child_size);
&target_type, &child_size);
/* these types already have an implicit pointer, so we don't need to
* add another */
if(next_vt == VT_DISPATCH || next_vt == VT_UNKNOWN) {
chat("encode_type: skipping ptr\n");
*encoded_type = target_type;
*width = pointer_size;
*alignment = 4;
*decoded_size = child_size;
break;
}
@ -945,8 +906,6 @@ static int encode_type(
*encoded_type = typeoffset;
*width = pointer_size;
*alignment = 4;
*decoded_size = 8 /*sizeof(TYPEDESC)*/ + child_size;
break;
}
@ -956,7 +915,8 @@ static int encode_type(
type_t *element_type = type_alias_get_aliasee(type_array_get_element(type));
int next_vt = get_type_vt(element_type);
encode_type(typelib, next_vt, type_alias_get_aliasee(type_array_get_element(type)), &target_type, NULL, NULL, &child_size);
encode_type(typelib, next_vt, type_alias_get_aliasee(type_array_get_element(type)),
&target_type, &child_size);
for (typeoffset = 0; typeoffset < typelib->typelib_segdir[MSFT_SEG_TYPEDESC].length; typeoffset += 8) {
typedata = (void *)&typelib->typelib_segment_data[MSFT_SEG_TYPEDESC][typeoffset];
@ -982,26 +942,39 @@ static int encode_type(
*encoded_type = typeoffset;
*width = pointer_size;
*alignment = 4;
*decoded_size = 8 /*sizeof(TYPEDESC)*/ + child_size;
break;
}
case VT_USERDEFINED:
{
importinfo_t *importinfo;
int typeinfo_offset;
/* typedef'd types without public attribute aren't included in the typelib */
while (type->typelib_idx < 0 && type_is_alias(type) && !is_attr(type->attrs, ATTR_PUBLIC))
type = type_alias_get_aliasee(type);
if (type->typelib_idx > -1)
{
chat("encode_type: VT_USERDEFINED - found already defined type %s at %d\n",
type->name, type->typelib_idx);
typeinfo_offset = typelib->typelib_typeinfo_offsets[type->typelib_idx];
}
else if ((importinfo = find_importinfo(typelib, type->name)))
{
chat("encode_type: VT_USERDEFINED - found imported type %s in %s\n",
type->name, importinfo->importlib->name);
alloc_importinfo(typelib, importinfo);
typeinfo_offset = importinfo->offset | 0x1;
}
else
{
/* typedef'd types without public attribute aren't included in the typelib */
while (type_is_alias(type) && !is_attr(type->attrs, ATTR_PUBLIC))
type = type_alias_get_aliasee(type);
chat("encode_type: VT_USERDEFINED - type %p name = %s real type %d idx %d\n", type,
type->name, type_get_type(type), type->typelib_idx);
chat("encode_type: VT_USERDEFINED - adding new type %s, real type %d\n",
type->name, type_get_type(type));
if(type->typelib_idx == -1) {
chat("encode_type: trying to ref not added type\n");
switch (type_get_type(type)) {
switch (type_get_type(type))
{
case TYPE_STRUCT:
add_structure_typeinfo(typelib, type);
break;
@ -1021,9 +994,9 @@ static int encode_type(
error("encode_type: VT_USERDEFINED - unhandled type %d\n",
type_get_type(type));
}
}
typeinfo_offset = typelib->typelib_typeinfo_offsets[type->typelib_idx];
typeinfo_offset = typelib->typelib_typeinfo_offsets[type->typelib_idx];
}
for (typeoffset = 0; typeoffset < typelib->typelib_segdir[MSFT_SEG_TYPEDESC].length; typeoffset += 8) {
typedata = (void *)&typelib->typelib_segment_data[MSFT_SEG_TYPEDESC][typeoffset];
if ((typedata[0] == ((0x7fff << 16) | VT_USERDEFINED)) && (typedata[1] == typeinfo_offset)) break;
@ -1038,16 +1011,12 @@ static int encode_type(
}
*encoded_type = typeoffset;
*width = 0;
*alignment = 1;
break;
}
default:
error("encode_type: unrecognized type %d.\n", vt);
*encoded_type = default_type;
*width = 0;
*alignment = 1;
break;
}
@ -1064,8 +1033,6 @@ static int encode_var(
type_t *type, /* [I] The type description to encode. */
var_t *var, /* [I] The var to encode. */
int *encoded_type, /* [O] The encoded type description. */
int *width, /* [O] The width of the type, or NULL. */
int *alignment, /* [O] The alignment of the type, or NULL. */
int *decoded_size) /* [O] The total size of the unencoded TYPEDESCs, including nested descs. */
{
int typeoffset;
@ -1075,8 +1042,6 @@ static int encode_var(
int vt;
int scratch;
if (!width) width = &scratch;
if (!alignment) alignment = &scratch;
if (!decoded_size) decoded_size = &scratch;
*decoded_size = 0;
@ -1095,7 +1060,7 @@ static int encode_var(
++num_dims;
chat("array with %d dimensions\n", num_dims);
encode_var(typelib, atype, var, &target_type, width, alignment, NULL);
encode_var(typelib, atype, var, &target_type, NULL);
arrayoffset = ctl2_alloc_segment(typelib, MSFT_SEG_ARRAYDESC, (2 + 2 * num_dims) * sizeof(int), 0);
arraydata = (void *)&typelib->typelib_segment_data[MSFT_SEG_ARRAYDESC][arrayoffset];
@ -1121,7 +1086,6 @@ static int encode_var(
typedata[1] = arrayoffset;
*encoded_type = typeoffset;
*width = *width * elements;
*decoded_size = 20 /*sizeof(ARRAYDESC)*/ + (num_dims - 1) * 8 /*sizeof(SAFEARRAYBOUND)*/;
return 0;
}
@ -1130,15 +1094,12 @@ static int encode_var(
if (vt == VT_PTR) {
type_t *ref = is_ptr(type) ?
type_pointer_get_ref(type) : type_array_get_element(type);
int skip_ptr = encode_var(typelib, ref, var,
&target_type, NULL, NULL, &child_size);
int skip_ptr = encode_var(typelib, ref, var, &target_type, &child_size);
if(skip_ptr == 2) {
chat("encode_var: skipping ptr\n");
*encoded_type = target_type;
*decoded_size = child_size;
*width = pointer_size;
*alignment = 4;
return 0;
}
@ -1169,15 +1130,13 @@ static int encode_var(
*encoded_type = typeoffset;
*width = pointer_size;
*alignment = 4;
*decoded_size = 8 /*sizeof(TYPEDESC)*/ + child_size;
return 0;
}
dump_type(type);
encode_type(typelib, vt, type, encoded_type, width, alignment, decoded_size);
encode_type(typelib, vt, type, encoded_type, decoded_size);
/* these types already have an implicit pointer, so we don't need to
* add another */
if(vt == VT_DISPATCH || vt == VT_UNKNOWN) return 2;
@ -1199,59 +1158,79 @@ static unsigned int get_ulong_val(unsigned int val, int vt)
return val;
}
static void write_value(msft_typelib_t* typelib, int *out, int vt, const void *value)
static void write_int_value(msft_typelib_t *typelib, int *out, int vt, int value)
{
switch(vt) {
case VT_I2:
case VT_I4:
case VT_R4:
case VT_BOOL:
case VT_I1:
case VT_UI1:
case VT_UI2:
case VT_UI4:
case VT_INT:
case VT_UINT:
case VT_HRESULT:
case VT_PTR:
case VT_UNKNOWN:
case VT_DISPATCH:
{
const unsigned int lv = get_ulong_val(*(const unsigned int *)value, vt);
if((lv & 0x3ffffff) == lv) {
*out = 0x80000000;
*out |= vt << 26;
*out |= lv;
} else {
int offset = ctl2_alloc_segment(typelib, MSFT_SEG_CUSTDATA, 8, 0);
*((unsigned short *)&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset]) = vt;
memcpy(&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset+2], value, 4);
*((unsigned short *)&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset+6]) = 0x5757;
*out = offset;
}
return;
}
case VT_BSTR:
{
const char *s = (const char *) value;
int len = strlen(s), seg_len = (len + 6 + 3) & ~0x3;
int offset = ctl2_alloc_segment(typelib, MSFT_SEG_CUSTDATA, seg_len, 0);
const unsigned int lv = get_ulong_val(value, vt);
if ((lv & 0x3ffffff) == lv) {
*out = 0x80000000;
*out |= vt << 26;
*out |= lv;
} else {
int offset = ctl2_alloc_segment(typelib, MSFT_SEG_CUSTDATA, 8, 0);
*((unsigned short *)&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset]) = vt;
memcpy(&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset+2], &len, sizeof(len));
memcpy(&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset+6], value, len);
len += 6;
while(len < seg_len) {
*((char *)&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset+len]) = 0x57;
len++;
}
memcpy(&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset+2], &value, 4);
*((unsigned short *)&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset+6]) = 0x5757;
*out = offset;
return;
}
default:
warning("can't write value of type %d yet\n", vt);
}
return;
}
static void write_string_value(msft_typelib_t *typelib, int *out, const char *value)
{
int len = strlen(value), seg_len = (len + 6 + 3) & ~0x3;
int offset = ctl2_alloc_segment(typelib, MSFT_SEG_CUSTDATA, seg_len, 0);
*((unsigned short *)&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset]) = VT_BSTR;
memcpy(&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset+2], &len, sizeof(len));
memcpy(&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset+6], value, len);
len += 6;
while(len < seg_len) {
*((char *)&typelib->typelib_segment_data[MSFT_SEG_CUSTDATA][offset+len]) = 0x57;
len++;
}
*out = offset;
}
static void write_default_value(msft_typelib_t *typelib, type_t *type, expr_t *expr, int *out)
{
int vt;
if (expr->type == EXPR_STRLIT || expr->type == EXPR_WSTRLIT) {
if (get_type_vt(type) != VT_BSTR)
error("string default value applied to non-string type\n");
chat("default value '%s'\n", expr->u.sval);
write_string_value(typelib, out, expr->u.sval);
return;
}
if (type_get_type(type) == TYPE_ENUM) {
vt = VT_I4;
} else if (is_ptr(type)) {
vt = get_type_vt(type_pointer_get_ref(type));
if (vt == VT_USERDEFINED)
vt = VT_I4;
if (expr->cval)
warning("non-null pointer default value\n");
} else {
vt = get_type_vt(type);
switch(vt) {
case VT_I2:
case VT_I4:
case VT_R4:
case VT_BOOL:
case VT_I1:
case VT_UI1:
case VT_UI2:
case VT_UI4:
case VT_INT:
case VT_UINT:
case VT_HRESULT:
break;
default:
warning("can't write value of type %d yet\n", vt);
return;
}
}
write_int_value(typelib, out, vt, expr->cval);
}
static HRESULT set_custdata(msft_typelib_t *typelib, REFGUID guid,
@ -1269,7 +1248,10 @@ static HRESULT set_custdata(msft_typelib_t *typelib, REFGUID guid,
guidentry.next_hash = -1;
guidoffset = ctl2_alloc_guid(typelib, &guidentry);
write_value(typelib, &data_out, vt, value);
if(vt == VT_BSTR)
write_string_value(typelib, &data_out, value);
else
write_int_value(typelib, &data_out, vt, *(int*)value);
custoffset = ctl2_alloc_segment(typelib, MSFT_SEG_CUSTDATAGUID, 12, 0);
@ -1282,33 +1264,6 @@ static HRESULT set_custdata(msft_typelib_t *typelib, REFGUID guid,
return S_OK;
}
/* It's possible to have a default value for pointer arguments too.
In this case default value has a referenced type, e.g.
'LONG*' argument gets VT_I4, 'DOUBLE*' - VT_R8. IUnknown* and IDispatch*
are recognised too and stored as VT_UNKNOWN and VT_DISPATCH.
But IUnknown/IDispatch arguments can only have default value of 0
(or expression that resolves to zero) while other pointers can have
any default value. */
static int get_defaultvalue_vt(type_t *type)
{
int vt;
if (type_get_type(type) == TYPE_ENUM)
vt = VT_I4;
else
{
vt = get_type_vt(type);
if (vt == VT_PTR && is_ptr(type)) {
vt = get_type_vt(type_pointer_get_ref(type));
/* The only acceptable value for pointers to non-basic types
is NULL, it's stored as VT_I4 for both 32 and 64 bit typelibs. */
if (vt == VT_USERDEFINED)
vt = VT_I4;
}
}
return vt;
}
static HRESULT add_func_desc(msft_typeinfo_t* typeinfo, var_t *func, int index)
{
int offset, name_offset;
@ -1489,7 +1444,8 @@ static HRESULT add_func_desc(msft_typeinfo_t* typeinfo, var_t *func, int index)
/* fill out the basic type information */
typedata[0] = typedata_size | (index << 16);
encode_var(typeinfo->typelib, type_function_get_rettype(func->type), func, &typedata[1], NULL, NULL, &decoded_size);
encode_var(typeinfo->typelib, type_function_get_rettype(func->type), func,
&typedata[1], &decoded_size);
typedata[2] = funcflags;
typedata[3] = ((52 /*sizeof(FUNCDESC)*/ + decoded_size) << 16) | typeinfo->typeinfo->cbSizeVft;
typedata[4] = (next_idx << 16) | (callconv << 8) | (invokekind << 3) | funckind;
@ -1526,26 +1482,13 @@ static HRESULT add_func_desc(msft_typeinfo_t* typeinfo, var_t *func, int index)
if(defaultdata) *defaultdata = -1;
encode_var(typeinfo->typelib, arg->type, arg, paramdata, NULL, NULL, &decoded_size);
encode_var(typeinfo->typelib, arg->type, arg, paramdata, &decoded_size);
if (arg->attrs) LIST_FOR_EACH_ENTRY( attr, arg->attrs, const attr_t, entry ) {
switch(attr->type) {
case ATTR_DEFAULTVALUE:
{
int vt;
expr_t *expr = (expr_t *)attr->u.pval;
vt = get_defaultvalue_vt(arg->type);
paramflags |= 0x30; /* PARAMFLAG_FHASDEFAULT | PARAMFLAG_FOPT */
if (expr->type == EXPR_STRLIT || expr->type == EXPR_WSTRLIT)
{
if (vt != VT_BSTR) error("string default value applied to non-string type\n");
chat("default value '%s'\n", expr->u.sval);
write_value(typeinfo->typelib, defaultdata, vt, expr->u.sval);
}
else
{
chat("default value %d\n", expr->cval);
write_value(typeinfo->typelib, defaultdata, vt, &expr->cval);
}
write_default_value(typeinfo->typelib, arg->type, (expr_t *)attr->u.pval, defaultdata);
break;
}
case ATTR_IN:
@ -1652,8 +1595,7 @@ static HRESULT add_var_desc(msft_typeinfo_t *typeinfo, UINT index, var_t* var)
int offset, id;
unsigned int typedata_size;
INT *typedata;
int var_datawidth;
int var_alignment;
unsigned int var_datawidth, var_alignment = 0;
int var_type_size, var_kind = 0 /* VAR_PERINSTANCE */;
int alignment;
int varflags = 0;
@ -1755,8 +1697,8 @@ static HRESULT add_var_desc(msft_typeinfo_t *typeinfo, UINT index, var_t* var)
typeinfo->var_offsets[var_num] = offset;
/* figure out type widths and whatnot */
encode_var(typeinfo->typelib, var->type, var, &typedata[1], &var_datawidth,
&var_alignment, &var_type_size);
var_datawidth = type_memsize_and_alignment(var->type, &var_alignment);
encode_var(typeinfo->typelib, var->type, var, &typedata[1], &var_type_size);
/* pad out starting position to data width */
typeinfo->datawidth += var_alignment - 1;
@ -1764,7 +1706,7 @@ static HRESULT add_var_desc(msft_typeinfo_t *typeinfo, UINT index, var_t* var)
switch(typeinfo->typekind) {
case TKIND_ENUM:
write_value(typeinfo->typelib, &typedata[4], VT_I4, &var->eval->cval);
write_int_value(typeinfo->typelib, &typedata[4], VT_I4, var->eval->cval);
var_kind = 2; /* VAR_CONST */
var_type_size += 16; /* sizeof(VARIANT) */
typeinfo->datawidth = var_datawidth;
@ -1780,7 +1722,6 @@ static HRESULT add_var_desc(msft_typeinfo_t *typeinfo, UINT index, var_t* var)
case TKIND_DISPATCH:
var_kind = 3; /* VAR_DISPATCH */
typeinfo->datawidth = pointer_size;
var_alignment = 4;
break;
default:
error("add_var_desc: unhandled type kind %d\n", typeinfo->typekind);
@ -2027,11 +1968,29 @@ static void add_dispatch(msft_typelib_t *typelib)
static void add_dispinterface_typeinfo(msft_typelib_t *typelib, type_t *dispinterface)
{
int num_parents = 0, num_funcs = 0;
importinfo_t *importinfo = NULL;
const statement_t *stmt_func;
type_t *inherit, *ref;
int idx = 0;
var_t *func;
var_t *var;
msft_typeinfo_t *msft_typeinfo;
if (-1 < dispinterface->typelib_idx)
return;
inherit = type_dispiface_get_inherit(dispinterface);
if (inherit)
{
importinfo = find_importinfo(typelib, inherit->name);
if (!importinfo && type_iface_get_inherit(inherit) && inherit->typelib_idx == -1)
add_interface_typeinfo(typelib, inherit);
}
/* check typelib_idx again, it could have been added while resolving the parent interface */
if (-1 < dispinterface->typelib_idx)
return;
@ -2040,11 +1999,31 @@ static void add_dispinterface_typeinfo(msft_typelib_t *typelib, type_t *dispinte
dispinterface->attrs);
msft_typeinfo->typeinfo->size = pointer_size;
msft_typeinfo->typeinfo->typekind |= 0x2100;
msft_typeinfo->typeinfo->typekind |= pointer_size << 11 | pointer_size << 6;
msft_typeinfo->typeinfo->flags |= 0x1000; /* TYPEFLAG_FDISPATCHABLE */
add_dispatch(typelib);
msft_typeinfo->typeinfo->cImplTypes = 1;
if (inherit)
{
add_impl_type(msft_typeinfo, inherit, importinfo);
msft_typeinfo->typeinfo->typekind |= 0x10;
}
/* count the number of inherited interfaces and non-local functions */
for (ref = inherit; ref; ref = type_iface_get_inherit(ref))
{
num_parents++;
STATEMENTS_FOR_EACH_FUNC( stmt_func, type_iface_get_stmts(ref) )
{
var_t *func = stmt_func->u.var;
if (!is_local(func->attrs)) num_funcs++;
}
}
msft_typeinfo->typeinfo->datatype2 = num_funcs << 16 | num_parents;
msft_typeinfo->typeinfo->cbSizeVft = num_funcs * pointer_size;
msft_typeinfo->typeinfo->cImplTypes = 1; /* IDispatch */
/* count the no of methods, as the variable indices come after the funcs */
if (dispinterface->details.iface->disp_methods)
@ -2109,16 +2088,13 @@ static void add_interface_typeinfo(msft_typelib_t *typelib, type_t *interface)
interface->typelib_idx = typelib->typelib_header.nrtypeinfos;
msft_typeinfo = create_msft_typeinfo(typelib, TKIND_INTERFACE, interface->name, interface->attrs);
msft_typeinfo->typeinfo->size = pointer_size;
msft_typeinfo->typeinfo->typekind |= 0x2200;
msft_typeinfo->typeinfo->typekind |= 0x0200;
msft_typeinfo->typeinfo->typekind |= pointer_size << 11;
for (derived = inherit; derived; derived = type_iface_get_inherit(derived))
if (derived->name && !strcmp(derived->name, "IDispatch"))
msft_typeinfo->typeinfo->flags |= 0x1000; /* TYPEFLAG_FDISPATCHABLE */
/* can't be dual if it doesn't derive from IDispatch */
if (!(msft_typeinfo->typeinfo->flags & 0x1000)) /* TYPEFLAG_FDISPATCHABLE */
msft_typeinfo->typeinfo->flags &= ~0x40; /* TYPEFLAG_FDUAL */
if(type_iface_get_inherit(interface))
add_impl_type(msft_typeinfo, type_iface_get_inherit(interface),
ref_importinfo);
@ -2198,7 +2174,8 @@ static void add_union_typeinfo(msft_typelib_t *typelib, type_t *tunion)
static void add_typedef_typeinfo(msft_typelib_t *typelib, type_t *tdef)
{
msft_typeinfo_t *msft_typeinfo = NULL;
int alignment, datatype1, datatype2, size, duplicate = 0;
int datatype1, datatype2, duplicate = 0;
unsigned int size, alignment = 0;
type_t *type;
if (-1 < tdef->typelib_idx)
@ -2214,8 +2191,8 @@ static void add_typedef_typeinfo(msft_typelib_t *typelib, type_t *tdef)
else
duplicate = 1;
encode_type(typelib, get_type_vt(type), type,
&datatype1, &size, &alignment, &datatype2);
encode_type(typelib, get_type_vt(type), type, &datatype1, &datatype2);
size = type_memsize_and_alignment(type, &alignment);
if (msft_typeinfo)
{

View File

@ -30,12 +30,12 @@ do
fi
done
for f in basetsd.h guiddef.h poppack.h pshpack1.h pshpack2.h pshpack4.h pshpack8.h winbase.h windef.h winerror.h winnls.h winnt.h winnt.rh
for f in basetsd.h guiddef.h ndrtypes.h poppack.h pshpack1.h pshpack2.h pshpack4.h pshpack8.h winbase.h windef.h winerror.h winnls.h winnt.h winnt.rh
do
cp $WINE_DIR/include/$f include
done
for f in list.h rpcfc.h wpp.h
for f in list.h wpp.h
do
cp $WINE_DIR/include/wine/$f include/wine
done