%double

double

%long

ACCESS_MASK
BOOL
BOOLEAN
BYTE
DWORD
FILE_INFORMATION_CLASS
FS_INFORMATION_CLASS
HANDLE
HMODULE
INT
KEY_INFORMATION_CLASS
KEY_VALUE_INFORMATION_CLASS
LONG
NTSTATUS
OBJECT_INFORMATION_CLASS
PROCESSINFOCLASS
SECTION_INHERIT
SECURITY_IMPERSONATION_LEVEL
SECURITY_INFORMATION
SIZE_T
SYSTEM_INFORMATION_CLASS
THREADINFOCLASS
TIMER_TYPE
TOKEN_TYPE
UINT
ULONG
WCHAR

%long # --forbidden

int
long
unsigned int
unsigned long

%longlong

LONGLONG
ULONGLONG

%ptr

CONTEXT *
CONTEXT86 *
DWORD *
EXCEPTION_FRAME *
EXCEPTION_RECORD *
FILETIME *
HANDLE *
INT *
LARGE_INTEGER *
LPBYTE
LPDWORD
LPDWORD *
LPRTL_RWLOCK
LPVOID
LPVOID *
LPWSTR *
OBJECT_ATTRIBUTES *
PACE_HEADER
PACE_HEADER *
PACL
PACL *
PBOOLEAN
PCVOID
PDWORD
PEXCEPTION_FRAME
PEXCEPTION_RECORD
PGENERIC_MAPPING
PHANDLE
PIMAGE_NT_HEADERS
PIO_APC_ROUTINE
PIO_STATUS_BLOCK
PLARGE_INTEGER
PLUID
POBJDIR_INFORMATION
POBJECT_ATTRIBUTES
PPRIVILEGE_SET
PRTL_HEAP_DEFINITION
PSECURITY_DESCRIPTOR
PSECURITY_DESCRIPTOR_CONTROL
PSID
PSID *
PSID_IDENTIFIER_AUTHORITY
PSTRING
PTIME_FIELDS
PTIMERAPCROUTINE
PTOKEN_PRIVILEGES
PULONG
PUNICODE_STRING
PVOID
PVOID *
RTL_CRITICAL_SECTION *
STRING *
UINT *
ULONGLONG *
UNICODE_STRING *
VOID *
struct _TEB *
union cptable *
void *

%ptr --extension

GUID *
WCHAR *
WCHAR ***
char *
char ***
enum __WINE_DEBUG_CLASS
va_list

%str

LPSTR
LPCSTR

%void

void
VOID

%wstr

LPCWSTR
LPWSTR
