Added some generated def

This commit is contained in:
hakril
2019-01-22 15:02:18 +01:00
parent f3de7b528b
commit 4e8a765bd6
20 changed files with 4970 additions and 3944 deletions
@@ -0,0 +1,36 @@
typedef struct ITypeCompVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ITypeComp * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out PVOID *ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ITypeComp * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ITypeComp * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Bind )(
ITypeComp * This,
/* [annotation][in] */
__RPC__in LPOLESTR szName,
/* [in] */ ULONG lHashVal,
/* [in] */ WORD wFlags,
/* [out] */ ITypeInfo **ppTInfo,
/* [out] */ DESCKIND *pDescKind,
/* [out] */ BINDPTR *pBindPtr);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *BindType )(
ITypeComp * This,
/* [annotation][in] */
__RPC__in LPOLESTR szName,
/* [in] */ ULONG lHashVal,
/* [out] */ ITypeInfo **ppTInfo,
/* [out] */ ITypeComp **ppTComp);
END_INTERFACE
} ITypeCompVtbl;
@@ -0,0 +1,125 @@
typedef struct ITypeInfoVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ITypeInfo * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ITypeInfo * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ITypeInfo * This);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetTypeAttr )(
ITypeInfo * This,
/* [out] */ TYPEATTR **ppTypeAttr);
HRESULT ( STDMETHODCALLTYPE *GetTypeComp )(
__RPC__in ITypeInfo * This,
/* [out] */ __RPC__deref_out_opt ITypeComp **ppTComp);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetFuncDesc )(
ITypeInfo * This,
/* [in] */ UINT index,
/* [out] */ FUNCDESC **ppFuncDesc);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetVarDesc )(
ITypeInfo * This,
/* [in] */ UINT index,
/* [out] */ VARDESC **ppVarDesc);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetNames )(
ITypeInfo * This,
/* [in] */ MEMBERID memid,
/* [length_is][size_is][out] */ BSTR *rgBstrNames,
/* [in] */ UINT cMaxNames,
/* [out] */ UINT *pcNames);
HRESULT ( STDMETHODCALLTYPE *GetRefTypeOfImplType )(
__RPC__in ITypeInfo * This,
/* [in] */ UINT index,
/* [out] */ __RPC__out HREFTYPE *pRefType);
HRESULT ( STDMETHODCALLTYPE *GetImplTypeFlags )(
__RPC__in ITypeInfo * This,
/* [in] */ UINT index,
/* [out] */ __RPC__out INT *pImplTypeFlags);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
ITypeInfo * This,
/* [annotation][size_is][in] */
__RPC__in_ecount(cNames) LPOLESTR *rgszNames,
/* [in] */ UINT cNames,
/* [size_is][out] */ MEMBERID *pMemId);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
ITypeInfo * This,
/* [in] */ PVOID pvInstance,
/* [in] */ MEMBERID memid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS *pDispParams,
/* [out] */ VARIANT *pVarResult,
/* [out] */ EXCEPINFO *pExcepInfo,
/* [out] */ UINT *puArgErr);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetDocumentation )(
ITypeInfo * This,
/* [in] */ MEMBERID memid,
/* [out] */ BSTR *pBstrName,
/* [out] */ BSTR *pBstrDocString,
/* [out] */ DWORD *pdwHelpContext,
/* [out] */ BSTR *pBstrHelpFile);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetDllEntry )(
ITypeInfo * This,
/* [in] */ MEMBERID memid,
/* [in] */ INVOKEKIND invKind,
/* [out] */ BSTR *pBstrDllName,
/* [out] */ BSTR *pBstrName,
/* [out] */ WORD *pwOrdinal);
HRESULT ( STDMETHODCALLTYPE *GetRefTypeInfo )(
__RPC__in ITypeInfo * This,
/* [in] */ HREFTYPE hRefType,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *AddressOfMember )(
ITypeInfo * This,
/* [in] */ MEMBERID memid,
/* [in] */ INVOKEKIND invKind,
/* [out] */ PVOID *ppv);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CreateInstance )(
ITypeInfo * This,
/* [in] */ IUnknown *pUnkOuter,
/* [in] */ REFIID riid,
/* [iid_is][out] */ PVOID *ppvObj);
HRESULT ( STDMETHODCALLTYPE *GetMops )(
__RPC__in ITypeInfo * This,
/* [in] */ MEMBERID memid,
/* [out] */ __RPC__deref_out_opt BSTR *pBstrMops);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetContainingTypeLib )(
ITypeInfo * This,
/* [out] */ ITypeLib **ppTLib,
/* [out] */ UINT *pIndex);
/* [local] */ DWORD /*void*/ ( STDMETHODCALLTYPE *ReleaseTypeAttr )(
ITypeInfo * This,
/* [in] */ TYPEATTR *pTypeAttr);
/* [local] */ DWORD ( STDMETHODCALLTYPE *ReleaseFuncDesc )(
ITypeInfo * This,
/* [in] */ FUNCDESC *pFuncDesc);
/* [local] */ DWORD ( STDMETHODCALLTYPE *ReleaseVarDesc )(
ITypeInfo * This,
/* [in] */ VARDESC *pVarDesc);
END_INTERFACE
} ITypeInfoVtbl;
@@ -0,0 +1,72 @@
typedef struct ITypeLibVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
__RPC__in ITypeLib * This,
/* [in] */ __RPC__in REFIID riid,
/* [annotation][iid_is][out] */
__RPC__deref_out void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
__RPC__in ITypeLib * This);
ULONG ( STDMETHODCALLTYPE *Release )(
__RPC__in ITypeLib * This);
/* [local] */ UINT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
ITypeLib * This);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
__RPC__in ITypeLib * This,
/* [in] */ UINT index,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTInfo);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoType )(
__RPC__in ITypeLib * This,
/* [in] */ UINT index,
/* [out] */ __RPC__out TYPEKIND *pTKind);
HRESULT ( STDMETHODCALLTYPE *GetTypeInfoOfGuid )(
__RPC__in ITypeLib * This,
/* [in] */ __RPC__in REFGUID guid,
/* [out] */ __RPC__deref_out_opt ITypeInfo **ppTinfo);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetLibAttr )(
ITypeLib * This,
/* [out] */ TLIBATTR **ppTLibAttr);
HRESULT ( STDMETHODCALLTYPE *GetTypeComp )(
__RPC__in ITypeLib * This,
/* [out] */ __RPC__deref_out_opt ITypeComp **ppTComp);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *GetDocumentation )(
ITypeLib * This,
/* [in] */ INT index,
/* [out] */ BSTR *pBstrName,
/* [out] */ BSTR *pBstrDocString,
/* [out] */ DWORD *pdwHelpContext,
/* [out] */ BSTR *pBstrHelpFile);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *IsName )(
ITypeLib * This,
/* [annotation][out][in] */
__RPC__inout LPOLESTR szNameBuf,
/* [in] */ ULONG lHashVal,
/* [out] */ BOOL *pfName);
/* [local] */ HRESULT ( STDMETHODCALLTYPE *FindName )(
ITypeLib * This,
/* [annotation][out][in] */
__RPC__inout LPOLESTR szNameBuf,
/* [in] */ ULONG lHashVal,
/* [length_is][size_is][out] */ ITypeInfo **ppTInfo,
/* [length_is][size_is][out] */ MEMBERID *rgMemId,
/* [out][in] */ USHORT *pcFound);
/* [local] */ DWORD /* void */ ( STDMETHODCALLTYPE *ReleaseTLibAttr )(
ITypeLib * This,
/* [in] */ TLIBATTR *pTLibAttr);
END_INTERFACE
} ITypeLibVtbl;
@@ -0,0 +1,5 @@
#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
@@ -257,3 +257,16 @@
#define FAX_PORT_QUERY (0x0010)
#define FAX_PORT_SET (0x0020)
#define FAX_JOB_MANAGE (0x0040)
// COM Specific Access Rights (Custom NAME)
// Based on internet search for "COM Access Mask"
#define COM_EXECUTE (0x0001)
#define COM_EXECUTE_LOCAL (0x0002)
#define COM_EXECUTE_REMOTE (0x0004)
#define COM_ACTIVATE_LOCAL (0x0008)
#define COM_ACTIVATE_REMOTE (0x0010)
@@ -22,6 +22,17 @@ NTSTATUS WINAPI NtAlpcQueryInformationMessage(
_Out_opt_ PULONG ReturnLength
);
NTSTATUS WINAPI NtConnectPort(
_Out_ PHANDLE PortHandle,
_In_ PUNICODE_STRING PortName,
_In_ PSECURITY_QUALITY_OF_SERVICE SecurityQos,
_Inout_opt_ PPORT_VIEW ClientView,
_Inout_opt_ PREMOTE_PORT_VIEW ServerView,
_Out_opt_ PULONG MaxMessageLength,
_Inout_opt_ PVOID ConnectionInformation,
_Inout_opt_ PULONG ConnectionInformationLength
);
NTSTATUS WINAPI NtAlpcConnectPort(
_Out_ PHANDLE PortHandle,
_In_ PUNICODE_STRING PortName,
@@ -156,3 +167,10 @@ NTSTATUS WINAPI NtAlpcRevokeSecurityContext(
_Reserved_ ULONG Flags,
_In_ ALPC_HANDLE ContextHandle
);
NTSTATUS WINAPI NtAlpcImpersonateClientOfPort(
_In_ HANDLE PortHandle,
_In_ PPORT_MESSAGE Message,
_In_ PVOID Flags
);
@@ -6312,4 +6312,5 @@ IXpsOMCoreProperties|3340FE8F-4027-4AA1-8F5F-D35AE45FE597
IXpsOMObjectFactory|F9B2A685-A50D-4FC2-B764-B56E093EA0CA
IXpsOMThumbnailGenerator|15B873D5-1971-41E8-83A3-6578403064C7
IXpsPrintJobStream|7A77DC5F-45D6-4DFF-9307-D8CB846347CA
IXpsPrintJob|5AB89B06-8194-425F-AB3B-D7A96E350161
IXpsPrintJob|5AB89B06-8194-425F-AB3B-D7A96E350161
MyCls|11223344-5555-6666-7777-889900000002
@@ -127,6 +127,7 @@ PSID = PVOID
/* COM STUFF */
RPCOLEDATAREP = ULONG
HREFTYPE = DWORD
/* Function PTR */
@@ -0,0 +1,14 @@
typedef enum {
FC_ZERO,FC_BYTE,FC_CHAR,FC_SMALL,FC_USMALL,FC_WCHAR,FC_SHORT,FC_USHORT,FC_LONG,FC_ULONG,FC_FLOAT,FC_HYPER,FC_DOUBLE,FC_ENUM16,FC_ENUM32,
FC_IGNORE,FC_ERROR_STATUS_T,FC_RP,FC_UP,FC_OP,FC_FP,FC_STRUCT,FC_PSTRUCT,FC_CSTRUCT,FC_CPSTRUCT,FC_CVSTRUCT,FC_BOGUS_STRUCT,FC_CARRAY,
FC_CVARRAY,FC_SMFARRAY,FC_LGFARRAY,FC_SMVARRAY,FC_LGVARRAY,FC_BOGUS_ARRAY,FC_C_CSTRING,FC_C_BSTRING,FC_C_SSTRING,FC_C_WSTRING,FC_CSTRING,
FC_BSTRING,FC_SSTRING,FC_WSTRING,FC_ENCAPSULATED_UNION,FC_NON_ENCAPSULATED_UNION,FC_BYTE_COUNT_POINTER,FC_TRANSMIT_AS,FC_REPRESENT_AS,FC_IP,
FC_BIND_CONTEXT,FC_BIND_GENERIC,FC_BIND_PRIMITIVE,FC_AUTO_HANDLE,FC_CALLBACK_HANDLE,FC_UNUSED1,FC_POINTER,FC_ALIGNM2,FC_ALIGNM4,FC_ALIGNM8,
FC_UNUSED2,FC_UNUSED3,FC_UNUSED4,FC_STRUCTPAD1,FC_STRUCTPAD2,FC_STRUCTPAD3,FC_STRUCTPAD4,FC_STRUCTPAD5,FC_STRUCTPAD6,FC_STRUCTPAD7,
FC_STRING_SIZED,FC_UNUSED5,FC_NO_REPEAT,FC_FIXED_REPEAT,FC_VARIABLE_REPEAT,FC_FIXED_OFFSET,FC_VARIABLE_OFFSET,FC_PP,FC_EMBEDDED_COMPLEX,
FC_IN_PARAM,FC_IN_PARAM_BASETYPE,FC_IN_PARAM_NO_FREE_INST,FC_IN_OUT_PARAM,FC_OUT_PARAM,FC_RETURN_PARAM,FC_RETURN_PARAM_BASETYPE,FC_DEREFERENCE,
FC_DIV_2,FC_MULT_2,FC_ADD_1,FC_SUB_1,FC_CALLBACK,FC_CONSTANT_IID,FC_END,FC_PAD,FC_SPLIT_DEREFERENCE = 0x74,FC_SPLIT_DIV_2,FC_SPLIT_MULT_2,
FC_SPLIT_ADD_1,FC_SPLIT_SUB_1,FC_SPLIT_CALLBACK,FC_HARD_STRUCT = 0xb1,FC_TRANSMIT_AS_PTR,FC_REPRESENT_AS_PTR,FC_USER_MARSHAL,FC_PIPE,
FC_BLKHOLE,FC_RANGE,FC_INT3264,FC_UINT3264,FC_END_OF_UNIVERSE
} NDR_FORMAT_CHARACTER;
@@ -274,3 +274,55 @@ typedef struct _RPC_IF_ID {
USHORT VersMajor;
USHORT VersMinor;
} RPC_IF_ID;
typedef struct _PORT_VIEW {
ULONG Length;
HANDLE SectionHandle;
ULONG SectionOffset;
ULONG ViewSize;
PVOID ViewBase;
PVOID TargetViewBase;
} PORT_VIEW, *PPORT_VIEW;
typedef struct _REMOTE_PORT_VIEW {
ULONG Length;
ULONG ViewSize;
PVOID ViewBase;
} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW;
typedef struct tagCOMVERSION
{
USHORT MajorVersion;
USHORT MinorVersion;
} COMVERSION;
typedef struct tagORPCTHIS {
COMVERSION version;
ULONG flags;
ULONG reserved1;
GUID cid;
PVOID extensions; // [unique] ORPC_EXTENT_ARRAY *extensions;
} ORPCTHIS;
typedef struct __MIDL_XmitDefs_0001 {
GUID asyncOperationId;
ULONG64 oxidClientProcessNA;
GUID originalClientLogicalThreadId;
ULONG64 uClientCausalityTraceId;
} MIDL_XmitDefs_0001;
typedef struct _LOCALTHIS {
DWORD dwFlags;
DWORD dwClientThread;
GUID passthroughTraceActivity;
GUID callTraceActivity;
MIDL_XmitDefs_0001 asyncRequestBlock;
DWORD reserved;
PVOID pTouchedAstaArray; // Ptr32 __MIDL_XmitDefs_0002
} LOCALTHIS;
@@ -151,4 +151,12 @@ typedef struct __tagVARIANT {
WORD wReserved2;
WORD wReserved3;
_ANON_TMP_variant_sub_union _VARIANT_NAME_3;
} _tagVARIANT, VARIANT, VARIANTARG, *LPVARIANT, *LPVARIANTARG;
} _tagVARIANT, VARIANT, VARIANTARG, *LPVARIANT, *LPVARIANTARG;
typedef enum tagCOMSD {
SD_LAUNCHPERMISSIONS = 0,
SD_ACCESSPERMISSIONS = 1,
SD_LAUNCHRESTRICTIONS = 2,
SD_ACCESSRESTRICTIONS = 3
} COMSD;
@@ -0,0 +1,161 @@
typedef enum tagVARKIND {
VAR_PERINSTANCE,
VAR_STATIC,
VAR_CONST,
VAR_DISPATCH
} VARKIND;
typedef enum tagINVOKEKIND {
INVOKE_FUNC,
INVOKE_PROPERTYGET,
INVOKE_PROPERTYPUT,
INVOKE_PROPERTYPUTREF
} INVOKEKIND;
typedef enum tagFUNCKIND {
FUNC_VIRTUAL,
FUNC_PUREVIRTUAL,
FUNC_NONVIRTUAL,
FUNC_STATIC,
FUNC_DISPATCH
} FUNCKIND;
typedef enum tagSYSKIND {
SYS_WIN16,
SYS_WIN32,
SYS_MAC,
SYS_WIN64
} SYSKIND;
typedef enum tagCALLCONV {
CC_FASTCALL,
CC_CDECL,
CC_MSCPASCAL,
CC_PASCAL,
CC_MACPASCAL,
CC_STDCALL,
CC_FPFASTCALL,
CC_SYSCALL,
CC_MPWCDECL,
CC_MPWPASCAL,
CC_MAX
} CALLCONV;
typedef enum tagDESCKIND {
DESCKIND_NONE,
DESCKIND_FUNCDESC,
DESCKIND_VARDESC,
DESCKIND_TYPECOMP,
DESCKIND_IMPLICITAPPOBJ,
DESCKIND_MAX
} DESCKIND;
typedef struct tagPARAMDESCEX {
ULONG cBytes;
VARIANTARG varDefaultValue;
} PARAMDESCEX, *LPPARAMDESCEX;
typedef struct tagPARAMDESC {
LPPARAMDESCEX pparamdescex;
USHORT wParamFlags;
} PARAMDESC, *LPPARAMDESC;
typedef union _TMP_TYPEDESC_UNION {
PVOID lptdesc; // struct tagTYPEDESC *lptdesc; // Temporrary fix..
PVOID lpadesc; // struct tagARRAYDESC *lpadesc;
HREFTYPE hreftype;
}TMP_TYPEDESC_UNION;
typedef struct tagTYPEDESC {
TMP_TYPEDESC_UNION DUMMYUNIONNAME;
VARTYPE vt;
} TYPEDESC;
typedef struct tagARRAYDESC {
TYPEDESC tdescElem;
USHORT cDims;
SAFEARRAYBOUND rgbounds[1];
} ARRAYDESC;
typedef struct tagELEMDESC {
TYPEDESC tdesc;
PARAMDESC paramdesc;
} ELEMDESC, *LPELEMDESC;
typedef struct tagFUNCDESC {
MEMBERID memid;
SCODE *lprgscode;
ELEMDESC *lprgelemdescParam;
FUNCKIND funckind;
INVOKEKIND invkind;
CALLCONV callconv;
SHORT cParams;
SHORT cParamsOpt;
SHORT oVft;
SHORT cScodes;
ELEMDESC elemdescFunc;
WORD wFuncFlags;
} FUNCDESC, *LPFUNCDESC;
typedef union _TMP_VARDESC_UNION {
ULONG oInst;
VARIANT *lpvarValue;
}TMP_VARDESC_UNION;
typedef struct tagVARDESC {
MEMBERID memid;
LPOLESTR lpstrSchema;
TMP_VARDESC_UNION DUMMYUNIONNAME;
ELEMDESC elemdescVar;
WORD wVarFlags;
VARKIND varkind;
} VARDESC, *LPVARDESC;
typedef union tagBINDPTR {
FUNCDESC *lpfuncdesc;
VARDESC *lpvardesc;
PVOID lptcomp; // ITypeComp*
} BINDPTR, *LPBINDPTR;
typedef struct tagIDLDESC {
ULONG_PTR dwReserved;
USHORT wIDLFlags;
} IDLDESC, *LPIDLDESC;
typedef struct tagTLIBATTR {
GUID guid;
LCID lcid;
SYSKIND syskind;
WORD wMajorVerNum;
WORD wMinorVerNum;
WORD wLibFlags;
} TLIBATTR, *LPTLIBATTR;
typedef struct tagTYPEATTR {
GUID guid;
LCID lcid;
DWORD dwReserved;
MEMBERID memidConstructor;
MEMBERID memidDestructor;
LPOLESTR lpstrSchema;
ULONG cbSizeInstance;
TYPEKIND typekind;
WORD cFuncs;
WORD cVars;
WORD cImplTypes;
WORD cbSizeVft;
WORD cbAlignment;
WORD wTypeFlags;
WORD wMajorVerNum;
WORD wMinorVerNum;
TYPEDESC tdescAlias;
IDLDESC idldescType;
} TYPEATTR, *LPTYPEATTR;
+2 -1
View File
@@ -134,7 +134,8 @@ class FunctionParsedFile(ParsedFile):
class COMParsedFile(ParsedFile):
PARSER = com_parser.WinComParser
IGNORED_INTERFACE = set(["ITypeInfo"])
# IGNORED_INTERFACE = set(["ITypeInfo"])
IGNORED_INTERFACE = set()
def compute_imports_exports(self, cominterface):
self.add_exports(cominterface.name)
+6 -8
View File
@@ -70,24 +70,22 @@ class WinStructParser(Parser):
else:
if not is_typedef:
raise ValueError("Anonymous union not in a typedef")
enum_name = "<anonymous>"
res_enum = WinEnum(None)
self.assert_token_type(OpenBracketToken)
count = itertools.count()
assigned_value = False
while type(self.peek()) != CloseBracketToken:
i = next(count)
name = self.assert_token_type(NameToken)
if type(self.peek()) == EqualToken:
if i != 0 and not assigned_value:
raise ParsingError("Enum {0} mix def with and without equal".format(enum_name))
assigned_value = True
# Equal sign (hard define of enum value)
self.assert_token_type(EqualToken)
i = self.promote_to_int(self.next_token())
else:
if assigned_value:
raise ParsingError("Enum {0} mix def with and without equal".format(enum_name))
# print(i, new_i)
# assert new_i >= i, "Cannot define eum value with inferior current value ({0})".format(enum_name)
# Setup new counter from here
count = itertools.count(i + 1)
res_enum.add_enum_entry(i, name.value)
if not type(self.peek()) == CloseBracketToken:
self.assert_token_type(CommaToken)