mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
Merge pull request #61 from hakril/comupdate
Add multiple ctypes defintions
This commit is contained in:
@@ -10,7 +10,7 @@ class WinComParser(Parser):
|
||||
PARAM_INFO = ["__RPC__deref_out", "__RPC__in", "__RPC__deref_out_opt", "__RPC__out", "__RPC__in_opt",
|
||||
"__RPC__deref_opt_inout_opt", "__in", "__out", "__out_opt", "__in_opt", "__inout",
|
||||
"__reserved", "__RPC__in_opt_string", "__RPC__inout_opt", "__RPC__in_string", "__deref_out_opt", "__RPC__inout",
|
||||
"__RPC__deref_out_opt_string", "_COM_Outptr_", "_In_", "_In_opt_", "_Out_"]
|
||||
"__RPC__deref_out_opt_string", "_COM_Outptr_", "_In_", "_In_opt_", "_Out_", "__deref_out"]
|
||||
PARAM_INFO_WITH_VALUE = ["__RPC__in_ecount", "__RPC__out_ecount_part", "__RPC__in_ecount_full",
|
||||
"__RPC__in_range", "__RPC__out_ecount_full", "__out_ecount_opt", "__out_ecount", "__in_ecount_opt",
|
||||
"__in_ecount", "__out_bcount_opt", "__out_bcount", "__in_bcount", "__in_bcount_opt", "__RPC__out_ecount_full_string",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
typedef struct IActivationStageInfoVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IActivationStageInfo * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IActivationStageInfo * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IActivationStageInfo * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetStageAndIndex )(
|
||||
IActivationStageInfo * This,
|
||||
/* [in] */ ACTIVATION_STAGE stage,
|
||||
/* [in] */ int index);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetStage )(
|
||||
IActivationStageInfo * This,
|
||||
/* [out] */ ACTIVATION_STAGE *pstage);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetIndex )(
|
||||
IActivationStageInfo * This,
|
||||
/* [out] */ int *pindex);
|
||||
|
||||
END_INTERFACE
|
||||
} IActivationStageInfoVtbl;
|
||||
@@ -0,0 +1,29 @@
|
||||
typedef struct ICallFactoryVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
ICallFactory * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [annotation][iid_is][out] */
|
||||
__RPC__deref_out void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
ICallFactory * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
ICallFactory * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *CreateCall )(
|
||||
ICallFactory * This,
|
||||
/* [annotation][in] */
|
||||
__in REFIID riid,
|
||||
/* [annotation][in] */
|
||||
__in_opt IUnknown *pCtrlUnk,
|
||||
/* [annotation][in] */
|
||||
__in REFIID riid2,
|
||||
/* [annotation][iid_is][out] */
|
||||
__deref_out IUnknown **ppv);
|
||||
|
||||
END_INTERFACE
|
||||
} ICallFactoryVtbl;
|
||||
@@ -0,0 +1,27 @@
|
||||
typedef struct IClassFactoryVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IClassFactory * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IClassFactory * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IClassFactory * This);
|
||||
|
||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *CreateInstance )(
|
||||
IClassFactory * This,
|
||||
/* [unique][in] */ IUnknown *pUnkOuter,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *LockServer )(
|
||||
IClassFactory * This,
|
||||
/* [in] */ BOOL fLock);
|
||||
|
||||
END_INTERFACE
|
||||
} IClassFactoryVtbl;
|
||||
@@ -0,0 +1,63 @@
|
||||
typedef struct IClientSecurityVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IClientSecurity * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [annotation][iid_is][out] */
|
||||
__RPC__deref_out void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IClientSecurity * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IClientSecurity * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryBlanket )(
|
||||
IClientSecurity * This,
|
||||
/* [annotation][in] */
|
||||
__in IUnknown *pProxy,
|
||||
/* [annotation][out] */
|
||||
__out DWORD *pAuthnSvc,
|
||||
/* [annotation][out] */
|
||||
__out_opt DWORD *pAuthzSvc,
|
||||
/* [annotation][out] */
|
||||
__RPC__deref_out_opt OLECHAR **pServerPrincName,
|
||||
/* [annotation][out] */
|
||||
__out_opt DWORD *pAuthnLevel,
|
||||
/* [annotation][out] */
|
||||
__out_opt DWORD *pImpLevel,
|
||||
/* [annotation][out] */
|
||||
__deref_out_opt void **pAuthInfo,
|
||||
/* [annotation][out] */
|
||||
__out_opt DWORD *pCapabilites);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetBlanket )(
|
||||
IClientSecurity * This,
|
||||
/* [annotation][in] */
|
||||
__in IUnknown *pProxy,
|
||||
/* [annotation][in] */
|
||||
__in DWORD dwAuthnSvc,
|
||||
/* [annotation][in] */
|
||||
__in DWORD dwAuthzSvc,
|
||||
/* [annotation][in] */
|
||||
__RPC__in_opt OLECHAR *pServerPrincName,
|
||||
/* [annotation][in] */
|
||||
__in DWORD dwAuthnLevel,
|
||||
/* [annotation][in] */
|
||||
__in DWORD dwImpLevel,
|
||||
/* [annotation][in] */
|
||||
__in_opt void *pAuthInfo,
|
||||
/* [annotation][in] */
|
||||
__in DWORD dwCapabilities);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *CopyProxy )(
|
||||
IClientSecurity * This,
|
||||
/* [annotation][in] */
|
||||
__in IUnknown *pProxy,
|
||||
/* [annotation][out] */
|
||||
__deref_out IUnknown **ppCopy);
|
||||
|
||||
END_INTERFACE
|
||||
} IClientSecurityVtbl;
|
||||
@@ -0,0 +1,74 @@
|
||||
typedef struct IComCatalogVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IComCatalog * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IComCatalog * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IComCatalog * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClassInfo )(
|
||||
IComCatalog * This,
|
||||
/* [in] */ REFGUID guidConfiguredClsid,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetApplicationInfo )(
|
||||
IComCatalog * This,
|
||||
/* [in] */ REFGUID guidApplId,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetProcessInfo )(
|
||||
IComCatalog * This,
|
||||
/* [in] */ REFGUID guidProcess,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetServerGroupInfo )(
|
||||
IComCatalog * This,
|
||||
/* [in] */ REFGUID guidServerGroup,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetRetQueueInfo )(
|
||||
IComCatalog * This,
|
||||
/* [string][in] */ WCHAR *wszFormatName,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetApplicationInfoForExe )(
|
||||
IComCatalog * This,
|
||||
/* [string][in] */ WCHAR *pwszExeName,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetTypeLibrary )(
|
||||
IComCatalog * This,
|
||||
/* [in] */ REFGUID guidTypeLib,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetInterfaceInfo )(
|
||||
IComCatalog * This,
|
||||
/* [in] */ REFIID iidInterface,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *FlushCache )(
|
||||
IComCatalog * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClassInfoFromProgId )(
|
||||
IComCatalog * This,
|
||||
/* [in] */ WCHAR *pwszProgID,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
END_INTERFACE
|
||||
} IComCatalogVtbl;
|
||||
@@ -0,0 +1,22 @@
|
||||
typedef struct IInternalUnknownVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IInternalUnknown * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IInternalUnknown * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IInternalUnknown * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInternalInterface )(
|
||||
IInternalUnknown * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
END_INTERFACE
|
||||
} IInternalUnknownVtbl;
|
||||
@@ -0,0 +1,58 @@
|
||||
typedef struct IMarshalVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IMarshal * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IMarshal * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IMarshal * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetUnmarshalClass )(
|
||||
IMarshal * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [unique][in] */ void *pv,
|
||||
/* [in] */ DWORD dwDestContext,
|
||||
/* [unique][in] */ void *pvDestContext,
|
||||
/* [in] */ DWORD mshlflags,
|
||||
/* [out] */ CLSID *pCid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetMarshalSizeMax )(
|
||||
IMarshal * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [unique][in] */ void *pv,
|
||||
/* [in] */ DWORD dwDestContext,
|
||||
/* [unique][in] */ void *pvDestContext,
|
||||
/* [in] */ DWORD mshlflags,
|
||||
/* [out] */ DWORD *pSize);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *MarshalInterface )(
|
||||
IMarshal * This,
|
||||
/* [unique][in] */ IStream *pStm,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [unique][in] */ void *pv,
|
||||
/* [in] */ DWORD dwDestContext,
|
||||
/* [unique][in] */ void *pvDestContext,
|
||||
/* [in] */ DWORD mshlflags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *UnmarshalInterface )(
|
||||
IMarshal * This,
|
||||
/* [unique][in] */ IStream *pStm,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *ReleaseMarshalData )(
|
||||
IMarshal * This,
|
||||
/* [unique][in] */ IStream *pStm);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DisconnectObject )(
|
||||
IMarshal * This,
|
||||
/* [in] */ DWORD dwReserved);
|
||||
|
||||
END_INTERFACE
|
||||
} IMarshalVtbl;
|
||||
@@ -0,0 +1,67 @@
|
||||
typedef struct IObjContextVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IObjContext * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [annotation][iid_is][out] */
|
||||
void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IObjContext * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IObjContext * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetProperty )(
|
||||
IObjContext * This,
|
||||
/* [annotation][in] */
|
||||
__in REFGUID rpolicyId,
|
||||
/* [annotation][in] */
|
||||
__in CPFLAGS flags,
|
||||
/* [annotation][in] */
|
||||
__in IUnknown *pUnk);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *RemoveProperty )(
|
||||
IObjContext * This,
|
||||
/* [annotation][in] */
|
||||
__in REFGUID rPolicyId);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetProperty )(
|
||||
IObjContext * This,
|
||||
/* [annotation][in] */
|
||||
__in REFGUID rGuid,
|
||||
/* [annotation][out] */
|
||||
__out CPFLAGS *pFlags,
|
||||
/* [annotation][out] */
|
||||
__deref_out IUnknown **ppUnk);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *EnumContextProps )(
|
||||
IObjContext * This,
|
||||
/* [annotation][out] */
|
||||
__deref_out IEnumContextProps **ppEnumContextProps);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *Reserved1 )(
|
||||
IObjContext * This);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *Reserved2 )(
|
||||
IObjContext * This);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *Reserved3 )(
|
||||
IObjContext * This);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *Reserved4 )(
|
||||
IObjContext * This);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *Reserved5 )(
|
||||
IObjContext * This);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *Reserved6 )(
|
||||
IObjContext * This);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *Reserved7 )(
|
||||
IObjContext * This);
|
||||
|
||||
END_INTERFACE
|
||||
} IObjContextVtbl;
|
||||
@@ -0,0 +1,36 @@
|
||||
typedef struct IRemUnknownVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IRemUnknown * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IRemUnknown * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IRemUnknown * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *RemQueryInterface )(
|
||||
IRemUnknown * This,
|
||||
/* [in] */ REFIPID ripid,
|
||||
/* [in] */ ULONG cRefs,
|
||||
/* [in] */ USHORT cIids,
|
||||
/* [size_is][in] */ IID *iids,
|
||||
/* [size_is][size_is][out] */ REMQIRESULT **ppQIResults);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *RemAddRef )(
|
||||
IRemUnknown * This,
|
||||
/* [in] */ USHORT cInterfaceRefs,
|
||||
/* [size_is][in] */ REMINTERFACEREF *InterfaceRefs,
|
||||
/* [size_is][out] */ HRESULT *pResults);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *RemRelease )(
|
||||
IRemUnknown * This,
|
||||
/* [in] */ USHORT cInterfaceRefs,
|
||||
/* [size_is][in] */ REMINTERFACEREF *InterfaceRefs);
|
||||
|
||||
END_INTERFACE
|
||||
} IRemUnknownVtbl;
|
||||
@@ -0,0 +1,20 @@
|
||||
// IStdIdentity is an empty interface to check that an object is the IStdIdentity
|
||||
// and thus query other interface
|
||||
typedef struct IStdIdentityVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IUnknown * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [annotation][iid_is][out] */
|
||||
__RPC__deref_out void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IUnknown * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IUnknown * This);
|
||||
|
||||
END_INTERFACE
|
||||
} IStdIdentityVtbl;
|
||||
@@ -0,0 +1,108 @@
|
||||
typedef struct IStorageVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IStorage * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IStorage * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IStorage * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *CreateStream )(
|
||||
IStorage * This,
|
||||
/* [string][in] */ const OLECHAR *pwcsName,
|
||||
/* [in] */ DWORD grfMode,
|
||||
/* [in] */ DWORD reserved1,
|
||||
/* [in] */ DWORD reserved2,
|
||||
/* [out] */ IStream **ppstm);
|
||||
|
||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *OpenStream )(
|
||||
IStorage * This,
|
||||
/* [string][in] */ const OLECHAR *pwcsName,
|
||||
/* [unique][in] */ void *reserved1,
|
||||
/* [in] */ DWORD grfMode,
|
||||
/* [in] */ DWORD reserved2,
|
||||
/* [out] */ IStream **ppstm);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *CreateStorage )(
|
||||
IStorage * This,
|
||||
/* [string][in] */ const OLECHAR *pwcsName,
|
||||
/* [in] */ DWORD grfMode,
|
||||
/* [in] */ DWORD reserved1,
|
||||
/* [in] */ DWORD reserved2,
|
||||
/* [out] */ IStorage **ppstg);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *OpenStorage )(
|
||||
IStorage * This,
|
||||
/* [string][unique][in] */ const OLECHAR *pwcsName,
|
||||
/* [unique][in] */ IStorage *pstgPriority,
|
||||
/* [in] */ DWORD grfMode,
|
||||
/* [unique][in] */ SNB snbExclude,
|
||||
/* [in] */ DWORD reserved,
|
||||
/* [out] */ IStorage **ppstg);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *CopyTo )(
|
||||
IStorage * This,
|
||||
/* [in] */ DWORD ciidExclude,
|
||||
/* [size_is][unique][in] */ const IID *rgiidExclude,
|
||||
/* [unique][in] */ SNB snbExclude,
|
||||
/* [unique][in] */ IStorage *pstgDest);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *MoveElementTo )(
|
||||
IStorage * This,
|
||||
/* [string][in] */ const OLECHAR *pwcsName,
|
||||
/* [unique][in] */ IStorage *pstgDest,
|
||||
/* [string][in] */ const OLECHAR *pwcsNewName,
|
||||
/* [in] */ DWORD grfFlags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Commit )(
|
||||
IStorage * This,
|
||||
/* [in] */ DWORD grfCommitFlags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Revert )(
|
||||
IStorage * This);
|
||||
|
||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *EnumElements )(
|
||||
IStorage * This,
|
||||
/* [in] */ DWORD reserved1,
|
||||
/* [size_is][unique][in] */ void *reserved2,
|
||||
/* [in] */ DWORD reserved3,
|
||||
/* [out] */ IEnumSTATSTG **ppenum);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DestroyElement )(
|
||||
IStorage * This,
|
||||
/* [string][in] */ const OLECHAR *pwcsName);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *RenameElement )(
|
||||
IStorage * This,
|
||||
/* [string][in] */ const OLECHAR *pwcsOldName,
|
||||
/* [string][in] */ const OLECHAR *pwcsNewName);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetElementTimes )(
|
||||
IStorage * This,
|
||||
/* [string][unique][in] */ const OLECHAR *pwcsName,
|
||||
/* [unique][in] */ const FILETIME *pctime,
|
||||
/* [unique][in] */ const FILETIME *patime,
|
||||
/* [unique][in] */ const FILETIME *pmtime);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetClass )(
|
||||
IStorage * This,
|
||||
/* [in] */ REFCLSID clsid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetStateBits )(
|
||||
IStorage * This,
|
||||
/* [in] */ DWORD grfStateBits,
|
||||
/* [in] */ DWORD grfMask);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Stat )(
|
||||
IStorage * This,
|
||||
/* [out] */ STATSTG *pstatstg,
|
||||
/* [in] */ DWORD grfStatFlag);
|
||||
|
||||
END_INTERFACE
|
||||
} IStorageVtbl;
|
||||
@@ -1,28 +0,0 @@
|
||||
typedef struct MyClsVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
MyCls * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [annotation][iid_is][out] */
|
||||
__RPC__deref_out void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
MyCls * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
MyCls * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *add )(
|
||||
MyCls * This,
|
||||
/* [in] */ UINT x,
|
||||
/* [in] */ UINT y,
|
||||
/* [out] */ UINT *res);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *print_state )(
|
||||
MyCls * This);
|
||||
|
||||
END_INTERFACE
|
||||
} MyClsVtbl;
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
typedef struct IActivationPropertiesVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IActivationProperties * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IActivationProperties * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IActivationProperties * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetUnmarshalClass )(
|
||||
IActivationProperties * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [unique][in] */ void *pv,
|
||||
/* [in] */ DWORD dwDestContext,
|
||||
/* [unique][in] */ void *pvDestContext,
|
||||
/* [in] */ DWORD mshlflags,
|
||||
/* [out] */ CLSID *pCid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetMarshalSizeMax )(
|
||||
IActivationProperties * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [unique][in] */ void *pv,
|
||||
/* [in] */ DWORD dwDestContext,
|
||||
/* [unique][in] */ void *pvDestContext,
|
||||
/* [in] */ DWORD mshlflags,
|
||||
/* [out] */ DWORD *pSize);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *MarshalInterface )(
|
||||
IActivationProperties * This,
|
||||
/* [unique][in] */ IStream *pStm,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [unique][in] */ void *pv,
|
||||
/* [in] */ DWORD dwDestContext,
|
||||
/* [unique][in] */ void *pvDestContext,
|
||||
/* [in] */ DWORD mshlflags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *UnmarshalInterface )(
|
||||
IActivationProperties * This,
|
||||
/* [unique][in] */ IStream *pStm,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *ReleaseMarshalData )(
|
||||
IActivationProperties * This,
|
||||
/* [unique][in] */ IStream *pStm);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DisconnectObject )(
|
||||
IActivationProperties * This,
|
||||
/* [in] */ DWORD dwReserved);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetDestCtx )(
|
||||
IActivationProperties * This,
|
||||
/* [in] */ DWORD dwDestCtx);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetMarshalFlags )(
|
||||
IActivationProperties * This,
|
||||
/* [in] */ DWORD dwMarshalFlags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetLocalBlob )(
|
||||
IActivationProperties * This,
|
||||
/* [in] */ void *blob);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetLocalBlob )(
|
||||
IActivationProperties * This,
|
||||
/* [out] */ void **blob);
|
||||
|
||||
END_INTERFACE
|
||||
} IActivationPropertiesVtbl;
|
||||
@@ -0,0 +1,38 @@
|
||||
typedef struct IActivationPropertiesOutVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IActivationPropertiesOut * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IActivationPropertiesOut * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IActivationPropertiesOut * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetActivationID )(
|
||||
IActivationPropertiesOut * This,
|
||||
/* [out] */ GUID *pActivationID);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetObjectInterface )(
|
||||
IActivationPropertiesOut * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [in] */ DWORD actvflags,
|
||||
/* [iid_is][out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetObjectInterfaces )(
|
||||
IActivationPropertiesOut * This,
|
||||
/* [in] */ DWORD cIfs,
|
||||
/* [in] */ DWORD actvflags,
|
||||
/* [size_is][in] */ MULTI_QI *multiQi);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *RemoveRequestedIIDs )(
|
||||
IActivationPropertiesOut * This,
|
||||
/* [in] */ DWORD cIfs,
|
||||
/* [size_is][in] */ IID *rgIID);
|
||||
|
||||
END_INTERFACE
|
||||
} IActivationPropertiesOutVtbl;
|
||||
@@ -0,0 +1,64 @@
|
||||
typedef struct IActivationPropertiesInVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IActivationPropertiesIn * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IActivationPropertiesIn * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetActivationID )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [out] */ GUID *pActivationID);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClassInfo )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClsctx )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [out] */ DWORD *pclsctx);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetActivationFlags )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [out] */ DWORD *pactvflags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *AddRequestedIIDs )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [in] */ DWORD cIfs,
|
||||
/* [size_is][in] */ IID *rgIID);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetRequestedIIDs )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [out] */ ULONG *pulCount,
|
||||
/* [out] */ IID **prgIID);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DelegateGetClassObject )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [out] */ IActivationPropertiesOut **pActPropsOut);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DelegateCreateInstance )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [in] */ IUnknown *pUnkOuter,
|
||||
/* [out] */ IActivationPropertiesOut **pActPropsOut);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DelegateCIAndGetCF )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [in] */ IUnknown *pUnkOuter,
|
||||
/* [out] */ IActivationPropertiesOut **pActPropsOut,
|
||||
/* [out] */ IClassFactory **ppCf);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetReturnActivationProperties )(
|
||||
IActivationPropertiesIn * This,
|
||||
/* [in] */ IUnknown *pUnk,
|
||||
/* [out] */ IActivationPropertiesOut **ppActOut);
|
||||
|
||||
END_INTERFACE
|
||||
} IActivationPropertiesInVtbl;
|
||||
@@ -0,0 +1,47 @@
|
||||
typedef struct IClassClassicInfoVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IClassClassicInfo * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IClassClassicInfo * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IClassClassicInfo * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetThreadingModel )(
|
||||
IClassClassicInfo * This,
|
||||
/* [out] */ ThreadingModel *pthreadmodel);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetModulePath )(
|
||||
IClassClassicInfo * This,
|
||||
/* [in] */ CLSCTX clsctx,
|
||||
/* [string][out] */ WCHAR **pwszDllName);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetImplementedClsid )(
|
||||
IClassClassicInfo * This,
|
||||
/* [out] */ GUID **ppguidClsid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetProcess )(
|
||||
IClassClassicInfo * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetRemoteServerName )(
|
||||
IClassClassicInfo * This,
|
||||
/* [out] */ WCHAR **pwszServerName);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetLocalServerType )(
|
||||
IClassClassicInfo * This,
|
||||
/* [out] */ LocalServerType *pType);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetSurrogateCommandLine )(
|
||||
IClassClassicInfo * This,
|
||||
/* [out] */ WCHAR **pwszSurrogateCommandLine);
|
||||
|
||||
END_INTERFACE
|
||||
} IClassClassicInfoVtbl;
|
||||
@@ -0,0 +1,78 @@
|
||||
typedef struct IComClassInfoVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IComClassInfo * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IComClassInfo * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IComClassInfo * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetConfiguredClsid )(
|
||||
IComClassInfo * This,
|
||||
/* [out] */ GUID **ppguidClsid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetProgId )(
|
||||
IComClassInfo * This,
|
||||
/* [out] */ WCHAR **pwszProgid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClassName )(
|
||||
IComClassInfo * This,
|
||||
/* [out] */ WCHAR **pwszClassName);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetApplication )(
|
||||
IComClassInfo * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClassContext )(
|
||||
IComClassInfo * This,
|
||||
/* [in] */ CLSCTX clsctxFilter,
|
||||
/* [out] */ CLSCTX *pclsctx);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetCustomActivatorCount )(
|
||||
IComClassInfo * This,
|
||||
/* [in] */ ACTIVATION_STAGE activationStage,
|
||||
/* [out] */ ULONG *pulCount);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetCustomActivatorClsids )(
|
||||
IComClassInfo * This,
|
||||
/* [in] */ ACTIVATION_STAGE activationStage,
|
||||
/* [out] */ GUID **prgguidClsid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetCustomActivators )(
|
||||
IComClassInfo * This,
|
||||
/* [in] */ ACTIVATION_STAGE activationStage,
|
||||
/* [out] */ ISystemActivator ***prgpActivator);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
|
||||
IComClassInfo * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *IsComPlusConfiguredClass )(
|
||||
IComClassInfo * This,
|
||||
/* [out] */ BOOL *pfComPlusConfiguredClass);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *MustRunInClientContext )(
|
||||
IComClassInfo * This,
|
||||
/* [out] */ BOOL *pbMustRunInClientContext);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetVersionNumber )(
|
||||
IComClassInfo * This,
|
||||
/* [out] */ DWORD *pdwVersionMS,
|
||||
/* [out] */ DWORD *pdwVersionLS);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Lock )(
|
||||
IComClassInfo * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Unlock )(
|
||||
IComClassInfo * This);
|
||||
|
||||
END_INTERFACE
|
||||
} IComClassInfoVtbl;
|
||||
@@ -0,0 +1,37 @@
|
||||
typedef struct IContextVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IContext * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IContext * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IContext * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetProperty )(
|
||||
IContext * This,
|
||||
/* [in] */ REFGUID rpolicyId,
|
||||
/* [in] */ CPFLAGS flags,
|
||||
/* [in] */ IUnknown *pUnk);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *RemoveProperty )(
|
||||
IContext * This,
|
||||
/* [in] */ REFGUID rPolicyId);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetProperty )(
|
||||
IContext * This,
|
||||
/* [in] */ REFGUID rGuid,
|
||||
/* [out] */ CPFLAGS *pFlags,
|
||||
/* [out] */ IUnknown **ppUnk);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *EnumContextProps )(
|
||||
IContext * This,
|
||||
/* [out] */ IEnumContextProps **ppEnumContextProps);
|
||||
|
||||
END_INTERFACE
|
||||
} IContextVtbl;
|
||||
@@ -0,0 +1,38 @@
|
||||
typedef struct IEnumContextPropsVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IEnumContextProps * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IEnumContextProps * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IEnumContextProps * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Next )(
|
||||
IEnumContextProps * This,
|
||||
/* [in] */ ULONG celt,
|
||||
/* [length_is][size_is][out] */ ContextProperty *pContextProperties,
|
||||
/* [out] */ ULONG *pceltFetched);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Skip )(
|
||||
IEnumContextProps * This,
|
||||
/* [in] */ ULONG celt);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Reset )(
|
||||
IEnumContextProps * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Clone )(
|
||||
IEnumContextProps * This,
|
||||
/* [out] */ IEnumContextProps **ppEnumContextProps);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Count )(
|
||||
IEnumContextProps * This,
|
||||
/* [out] */ ULONG *pcelt);
|
||||
|
||||
END_INTERFACE
|
||||
} IEnumContextPropsVtbl;
|
||||
@@ -0,0 +1,34 @@
|
||||
typedef struct IEnumSTATSTGVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IEnumSTATSTG * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IEnumSTATSTG * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IEnumSTATSTG * This);
|
||||
|
||||
/* [local] */ HRESULT ( STDMETHODCALLTYPE *Next )(
|
||||
IEnumSTATSTG * This,
|
||||
/* [in] */ ULONG celt,
|
||||
/* [length_is][size_is][out] */ STATSTG *rgelt,
|
||||
/* [out] */ ULONG *pceltFetched);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Skip )(
|
||||
IEnumSTATSTG * This,
|
||||
/* [in] */ ULONG celt);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Reset )(
|
||||
IEnumSTATSTG * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Clone )(
|
||||
IEnumSTATSTG * This,
|
||||
/* [out] */ IEnumSTATSTG **ppenum);
|
||||
|
||||
END_INTERFACE
|
||||
} IEnumSTATSTGVtbl;
|
||||
@@ -0,0 +1,43 @@
|
||||
typedef struct IInitActivationPropertiesInVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IInitActivationPropertiesIn * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IInitActivationPropertiesIn * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IInitActivationPropertiesIn * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetClsctx )(
|
||||
IInitActivationPropertiesIn * This,
|
||||
/* [in] */ DWORD clsctx);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetActivationFlags )(
|
||||
IInitActivationPropertiesIn * This,
|
||||
/* [in] */ DWORD actvflags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetClassInfo )(
|
||||
IInitActivationPropertiesIn * This,
|
||||
/* [unique][in] */ IUnknown *pUnkClassInfo);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetContextInfo )(
|
||||
IInitActivationPropertiesIn * This,
|
||||
/* [unique][in] */ IContext *pClientContext,
|
||||
/* [in] */ IContext *pPrototypeContext);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetConstructFromStorage )(
|
||||
IInitActivationPropertiesIn * This,
|
||||
/* [unique][in] */ IStorage *pStorage);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetConstructFromFile )(
|
||||
IInitActivationPropertiesIn * This,
|
||||
/* [in] */ WCHAR *wszFileName,
|
||||
/* [in] */ DWORD dwMode);
|
||||
|
||||
END_INTERFACE
|
||||
} IInitActivationPropertiesInVtbl;
|
||||
@@ -0,0 +1,38 @@
|
||||
typedef struct IOpaqueDataInfoVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IOpaqueDataInfo * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IOpaqueDataInfo * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IOpaqueDataInfo * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *AddOpaqueData )(
|
||||
IOpaqueDataInfo * This,
|
||||
/* [in] */ OpaqueData *pData);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetOpaqueData )(
|
||||
IOpaqueDataInfo * This,
|
||||
/* [in] */ REFGUID guid,
|
||||
/* [out] */ OpaqueData **pData);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DeleteOpaqueData )(
|
||||
IOpaqueDataInfo * This,
|
||||
/* [in] */ REFGUID guid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetOpaqueDataCount )(
|
||||
IOpaqueDataInfo * This,
|
||||
/* [out] */ ULONG *pulCount);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetAllOpaqueData )(
|
||||
IOpaqueDataInfo * This,
|
||||
/* [out] */ OpaqueData **prgData);
|
||||
|
||||
END_INTERFACE
|
||||
} IOpaqueDataInfoVtbl;
|
||||
@@ -0,0 +1,84 @@
|
||||
typedef struct IPrivActivationPropertiesInVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IPrivActivationPropertiesIn * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IPrivActivationPropertiesIn * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetActivationID )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [out] */ GUID *pActivationID);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClassInfo )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClsctx )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [out] */ DWORD *pclsctx);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetActivationFlags )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [out] */ DWORD *pactvflags);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *AddRequestedIIDs )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [in] */ DWORD cIfs,
|
||||
/* [size_is][in] */ IID *rgIID);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetRequestedIIDs )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [out] */ ULONG *pulCount,
|
||||
/* [out] */ IID **prgIID);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DelegateGetClassObject )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [out] */ IActivationPropertiesOut **pActPropsOut);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DelegateCreateInstance )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [in] */ IUnknown *pUnkOuter,
|
||||
/* [out] */ IActivationPropertiesOut **pActPropsOut);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DelegateCIAndGetCF )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [in] */ IUnknown *pUnkOuter,
|
||||
/* [out] */ IActivationPropertiesOut **pActPropsOut,
|
||||
/* [out] */ IClassFactory **ppCf);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetReturnActivationProperties )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [in] */ IUnknown *pUnk,
|
||||
/* [out] */ IActivationPropertiesOut **ppActOut);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *PrivGetReturnActivationProperties )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [out] */ IPrivActivationPropertiesOut **ppActOut);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetCOMVersion )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [out] */ COMVERSION *pVersion);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClsid )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [out] */ CLSID *pClsid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClientToken )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [out] */ HANDLE *pHandle);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetDestCtx )(
|
||||
IPrivActivationPropertiesIn * This,
|
||||
/* [out] */ DWORD *pdwDestCtx);
|
||||
|
||||
END_INTERFACE
|
||||
} IPrivActivationPropertiesInVtbl;
|
||||
@@ -0,0 +1,58 @@
|
||||
typedef struct IPrivActivationPropertiesOutVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IPrivActivationPropertiesOut * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IPrivActivationPropertiesOut * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IPrivActivationPropertiesOut * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetActivationID )(
|
||||
IPrivActivationPropertiesOut * This,
|
||||
/* [out] */ GUID *pActivationID);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetObjectInterface )(
|
||||
IPrivActivationPropertiesOut * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [in] */ DWORD actvflags,
|
||||
/* [iid_is][out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetObjectInterfaces )(
|
||||
IPrivActivationPropertiesOut * This,
|
||||
/* [in] */ DWORD cIfs,
|
||||
/* [in] */ DWORD actvflags,
|
||||
/* [size_is][in] */ MULTI_QI *multiQi);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *RemoveRequestedIIDs )(
|
||||
IPrivActivationPropertiesOut * This,
|
||||
/* [in] */ DWORD cIfs,
|
||||
/* [size_is][in] */ IID *rgIID);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetObjectInterfaces )(
|
||||
IPrivActivationPropertiesOut * This,
|
||||
/* [in] */ DWORD cIfs,
|
||||
/* [in] */ IID *pIID,
|
||||
/* [in] */ IUnknown *pUnk);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetMarshalledResults )(
|
||||
IPrivActivationPropertiesOut * This,
|
||||
/* [in] */ DWORD cIfs,
|
||||
/* [in] */ IID *pIID,
|
||||
/* [in] */ HRESULT *pHr,
|
||||
/* [in] */ MInterfacePointer **pIntfData);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetMarshalledResults )(
|
||||
IPrivActivationPropertiesOut * This,
|
||||
/* [out] */ DWORD *pcIfs,
|
||||
/* [out] */ IID **pIID,
|
||||
/* [out] */ HRESULT **pHr,
|
||||
/* [out] */ MInterfacePointer ***pIntfData);
|
||||
|
||||
END_INTERFACE
|
||||
} IPrivActivationPropertiesOutVtbl;
|
||||
@@ -0,0 +1,33 @@
|
||||
typedef struct IScmReplyInfoVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IScmReplyInfo * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IScmReplyInfo * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IScmReplyInfo * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetResolverInfo )(
|
||||
IScmReplyInfo * This,
|
||||
/* [in] */ PRIV_RESOLVER_INFO *pResolverInfo); /* Need to be cast to PRIV_RESOLVER_INFO_LEGACY on old windows */
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetResolverInfo )(
|
||||
IScmReplyInfo * This,
|
||||
/* [out] */ PRIV_RESOLVER_INFO **ppResolverInfo); /* Need to be cast to PRIV_RESOLVER_INFO_LEGACY on old windows */
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetRemoteReplyInfo )(
|
||||
IScmReplyInfo * This,
|
||||
/* [in] */ REMOTE_REPLY_SCM_INFO *pRemoteReply);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetRemoteReplyInfo )(
|
||||
IScmReplyInfo * This,
|
||||
/* [out] */ REMOTE_REPLY_SCM_INFO **ppRemoteReply);
|
||||
|
||||
END_INTERFACE
|
||||
} IScmReplyInfoVtbl;
|
||||
@@ -0,0 +1,33 @@
|
||||
typedef struct IScmRequestInfoVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IScmRequestInfo * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IScmRequestInfo * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IScmRequestInfo * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetScmInfo )(
|
||||
IScmRequestInfo * This,
|
||||
/* [in] */ PRIV_SCM_INFO *pScmInfo);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetScmInfo )(
|
||||
IScmRequestInfo * This,
|
||||
/* [out] */ PRIV_SCM_INFO **ppScmInfo);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetRemoteRequestInfo )(
|
||||
IScmRequestInfo * This,
|
||||
/* [in] */ REMOTE_REQUEST_SCM_INFO *pRemoteReq);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetRemoteRequestInfo )(
|
||||
IScmRequestInfo * This,
|
||||
/* [out] */ REMOTE_REQUEST_SCM_INFO **ppRemoteReq);
|
||||
|
||||
END_INTERFACE
|
||||
} IScmRequestInfoVtbl;
|
||||
@@ -0,0 +1,58 @@
|
||||
typedef struct IStandardActivatorVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IStandardActivator * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IStandardActivator * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IStandardActivator * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *StandardGetClassObject )(
|
||||
IStandardActivator * This,
|
||||
/* [in] */ REFCLSID rclsid,
|
||||
/* [in] */ DWORD dwClsCtx,
|
||||
/* [in] */ COSERVERINFO *pServerInfo,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppv);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *StandardCreateInstance )(
|
||||
IStandardActivator * This,
|
||||
/* [in] */ REFCLSID Clsid,
|
||||
/* [in] */ IUnknown *punkOuter,
|
||||
/* [in] */ DWORD dwClsCtx,
|
||||
/* [in] */ COSERVERINFO *pServerInfo,
|
||||
/* [in] */ DWORD dwCount,
|
||||
/* [size_is][in] */ MULTI_QI *pResults);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *StandardGetInstanceFromFile )(
|
||||
IStandardActivator * This,
|
||||
/* [in] */ COSERVERINFO *pServerInfo,
|
||||
/* [in] */ CLSID *pclsidOverride,
|
||||
/* [in] */ IUnknown *punkOuter,
|
||||
/* [in] */ DWORD dwClsCtx,
|
||||
/* [in] */ DWORD grfMode,
|
||||
/* [in] */ OLECHAR *pwszName,
|
||||
/* [in] */ DWORD dwCount,
|
||||
/* [size_is][in] */ MULTI_QI *pResults);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *StandardGetInstanceFromIStorage )(
|
||||
IStandardActivator * This,
|
||||
/* [in] */ COSERVERINFO *pServerInfo,
|
||||
/* [in] */ CLSID *pclsidOverride,
|
||||
/* [in] */ IUnknown *punkOuter,
|
||||
/* [in] */ DWORD dwClsCtx,
|
||||
/* [in] */ IStorage *pstg,
|
||||
/* [in] */ DWORD dwCount,
|
||||
/* [size_is][in] */ MULTI_QI *pResults);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Reset )(
|
||||
IStandardActivator * This);
|
||||
|
||||
END_INTERFACE
|
||||
} IStandardActivatorVtbl;
|
||||
@@ -0,0 +1,28 @@
|
||||
typedef struct ISystemActivatorVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
ISystemActivator * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
ISystemActivator * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
ISystemActivator * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetClassObject )(
|
||||
ISystemActivator * This,
|
||||
/* [unique][in] */ IActivationPropertiesIn *pActProperties,
|
||||
/* [out] */ IActivationPropertiesOut **ppActProperties);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *CreateInstance )(
|
||||
ISystemActivator * This,
|
||||
/* [unique][in] */ IUnknown *pUnkOuter,
|
||||
/* [unique][in] */ IActivationPropertiesIn *pActProperties,
|
||||
/* [out] */ IActivationPropertiesOut **ppActProperties);
|
||||
|
||||
END_INTERFACE
|
||||
} ISystemActivatorVtbl;
|
||||
@@ -0,0 +1,57 @@
|
||||
// Manually crafted from windows 10
|
||||
typedef struct IProxyManagerVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
__RPC__in IProxyManager * This,
|
||||
/* [in] */ __RPC__in REFIID riid,
|
||||
/* [annotation][iid_is][out] */
|
||||
_COM_Outptr_ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
__RPC__in IProxyManager * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
__RPC__in IProxyManager * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *CreateServer )(
|
||||
IProxyManager * This,
|
||||
REFCLSID * rclsid,
|
||||
DWORD * clsctx,
|
||||
PVOID *pv);
|
||||
|
||||
BOOL ( STDMETHODCALLTYPE *IsConnected )(
|
||||
IProxyManager * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *LockConnection )(
|
||||
IProxyManager * This,
|
||||
BOOL fLock,
|
||||
BOOL fLastUnlockReleases);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Disconnect )(
|
||||
IProxyManager * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetConnectionStatus )(
|
||||
IProxyManager * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *ScalarDeletingDestructor )( // CPP code ? is this the real end of the Interface ?
|
||||
IProxyManager * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SetMapping )(
|
||||
IProxyManager * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetMapping )(
|
||||
IProxyManager * This);
|
||||
|
||||
IObjContext ( STDMETHODCALLTYPE *GetServerObjectContext )(
|
||||
IProxyManager * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetWrapperForContex )(
|
||||
IProxyManager * This,
|
||||
IObjContext *pCtx,
|
||||
IID *riid,
|
||||
void **ppv);
|
||||
|
||||
END_INTERFACE
|
||||
} IProxyManagerVtbl;
|
||||
@@ -0,0 +1,28 @@
|
||||
typedef struct IProxyServerIdentityVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IProxyServerIdentity * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [annotation][iid_is][out] */
|
||||
__RPC__deref_out void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IProxyServerIdentity * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IProxyServerIdentity * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetServerProcessId )(
|
||||
IProxyServerIdentity * This,
|
||||
UINT *processId);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetServerProcessHandle )(
|
||||
IProxyServerIdentity * This,
|
||||
DWORD dwDesiredAccess,
|
||||
INT bInheritHandle,
|
||||
PVOID *phProcess) ;
|
||||
|
||||
END_INTERFACE
|
||||
} IProxyServerIdentityVtbl;
|
||||
@@ -0,0 +1,62 @@
|
||||
typedef struct IChannelHookVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IChannelHook * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IChannelHook * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IChannelHook * This);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *ClientGetSize )(
|
||||
IChannelHook * This,
|
||||
/* [in] */ REFGUID uExtent,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out] */ ULONG *pDataSize);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *ClientFillBuffer )(
|
||||
IChannelHook * This,
|
||||
/* [in] */ REFGUID uExtent,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out][in] */ ULONG *pDataSize,
|
||||
/* [in] */ void *pDataBuffer);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *ClientNotify )(
|
||||
IChannelHook * This,
|
||||
/* [in] */ REFGUID uExtent,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [in] */ ULONG cbDataSize,
|
||||
/* [in] */ void *pDataBuffer,
|
||||
/* [in] */ DWORD lDataRep,
|
||||
/* [in] */ HRESULT hrFault);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *ServerNotify )(
|
||||
IChannelHook * This,
|
||||
/* [in] */ REFGUID uExtent,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [in] */ ULONG cbDataSize,
|
||||
/* [in] */ void *pDataBuffer,
|
||||
/* [in] */ DWORD lDataRep);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *ServerGetSize )(
|
||||
IChannelHook * This,
|
||||
/* [in] */ REFGUID uExtent,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [in] */ HRESULT hrFault,
|
||||
/* [out] */ ULONG *pDataSize);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *ServerFillBuffer )(
|
||||
IChannelHook * This,
|
||||
/* [in] */ REFGUID uExtent,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [out][in] */ ULONG *pDataSize,
|
||||
/* [in] */ void *pDataBuffer,
|
||||
/* [in] */ HRESULT hrFault);
|
||||
|
||||
END_INTERFACE
|
||||
} IChannelHookVtbl;
|
||||
@@ -0,0 +1,39 @@
|
||||
typedef struct IRpcChannelBufferVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IRpcChannelBuffer * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IRpcChannelBuffer * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IRpcChannelBuffer * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetBuffer )(
|
||||
IRpcChannelBuffer * This,
|
||||
/* [in] */ RPCOLEMESSAGE *pMessage,
|
||||
/* [in] */ REFIID riid);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *SendReceive )(
|
||||
IRpcChannelBuffer * This,
|
||||
/* [out][in] */ RPCOLEMESSAGE *pMessage,
|
||||
/* [out] */ ULONG *pStatus);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *FreeBuffer )(
|
||||
IRpcChannelBuffer * This,
|
||||
/* [in] */ RPCOLEMESSAGE *pMessage);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetDestCtx )(
|
||||
IRpcChannelBuffer * This,
|
||||
/* [out] */ DWORD *pdwDestContext,
|
||||
/* [out] */ void **ppvDestContext);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *IsConnected )(
|
||||
IRpcChannelBuffer * This);
|
||||
|
||||
END_INTERFACE
|
||||
} IRpcChannelBufferVtbl;
|
||||
@@ -0,0 +1,26 @@
|
||||
typedef struct IRpcHelperVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IRpcHelper * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IRpcHelper * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IRpcHelper * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetDCOMProtocolVersion )(
|
||||
IRpcHelper * This,
|
||||
/* [out] */ DWORD *pComVersion);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *GetIIDFromOBJREF )(
|
||||
IRpcHelper * This,
|
||||
/* [in] */ void *pObjRef,
|
||||
/* [out] */ IID **piid);
|
||||
|
||||
END_INTERFACE
|
||||
} IRpcHelperVtbl;
|
||||
@@ -0,0 +1,29 @@
|
||||
typedef struct IRpcOptionsVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IRpcOptions * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ void **ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IRpcOptions * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IRpcOptions * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Set )(
|
||||
IRpcOptions * This,
|
||||
/* [in] */ IUnknown *pPrx,
|
||||
/* [in] */ DWORD dwProperty,
|
||||
/* [in] */ ULONG_PTR dwValue);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Query )(
|
||||
IRpcOptions * This,
|
||||
/* [in] */ IUnknown *pPrx,
|
||||
/* [in] */ DWORD dwProperty,
|
||||
/* [out] */ ULONG_PTR *pdwValue);
|
||||
|
||||
END_INTERFACE
|
||||
} IRpcOptionsVtbl;
|
||||
@@ -0,0 +1,45 @@
|
||||
typedef struct IRpcStubBufferVtbl
|
||||
{
|
||||
BEGIN_INTERFACE
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
|
||||
IRpcStubBuffer * This,
|
||||
/* [in] */ REFIID riid,
|
||||
/* [iid_is][out] */ PVOID *ppvObject);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *AddRef )(
|
||||
IRpcStubBuffer * This);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *Release )(
|
||||
IRpcStubBuffer * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Connect )(
|
||||
IRpcStubBuffer * This,
|
||||
/* [in] */ IUnknown *pUnkServer);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *Disconnect )(
|
||||
IRpcStubBuffer * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *Invoke )(
|
||||
IRpcStubBuffer * This,
|
||||
/* [in] */ RPCOLEMESSAGE *_prpcmsg,
|
||||
/* [in] */ IRpcChannelBuffer *_pRpcChannelBuffer);
|
||||
|
||||
// IRpcStubBuffer *
|
||||
PVOID ( STDMETHODCALLTYPE *IsIIDSupported )(
|
||||
IRpcStubBuffer * This,
|
||||
/* [in] */ REFIID riid);
|
||||
|
||||
ULONG ( STDMETHODCALLTYPE *CountRefs )(
|
||||
IRpcStubBuffer * This);
|
||||
|
||||
HRESULT ( STDMETHODCALLTYPE *DebugServerQueryInterface )(
|
||||
IRpcStubBuffer * This,
|
||||
PVOID *ppv);
|
||||
|
||||
PVOID ( STDMETHODCALLTYPE *DebugServerRelease )(
|
||||
IRpcStubBuffer * This,
|
||||
PVOID pv);
|
||||
|
||||
END_INTERFACE
|
||||
} IRpcStubBufferVtbl;
|
||||
@@ -19,8 +19,8 @@ class COMInterface(ctypes.c_void_p):
|
||||
|
||||
# So COMInterface completely bypass the HRESULT
|
||||
# return value check on restype by setting the restype to COMHRESULT
|
||||
# But we add the 'errcheck' callbakc capacity for all COMInterface and subclasses
|
||||
# So the default implem of the callbakc must have the same behavior as
|
||||
# But we add the 'errcheck' callback capacity for all COMInterface and subclasses
|
||||
# So the default implem of the callback must have the same behavior as
|
||||
# standard HRESULT restype.
|
||||
# This is why default errcheck callback call ctypes._check_HRESULT
|
||||
def _default_errcheck(self, result, func, args):
|
||||
@@ -42,12 +42,33 @@ class COMInterface(ctypes.c_void_p):
|
||||
description = "<NULL>" if not self.value else ""
|
||||
return "<{0}{1} at {2:#x}>".format(type(self).__name__, description, id(self))
|
||||
|
||||
# Simplified API for QueryInterface for interface embeding there IID
|
||||
def query(self, interfacetype):
|
||||
interface = interfacetype()
|
||||
self.QueryInterface(interface.IID, interface)
|
||||
return interface
|
||||
|
||||
# Simplified API for QueryInterface for interface embeding their IID
|
||||
# Or for string/Obj
|
||||
def query(self, interface, target=None):
|
||||
if isinstance(interface, str): # We have a GUID
|
||||
interface_iid = IID.from_string(interface)
|
||||
if target is None:
|
||||
target = IUnknown()
|
||||
elif issubclass(interface, COMInterface): # We have a PFW COM interface
|
||||
interface_iid = interface.IID
|
||||
if target is None:
|
||||
target = interface() # Use an instance of the ComInterface as target of the QueryInterface
|
||||
else:
|
||||
# We have something else (A gdef.GUID probably)
|
||||
interface_iid = interface
|
||||
if target is None:
|
||||
target = IUnknown()
|
||||
self.QueryInterface(interface_iid, target)
|
||||
return target
|
||||
|
||||
def marshal(self, target_iid=None, destination=MSHCTX_NOSHAREDMEM, flags=MSHLFLAGS_NORMAL):
|
||||
if target_iid is None:
|
||||
target_iid = self.IID
|
||||
mystream = windows.com.MemoryIStream.create()
|
||||
windows.winproxy.CoMarshalInterface(mystream, target_iid, self, destination, 0, flags)
|
||||
mystream.seek(0)
|
||||
buffer = mystream.read(0xffffffff) # Todo: release stuff
|
||||
return buffer
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
#define ORPCF_NULL ( 0 )
|
||||
#define ORPCF_LOCAL ( 1 )
|
||||
#define ORPCF_RESERVED1 ( 2 )
|
||||
#define ORPCF_RESERVED2 ( 4 )
|
||||
#define ORPCF_RESERVED3 ( 8 )
|
||||
#define ORPCF_RESERVED4 ( 16 )
|
||||
|
||||
#define ORPCF_INPUT_SYNC ORPCF_RESERVED1
|
||||
#define ORPCF_ASYNC ORPCF_RESERVED2
|
||||
#define ORPCF_DYNAMIC_CLOAKING ORPCF_RESERVED3
|
||||
|
||||
#define ORPCF_REJECTED ORPCF_RESERVED1
|
||||
#define ORPCF_RETRY_LATER ORPCF_RESERVED2
|
||||
|
||||
#define OBJREF_SIGNATURE ( 0x574f454d )
|
||||
#define OBJREF_STANDARD ( 0x1 )
|
||||
#define OBJREF_HANDLER ( 0x2 )
|
||||
#define OBJREF_CUSTOM ( 0x4 )
|
||||
#define OBJREF_EXTENDED ( 0x8 )
|
||||
#define SORF_OXRES1 ( 0x1 )
|
||||
#define SORF_OXRES2 ( 0x20 )
|
||||
#define SORF_OXRES3 ( 0x40 )
|
||||
#define SORF_OXRES4 ( 0x80 )
|
||||
#define SORF_OXRES5 ( 0x100 )
|
||||
#define SORF_OXRES6 ( 0x200 )
|
||||
#define SORF_OXRES7 ( 0x400 )
|
||||
#define SORF_OXRES8 ( 0x800 )
|
||||
#define SORF_NULL ( 0 )
|
||||
#define SORF_NOPING ( 0x1000 )
|
||||
@@ -258,15 +258,15 @@
|
||||
#define FAX_JOB_MANAGE (0x0040)
|
||||
|
||||
|
||||
// COM Specific Access Rights (Custom NAME)
|
||||
// Based on internet search for "COM Access Mask"
|
||||
// COM Specific Access Rights
|
||||
// Based on https://learn.microsoft.com/en-us/windows/win32/com/access-control-lists-for-com
|
||||
|
||||
|
||||
#define COM_EXECUTE (0x0001)
|
||||
#define COM_EXECUTE_LOCAL (0x0002)
|
||||
#define COM_EXECUTE_REMOTE (0x0004)
|
||||
#define COM_ACTIVATE_LOCAL (0x0008)
|
||||
#define COM_ACTIVATE_REMOTE (0x0010)
|
||||
#define COM_RIGHTS_EXECUTE (0x0001)
|
||||
#define COM_RIGHTS_EXECUTE_LOCAL (0x0002)
|
||||
#define COM_RIGHTS_EXECUTE_REMOTE (0x0004)
|
||||
#define COM_RIGHTS_ACTIVATE_LOCAL (0x0008)
|
||||
#define COM_RIGHTS_ACTIVATE_REMOTE (0x0010)
|
||||
|
||||
//
|
||||
// Section Access Rights.
|
||||
|
||||
@@ -135,4 +135,31 @@ PVOID SysAllocString(
|
||||
|
||||
VOID SysFreeString(
|
||||
[in, optional] BSTR bstrString
|
||||
);
|
||||
);
|
||||
|
||||
|
||||
HRESULT CreateStreamOnHGlobal(
|
||||
[in] HGLOBAL hGlobal,
|
||||
[in] BOOL fDeleteOnRelease,
|
||||
[out] LPSTREAM *ppstm
|
||||
);
|
||||
|
||||
HRESULT GetHGlobalFromStream(
|
||||
[in] LPUNKNOWN pstm,
|
||||
[out] HGLOBAL *phglobal
|
||||
);
|
||||
|
||||
HRESULT CoMarshalInterface(
|
||||
[in] LPUNKNOWN pStm,
|
||||
[in] REFIID riid,
|
||||
[in] LPUNKNOWN pUnk,
|
||||
[in] DWORD dwDestContext,
|
||||
[in, optional] LPVOID pvDestContext,
|
||||
[in] DWORD mshlflags
|
||||
);
|
||||
|
||||
HRESULT CoUnmarshalInterface(
|
||||
[in] PVOID pStm,
|
||||
[in] REFIID riid,
|
||||
[out] LPVOID *ppv
|
||||
);
|
||||
|
||||
@@ -109,28 +109,6 @@ BOOL WINAPI SymEnumSymbolsEx(
|
||||
_In_ DWORD Options
|
||||
);
|
||||
|
||||
BOOL WINAPI SymEnumTypes(
|
||||
_In_ HANDLE hProcess,
|
||||
_In_ ULONG64 BaseOfDll,
|
||||
_In_ PVOID EnumSymbolsCallback,
|
||||
_In_ PVOID UserContext
|
||||
);
|
||||
|
||||
BOOL WINAPI SymEnumTypesByName(
|
||||
_In_ HANDLE hProcess,
|
||||
_In_ ULONG64 BaseOfDll,
|
||||
_In_ PCSTR mask,
|
||||
_In_ PVOID EnumSymbolsCallback,
|
||||
_In_ PVOID UserContext
|
||||
);
|
||||
|
||||
BOOL WINAPI SymEnumTypesByNameW(
|
||||
[in] HANDLE hProcess,
|
||||
[in] ULONG64 BaseOfDll,
|
||||
[in, optional] PCWSTR mask,
|
||||
[in] PVOID EnumSymbolsCallback,
|
||||
[in] PVOID UserContext
|
||||
);
|
||||
|
||||
BOOL WINAPI SymEnumerateModules64(
|
||||
_In_ HANDLE hProcess,
|
||||
@@ -438,4 +416,35 @@ BOOL SymSetSearchPath(
|
||||
BOOL SymSetSearchPathW(
|
||||
HANDLE hProcess,
|
||||
PCWSTR SearchPath
|
||||
);
|
||||
|
||||
BOOL SymEnumTypes(
|
||||
[in] HANDLE hProcess,
|
||||
[in] ULONG64 BaseOfDll,
|
||||
[in] PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
|
||||
[in, optional] PVOID UserContext
|
||||
);
|
||||
|
||||
BOOL SymEnumTypesW(
|
||||
[in] HANDLE hProcess,
|
||||
[in] ULONG64 BaseOfDll,
|
||||
[in] PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
|
||||
[in, optional] PVOID UserContext
|
||||
);
|
||||
|
||||
BOOL SymEnumTypesByName(
|
||||
[in] HANDLE hProcess,
|
||||
[in] ULONG64 BaseOfDll,
|
||||
[in, optional] PCSTR mask,
|
||||
[in] PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
|
||||
[in] PVOID UserContext
|
||||
);
|
||||
|
||||
|
||||
BOOL SymEnumTypesByNameW(
|
||||
[in] HANDLE hProcess,
|
||||
[in] ULONG64 BaseOfDll,
|
||||
[in, optional] PCWSTR mask,
|
||||
[in] PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
|
||||
[in] PVOID UserContext
|
||||
);
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,6 +22,8 @@ KAFFINITY = ULONG_PTR
|
||||
KPRIORITY = LONG
|
||||
INTERNET_PORT = WORD
|
||||
|
||||
|
||||
|
||||
CHAR = c_char
|
||||
PCHAR = POINTER(CHAR)
|
||||
UCHAR = c_char
|
||||
@@ -38,6 +40,7 @@ LPCH = c_char_p
|
||||
LPWCH = c_wchar
|
||||
BSTR = c_wchar_p
|
||||
OLECHAR = c_wchar
|
||||
SNB = POINTER(POINTER(OLECHAR))
|
||||
POLECHAR = c_wchar_p
|
||||
PZZWSTR = c_wchar_p
|
||||
PUCHAR = POINTER(UCHAR)
|
||||
@@ -74,7 +77,7 @@ ALG_ID = UINT
|
||||
DISPID = LONG
|
||||
MEMBERID = DISPID
|
||||
LRESULT = LONG_PTR
|
||||
LPUNKNOWN = POINTER(PVOID)
|
||||
LPUNKNOWN = PVOID
|
||||
LPPOINT = POINTER(POINT)
|
||||
LPRECT = POINTER(RECT)
|
||||
SPC_UUID = BYTE * 16
|
||||
@@ -85,6 +88,10 @@ FILEOP_FLAGS = WORD
|
||||
NET_API_STATUS = DWORD
|
||||
|
||||
|
||||
// 2 custom PFW defintions for bitness-forces structures
|
||||
PVOID32 = DWORD
|
||||
PVOID64 = DWORD64
|
||||
|
||||
NCRYPT_HANDLE = ULONG_PTR
|
||||
NCRYPT_PROV_HANDLE = ULONG_PTR
|
||||
NCRYPT_KEY_HANDLE = ULONG_PTR
|
||||
@@ -202,6 +209,16 @@ RPCOLEDATAREP = ULONG
|
||||
HREFTYPE = DWORD
|
||||
SFGAOF = ULONG
|
||||
|
||||
ID = ULONG64
|
||||
MID = ID // Machine Identifier
|
||||
OXID = ID // Object Exporter Identifier
|
||||
OID = ID // Object Identifer
|
||||
SETID = ID // Ping Set Identifier
|
||||
|
||||
// Interface pointer definition
|
||||
LPSTREAM = PVOID # Istream*
|
||||
|
||||
|
||||
/* SOCKET STUFF */
|
||||
|
||||
GROUP = UINT
|
||||
|
||||
@@ -291,38 +291,6 @@ typedef struct _REMOTE_PORT_VIEW {
|
||||
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;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -153,10 +153,3 @@ typedef struct __tagVARIANT {
|
||||
_ANON_TMP_variant_sub_union _VARIANT_NAME_3;
|
||||
} _tagVARIANT, VARIANT, VARIANTARG, *LPVARIANT, *LPVARIANTARG;
|
||||
|
||||
|
||||
typedef enum tagCOMSD {
|
||||
SD_LAUNCHPERMISSIONS = 0,
|
||||
SD_ACCESSPERMISSIONS = 1,
|
||||
SD_LAUNCHRESTRICTIONS = 2,
|
||||
SD_ACCESSRESTRICTIONS = 3
|
||||
} COMSD;
|
||||
@@ -0,0 +1,427 @@
|
||||
|
||||
typedef enum tagCOMSD {
|
||||
SD_LAUNCHPERMISSIONS = 0,
|
||||
SD_ACCESSPERMISSIONS = 1,
|
||||
SD_LAUNCHRESTRICTIONS = 2,
|
||||
SD_ACCESSRESTRICTIONS = 3
|
||||
} COMSD;
|
||||
|
||||
typedef struct tagOpaqueData
|
||||
{
|
||||
GUID guid;
|
||||
ULONG dataLength;
|
||||
ULONG reserved1;
|
||||
ULONG reserved2;
|
||||
/*[size_is((dataLength+7)&~7)]*/ BYTE *data;
|
||||
} OpaqueData;
|
||||
|
||||
|
||||
typedef struct tagSTDOBJREF
|
||||
{
|
||||
ULONG flags; // STDOBJREF flags (see above)
|
||||
ULONG cPublicRefs; // count of references passed
|
||||
OXID oxid; // oxid of server with this oid
|
||||
OID oid; // oid of object with this ipid
|
||||
IPID ipid; // ipid of Interface
|
||||
} STDOBJREF;
|
||||
|
||||
|
||||
typedef struct tagDATAELEMENT
|
||||
{
|
||||
GUID dataID;
|
||||
ULONG cbSize;
|
||||
ULONG cbRounded;
|
||||
BYTE Data[ 1 ];
|
||||
} DATAELEMENT, *PDATAELEMENT;
|
||||
|
||||
typedef struct tagOBJREFDATA
|
||||
{
|
||||
ULONG nElms;
|
||||
PDATAELEMENT *ppElmArray;
|
||||
} OBJREFDATA;
|
||||
|
||||
typedef struct tagDUALSTRINGARRAY
|
||||
{
|
||||
USHORT wNumEntries; // Number of entries in array.
|
||||
USHORT wSecurityOffset; // Offset of security info.
|
||||
// The array contains two parts, a set of STRINGBINDINGs
|
||||
// and a set of SECURITYBINDINGs. Each set is terminated by an
|
||||
// extra zero. The shortest array contains four zeros.
|
||||
/*[size_is(wNumEntries)]*/ USHORT aStringArray[1];
|
||||
} DUALSTRINGARRAY;
|
||||
|
||||
typedef struct tagOBJREF
|
||||
{
|
||||
ULONG signature;
|
||||
ULONG flags;
|
||||
GUID iid;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
STDOBJREF std;
|
||||
DUALSTRINGARRAY saResAddr;
|
||||
} u_standard;
|
||||
struct
|
||||
{
|
||||
STDOBJREF std;
|
||||
CLSID clsid;
|
||||
DUALSTRINGARRAY saResAddr;
|
||||
} u_handler;
|
||||
struct
|
||||
{
|
||||
CLSID clsid;
|
||||
ULONG cbExtension;
|
||||
ULONG size;
|
||||
BYTE *pData;
|
||||
} u_custom;
|
||||
struct
|
||||
{
|
||||
STDOBJREF std;
|
||||
OBJREFDATA *pORData;
|
||||
DUALSTRINGARRAY saResAddr;
|
||||
} u_extended;
|
||||
} u_objref;
|
||||
} OBJREF;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct tagCOMVERSION
|
||||
{
|
||||
USHORT MajorVersion;
|
||||
USHORT MinorVersion;
|
||||
} COMVERSION;
|
||||
|
||||
typedef struct tagORPC_EXTENT {
|
||||
_GUID id;
|
||||
ULONG size;
|
||||
BYTE data[1];
|
||||
} ORPC_EXTENT, PORPC_EXTENT;
|
||||
|
||||
typedef struct tagORPC_EXTENT_ARRAY {
|
||||
ULONG size;
|
||||
ULONG reserved;
|
||||
PORPC_EXTENT *extent;
|
||||
} ORPC_EXTENT_ARRAY;
|
||||
|
||||
typedef struct tagORPCTHIS {
|
||||
COMVERSION version;
|
||||
ULONG flags;
|
||||
ULONG reserved1;
|
||||
GUID cid;
|
||||
PVOID extensions; // [unique] ORPC_EXTENT_ARRAY *extensions;
|
||||
} ORPCTHIS;
|
||||
|
||||
typedef struct tagORPCTHIS32 {
|
||||
COMVERSION version;
|
||||
ULONG flags;
|
||||
ULONG reserved1;
|
||||
GUID cid;
|
||||
PVOID32 extensions; // [unique] ORPC_EXTENT_ARRAY *extensions;
|
||||
} ORPCTHIS32;
|
||||
|
||||
typedef struct tagOXID_INFO
|
||||
{
|
||||
DWORD dwTid; // thread id of object exporter
|
||||
DWORD dwPid; // process id of object exporter
|
||||
DWORD dwAuthnHint; // authentication hint
|
||||
COMVERSION version; // COM Version of server
|
||||
IPID ipidRemUnknown; // IRemUnknown IPID for object exporter
|
||||
DWORD dwFlags; // miscellaneous flags
|
||||
/*[unique]*/ DUALSTRINGARRAY *psa; // protocol and security info
|
||||
} OXID_INFO;
|
||||
|
||||
enum tagCPFLAGS
|
||||
{
|
||||
CPFLAG_NONE = 0,
|
||||
CPFLAG_PROPAGATE = 0x1,
|
||||
CPFLAG_EXPOSE = 0x2,
|
||||
CPFLAG_ENVOY = 0x4,
|
||||
CPFLAG_MONITORSTUB = 0x8,
|
||||
CPFLAG_MONITORPROXY = 0x10,
|
||||
CPFLAG_DONTCOMPARE = 0x20
|
||||
} CPFLAGS;
|
||||
|
||||
typedef struct tagContextProperty
|
||||
{
|
||||
GUID policyId;
|
||||
CPFLAGS flags;
|
||||
PVOID pUnk; // IUnknown
|
||||
} ContextProperty;
|
||||
|
||||
typedef struct _PRIV_SCM_INFO
|
||||
{
|
||||
LONG Apartment;
|
||||
WCHAR *pwszWinstaDesktop;
|
||||
ULONG64 ProcessSignature;
|
||||
WCHAR *pEnvBlock;
|
||||
DWORD EnvBlockLength;
|
||||
} PRIV_SCM_INFO;
|
||||
|
||||
typedef struct _REMOTE_REQUEST_SCM_INFO
|
||||
{
|
||||
DWORD ClientImpLevel;
|
||||
USHORT cRequestedProtseqs;
|
||||
USHORT *pRequestedProtseqs;
|
||||
} REMOTE_REQUEST_SCM_INFO;
|
||||
|
||||
// From: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dcom/21781a97-cb45-4655-82b0-02c4a1584603
|
||||
typedef struct tagMInterfacePointer {
|
||||
ULONG ulCntData;
|
||||
/*[size_is(ulCntData)]*/ BYTE abData[1];
|
||||
} MInterfacePointer, *PMInterfacePointer;
|
||||
|
||||
|
||||
typedef enum tagACTIVATION_STAGE
|
||||
{
|
||||
CLIENT_CONTEXT_STAGE = 1,
|
||||
CLIENT_MACHINE_STAGE = 2,
|
||||
SERVER_MACHINE_STAGE = 3,
|
||||
SERVER_PROCESS_STAGE = 4,
|
||||
SERVER_CONTEXT_STAGE = 5
|
||||
} ACTIVATION_STAGE;
|
||||
|
||||
typedef enum tagThreadingModel
|
||||
{
|
||||
ApartmentThreaded = 0,
|
||||
FreeThreaded = 1 ,
|
||||
SingleThreaded = 2 ,
|
||||
BothThreaded = 3 ,
|
||||
NeutralThreaded = 4
|
||||
} ThreadingModel;
|
||||
|
||||
typedef enum tagLocalServerType
|
||||
{
|
||||
LocalServerType16 = 0,
|
||||
LocalServerType32 = 1
|
||||
} LocalServerType;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct tagRPCOLEMESSAGE
|
||||
{
|
||||
PVOID reserved1;
|
||||
RPCOLEDATAREP dataRepresentation;
|
||||
PVOID Buffer;
|
||||
ULONG cbBuffer;
|
||||
ULONG iMethod;
|
||||
PVOID reserved2[5];
|
||||
ULONG rpcFlags;
|
||||
} RPCOLEMESSAGE, *PRPCOLEMESSAGE;
|
||||
|
||||
// https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dcom/1d6a8a54-b115-4148-815a-af0258931948
|
||||
typedef struct tagREMQIRESULT
|
||||
{
|
||||
HRESULT hResult;
|
||||
STDOBJREF std;
|
||||
} REMQIRESULT, *PREMQIRESULT;
|
||||
|
||||
typedef struct tagREMINTERFACEREF
|
||||
{
|
||||
IPID ipid;
|
||||
ULONG cPublicRefs;
|
||||
ULONG cPrivateRefs;
|
||||
} REMINTERFACEREF;
|
||||
|
||||
|
||||
typedef enum tagSTREAM_SEEK {
|
||||
STREAM_SEEK_SET = 0,
|
||||
STREAM_SEEK_CUR = 1,
|
||||
STREAM_SEEK_END = 2
|
||||
} STREAM_SEEK;
|
||||
|
||||
typedef enum tagMSHCTX {
|
||||
MSHCTX_LOCAL = 0,
|
||||
MSHCTX_NOSHAREDMEM = 1,
|
||||
MSHCTX_DIFFERENTMACHINE = 2,
|
||||
MSHCTX_INPROC = 3,
|
||||
MSHCTX_CROSSCTX = 4,
|
||||
MSHCTX_CONTAINER
|
||||
} MSHCTX;
|
||||
|
||||
|
||||
typedef struct _PRIV_RESOLVER_INFO_LEGACY
|
||||
{
|
||||
OXID OxidServer;
|
||||
DUALSTRINGARRAY *pServerORBindings;
|
||||
OXID_INFO OxidInfo;
|
||||
MID LocalMidOfRemote;
|
||||
DWORD DllServerModel;
|
||||
WCHAR *pwszDllServer;
|
||||
BOOL FoundInROT;
|
||||
} PRIV_RESOLVER_INFO_LEGACY, *PPRIV_RESOLVER_INFO_LEGACY;
|
||||
|
||||
typedef struct _REMOTE_REPLY_SCM_INFO
|
||||
{
|
||||
OXID Oxid;
|
||||
DUALSTRINGARRAY *pdsaOxidBindings;
|
||||
IPID ipidRemUnknown;
|
||||
DWORD authnHint;
|
||||
COMVERSION serverVersion;
|
||||
} REMOTE_REPLY_SCM_INFO, *PREMOTE_REPLY_SCM_INFO;
|
||||
|
||||
|
||||
typedef struct CONTAINER_EXTENT {
|
||||
UINT id;
|
||||
UINT version;
|
||||
UINT size;
|
||||
BYTE data[1];
|
||||
};
|
||||
|
||||
typedef struct CONTAINER_EXTENT_ARRAY {
|
||||
UINT size;
|
||||
UINT reserved;
|
||||
CONTAINER_EXTENT *extent;
|
||||
};
|
||||
|
||||
typedef struct HSTRING__ {
|
||||
INT unused;
|
||||
};
|
||||
|
||||
|
||||
typedef struct CONTAINERVERSION {
|
||||
UINT version;
|
||||
UINT64 capabilityFlags;
|
||||
CONTAINER_EXTENT_ARRAY *extensions;
|
||||
};
|
||||
|
||||
|
||||
typedef struct _MIDL_ILocalObjectExporter_0007 {
|
||||
ULONG dwTid;
|
||||
ULONG dwPid;
|
||||
ULONG dwAuthnHint;
|
||||
tagCOMVERSION dcomVersion;
|
||||
CONTAINERVERSION containerVersion;
|
||||
_GUID ipidRemUnknown;
|
||||
ULONG dwFlags;
|
||||
tagDUALSTRINGARRAY *psa;
|
||||
_GUID guidProcessIdentifier;
|
||||
UINT64 processHostId;
|
||||
INT clientDependencyBehavior;
|
||||
HSTRING__ *packageFullName;
|
||||
HSTRING__ *userSid;
|
||||
HSTRING__ *appcontainerSid;
|
||||
UINT64 primaryOxid;
|
||||
_GUID primaryIpidRemUnknown;
|
||||
} MIDL_ILocalObjectExporter_0007;
|
||||
|
||||
|
||||
typedef struct _PRIV_RESOLVER_INFO {
|
||||
UINT64 OxidServer;
|
||||
tagDUALSTRINGARRAY *pServerORBindings;
|
||||
MIDL_ILocalObjectExporter_0007 OxidInfo;
|
||||
UINT64 LocalMidOfRemote;
|
||||
INT FoundInROT;
|
||||
} PRIV_RESOLVER_INFO, *PPRIV_RESOLVER_INFO;
|
||||
|
||||
|
||||
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;
|
||||
|
||||
typedef struct _LOCALTHIS32 {
|
||||
DWORD dwFlags;
|
||||
DWORD dwClientThread;
|
||||
GUID passthroughTraceActivity;
|
||||
GUID callTraceActivity;
|
||||
MIDL_XmitDefs_0001 asyncRequestBlock;
|
||||
DWORD reserved;
|
||||
PVOID32 pTouchedAstaArray; // Ptr32 __MIDL_XmitDefs_0002
|
||||
} LOCALTHIS32;
|
||||
|
||||
/* LOCALTHAT & sub structures */
|
||||
|
||||
typedef struct _MIDL_XmitDefs_0007 {
|
||||
INT pointOfFailure;
|
||||
HRESULT hrFailure;
|
||||
ULONG sizeOfMarshaledErrorInfo;
|
||||
ULONG reserved;
|
||||
BYTE *pMarshaledErrorInfo;
|
||||
};
|
||||
|
||||
typedef struct _MIDL_XmitDefs_0005 {
|
||||
ULONG sizeOfMarshaledResults;
|
||||
ULONG reserved;
|
||||
BYTE *pMarshaledResults;
|
||||
};
|
||||
|
||||
typedef struct _MIDL_XmitDefs_0008 {
|
||||
INT outcome;
|
||||
_MIDL_XmitDefs_0005 successDetails;
|
||||
_MIDL_XmitDefs_0007 failureDetails;
|
||||
};
|
||||
|
||||
typedef struct _MIDL_XmitDefs_0010 {
|
||||
ULONG asyncStatus;
|
||||
ULONG reserved1;
|
||||
UINT64 uServerCausalityTraceId;
|
||||
_GUID completionTraceActivity;
|
||||
ULONG reserved2;
|
||||
_MIDL_XmitDefs_0008 *pOutcomeDetails;
|
||||
};
|
||||
|
||||
typedef struct CONTAINERTHAT {
|
||||
UINT64 responseFlags;
|
||||
_GUID unassignedPassthroughGuid_1;
|
||||
_GUID unassignedPassthroughGuid_2;
|
||||
_GUID unassignedPassthroughGuid_3;
|
||||
_GUID unassignedPassthroughGuid_4;
|
||||
_GUID reservedGuid_1;
|
||||
_GUID reservedGuid_2;
|
||||
_GUID reservedGuid_3;
|
||||
_GUID reservedGuid_4;
|
||||
UINT64 unassignedPassthroughUint64_1;
|
||||
UINT64 unassignedPassthroughUint64_2;
|
||||
UINT64 unassignedPassthroughUint64_3;
|
||||
UINT64 unassignedPassthroughUint64_4;
|
||||
UINT64 marshalingSetId;
|
||||
UINT64 reservedUint64_2;
|
||||
UINT64 reservedUint64_3;
|
||||
UINT64 reservedUint64_4;
|
||||
UINT reservedUint32;
|
||||
CONTAINER_EXTENT_ARRAY *extensions;
|
||||
};
|
||||
|
||||
typedef struct _LOCALTHAT {
|
||||
UINT64 marshalingSetId;
|
||||
ULONG reserved;
|
||||
_MIDL_XmitDefs_0010 *pAsyncResponseBlock;
|
||||
CONTAINER_EXTENT *containerErrorInformation;
|
||||
CONTAINERTHAT *containerPassthroughData;
|
||||
} LOCALTHAT;
|
||||
|
||||
|
||||
typedef struct _LOCALTHAT32 {
|
||||
UINT64 marshalingSetId;
|
||||
ULONG reserved;
|
||||
PVOID32 pAsyncResponseBlock;
|
||||
PVOID32 containerErrorInformation;
|
||||
PVOID32 containerPassthroughData;
|
||||
} LOCALTHAT32;
|
||||
|
||||
|
||||
typedef struct tagORPCTHAT {
|
||||
ULONG flags;
|
||||
tagORPC_EXTENT_ARRAY *extensions;
|
||||
} ORPCTHAT;
|
||||
|
||||
|
||||
typedef struct ORPCTHAT32 {
|
||||
ULONG flags;
|
||||
PVOID32 extensions; // tagORPC_EXTENT_ARRAY tagORPC_EXTENT_ARRAY
|
||||
} ORPCTHAT32;
|
||||
@@ -5,4 +5,4 @@ typedef struct _GUID {
|
||||
USHORT Data2;
|
||||
USHORT Data3;
|
||||
BYTE Data4[ 8 ];
|
||||
} GUID, IID, CLSID, *REFIID, *REFCLSID, *LPGUID, *REFGUID, *LPCLSID, *LPCGUID;
|
||||
} GUID, IID, CLSID, *REFIID, *REFCLSID, *LPGUID, *REFGUID, *LPCLSID, *LPCGUID, IPID, CID, *REFIPID;
|
||||
@@ -130,7 +130,7 @@ typedef struct _IMAGEHLP_MODULEW64 {
|
||||
WCHAR LoadedImageName[256];
|
||||
WCHAR LoadedPdbName[256];
|
||||
DWORD CVSig;
|
||||
WCHAR *CVData[MAX_PATH * 3];
|
||||
WCHAR CVData[MAX_PATH * 3]; // Typo in the documentation which says WCHAR *CVData[MAX_PATH * 3];
|
||||
DWORD PdbSig;
|
||||
GUID PdbSig70;
|
||||
DWORD PdbAge;
|
||||
|
||||
@@ -1730,15 +1730,12 @@ typedef struct _OBJECT_ATTRIBUTES {
|
||||
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
|
||||
|
||||
|
||||
typedef union _TMP_UNION_IO_STATUS_BLOCK
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PVOID Pointer;
|
||||
}TMP_UNION_IO_STATUS_BLOCK;
|
||||
|
||||
typedef struct _IO_STATUS_BLOCK {
|
||||
TMP_UNION_IO_STATUS_BLOCK DUMMYUNIONNAME;
|
||||
ULONG_PTR Information;
|
||||
union {
|
||||
NTSTATUS Status;
|
||||
PVOID Pointer;
|
||||
};
|
||||
ULONG_PTR Information;
|
||||
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
OLD_IStream = IStream
|
||||
class IStream(OLD_IStream):
|
||||
|
||||
def read(self, size):
|
||||
buffer = (CHAR * size)()
|
||||
size_read = ULONG()
|
||||
self.Read(buffer, size, size_read)
|
||||
return buffer[:size_read.value]
|
||||
|
||||
|
||||
def write(self, data):
|
||||
assert isinstance(data, bytes), "IStream.write() only accept bytes but {0} was passed".format(type(data))
|
||||
written = ULONG()
|
||||
self.Write(data, len(data), written)
|
||||
return written.value
|
||||
|
||||
def seek(self, position, origin=STREAM_SEEK_SET):
|
||||
newpos = ULARGE_INTEGER()
|
||||
self.Seek(position, origin, newpos)
|
||||
return newpos.value
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ class _GUID(INITIAL_GUID):
|
||||
self.name = None
|
||||
if self.name is None:
|
||||
return '<GUID "{0}">'.format(self.strid.upper())
|
||||
return '<GUID "{0}({1})">'.format(self.strid.upper(), self.name)
|
||||
return '<GUID "{0}" ({1})>'.format(self.strid.upper(), self.name)
|
||||
|
||||
__sprint__ = __repr__
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
INITIAL_tagDUALSTRINGARRAY = tagDUALSTRINGARRAY
|
||||
|
||||
class tagDUALSTRINGARRAY(INITIAL_tagDUALSTRINGARRAY):
|
||||
@property
|
||||
def rawbuffer(self):
|
||||
array_size = self.wNumEntries
|
||||
array_type = self.aStringArray._type_
|
||||
new_buffer_type = (array_type * array_size)
|
||||
buffer = new_buffer_type.from_address(ctypes.addressof(self.aStringArray))
|
||||
return buffer
|
||||
|
||||
|
||||
|
||||
@property
|
||||
def bidings(self):
|
||||
rawbuffer = self.rawbuffer
|
||||
rawarray = rawbuffer[:] # Allow to find 0 in USHORT without overlap
|
||||
rawbytes = bytearray(rawbuffer) # Allow to access to bytes to utf-16-le decode
|
||||
results = []
|
||||
next_start = 0
|
||||
|
||||
# STRINGBINDING documentation says that it starts with a USHORT wTowerId
|
||||
# But i don't see it in our response.. (local response ?)
|
||||
# So ignore it for now
|
||||
for i in range(100):
|
||||
current_index = rawarray.index(0, next_start)
|
||||
new_entry = rawbytes[next_start * 2: current_index * 2]
|
||||
if not new_entry:
|
||||
return results
|
||||
results.append(new_entry.decode("utf-16-le")) # Does not handle full unicode I think but..
|
||||
next_start = current_index + 1
|
||||
# Should not happen
|
||||
raise ValueError("Could not parse DUALSTRINGARRAY")
|
||||
|
||||
@property
|
||||
def security_bidings(self):
|
||||
rawbuffer = self.rawbuffer
|
||||
rawarray = rawbuffer[self.wSecurityOffset:]
|
||||
rawbytes = bytearray(rawbuffer)[self.wSecurityOffset * 2:]
|
||||
results = []
|
||||
next_start = 0
|
||||
|
||||
for i in range(100):
|
||||
wAuthnSvc = rawarray[next_start]
|
||||
if wAuthnSvc == 0:
|
||||
return results
|
||||
reserved = rawarray[next_start + 1]
|
||||
current_index = rawarray.index(0, next_start + 2)
|
||||
new_entry = rawbytes[(next_start + 2) * 2:current_index * 2]
|
||||
results.append((wAuthnSvc, reserved, new_entry.decode("utf-16-le"))) # Does not handle full unicode I think but..
|
||||
next_start = current_index + 1
|
||||
# Should not happen
|
||||
raise ValueError("Could not parse DUALSTRINGARRAY security bidings")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
INITIAL_tagMInterfacePointer = tagMInterfacePointer
|
||||
|
||||
class tagMInterfacePointer(INITIAL_tagMInterfacePointer):
|
||||
@property
|
||||
def objref(self):
|
||||
return OBJREF.from_address(ctypes.addressof(self.abData))
|
||||
@@ -399,6 +399,10 @@ class NtStatusDocGenerator(NoTemplatedGenerator):
|
||||
for value, name, descr in file.data:
|
||||
self.emitline(".. autodata:: {name}".format(name=name))
|
||||
|
||||
EXTENDED_INTERFACE_FILE = glob.glob(pjoin(SCRIPT_DIR, "extended_interfaces", "*.py"))
|
||||
EXTENDED_INTERFACE = [os.path.basename(filename)[:-len(".py")] for filename in EXTENDED_INTERFACE_FILE]
|
||||
|
||||
|
||||
class COMCtypesGenerator(CtypesGenerator):
|
||||
IGNORED_INTERFACE = set(COMParsedFile.IGNORED_INTERFACE)
|
||||
def __init__(self, *args, **kwargs):
|
||||
@@ -412,12 +416,15 @@ class COMCtypesGenerator(CtypesGenerator):
|
||||
def parse_iid_file(self, filename):
|
||||
data = open(filename).read()
|
||||
for line in data.split("\n"):
|
||||
if line.strip().startswith("//"):
|
||||
continue # Commentaires du pauvre
|
||||
name, iid = line.split("|")
|
||||
self.iids_def[name] = self.parse_iid(iid), iid
|
||||
|
||||
def generate_files(self, files):
|
||||
self.generate_known_iid_list()
|
||||
# We generate COM interface in 2 step
|
||||
# 1) The Class intself with the IDD
|
||||
# 1) The Class itself with the IDD
|
||||
# 2) The function list after all class we generated
|
||||
# - This allow COM function to refer the interface in their def :)
|
||||
for file in files:
|
||||
@@ -425,19 +432,34 @@ class COMCtypesGenerator(CtypesGenerator):
|
||||
for file in files:
|
||||
self.generate_com_interface_functions(file.data)
|
||||
|
||||
def generate_known_iid_list(self):
|
||||
# Generate list of known IID at the start of the file
|
||||
# This take quite some memory/time when starting PFW
|
||||
# for interface_name, (iid_python, iid_str) in self.iids_def.items():
|
||||
# cls_format_param = {"name": interface_name, "iid_python" : iid_python, "iid_str": iid_str}
|
||||
# self.emitline('IID_{name} = generate_IID({iid_python}, name="{name}", strid="{iid_str}")'.format(**cls_format_param))
|
||||
pass
|
||||
|
||||
def generate_com_interface_class_iid(self, cominterface):
|
||||
name = cominterface.name
|
||||
if cominterface.iid is not None:
|
||||
iid_str = cominterface.iid
|
||||
iid_python = self.parse_iid(iid_str)
|
||||
else:
|
||||
print("Lookup of IID for <{0}>".format(cominterface.name))
|
||||
iid_python, iid_str = self.iids_def[cominterface.name]
|
||||
cls_format_param = {"name": name, "iid_python" : iid_python, "iid_str": iid_str}
|
||||
|
||||
cls_format_param = {"name": cominterface.name, "iid_python" : iid_python, "iid_str": iid_str}
|
||||
|
||||
self.emitline("class {name}(COMInterface):".format(**cls_format_param))
|
||||
self.emitline(' IID = generate_IID({iid_python}, name="{name}", strid="{iid_str}")'.format(**cls_format_param))
|
||||
# self.emitline(' IID = IID_{name}'.format(name=cominterface.name)) # If we accept to have generate_known_iid_list()
|
||||
self.emitline('')
|
||||
# Emit the extended interface definition if existing
|
||||
if cominterface.name in EXTENDED_INTERFACE:
|
||||
extended_interface_filename = from_here(os.path.join("extended_interfaces", "{0}.py".format(cominterface.name)))
|
||||
print("Including extended COM Interface definition for <{0}>".format(cominterface.name))
|
||||
with open(extended_interface_filename) as f:
|
||||
self.emitline(f.read())
|
||||
|
||||
def generate_com_interface_functions(self, cominterface):
|
||||
name = cominterface.name
|
||||
|
||||
@@ -2,6 +2,24 @@
|
||||
|
||||
Interfaces
|
||||
----------
|
||||
.. class:: IActivationStageInfo
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: SetStageAndIndex
|
||||
.. method:: GetStage
|
||||
.. method:: GetIndex
|
||||
|
||||
|
||||
.. class:: ICallFactory
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: CreateCall
|
||||
|
||||
|
||||
.. class:: ICallFrame
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -57,6 +75,42 @@ Interfaces
|
||||
.. method:: GetRegisteredSink
|
||||
|
||||
|
||||
.. class:: IClassFactory
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: CreateInstance
|
||||
.. method:: LockServer
|
||||
|
||||
|
||||
.. class:: IClientSecurity
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: QueryBlanket
|
||||
.. method:: SetBlanket
|
||||
.. method:: CopyProxy
|
||||
|
||||
|
||||
.. class:: IComCatalog
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetClassInfo
|
||||
.. method:: GetApplicationInfo
|
||||
.. method:: GetProcessInfo
|
||||
.. method:: GetServerGroupInfo
|
||||
.. method:: GetRetQueueInfo
|
||||
.. method:: GetApplicationInfoForExe
|
||||
.. method:: GetTypeLibrary
|
||||
.. method:: GetInterfaceInfo
|
||||
.. method:: FlushCache
|
||||
.. method:: GetClassInfoFromProgId
|
||||
|
||||
|
||||
.. class:: IDispatch
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -79,6 +133,54 @@ Interfaces
|
||||
.. method:: Clone
|
||||
|
||||
|
||||
.. class:: IInternalUnknown
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: QueryInternalInterface
|
||||
|
||||
|
||||
.. class:: IMarshal
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetUnmarshalClass
|
||||
.. method:: GetMarshalSizeMax
|
||||
.. method:: MarshalInterface
|
||||
.. method:: UnmarshalInterface
|
||||
.. method:: ReleaseMarshalData
|
||||
.. method:: DisconnectObject
|
||||
|
||||
|
||||
.. class:: IMoniker
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetClassID
|
||||
.. method:: IsDirty
|
||||
.. method:: Load
|
||||
.. method:: Save
|
||||
.. method:: GetSizeMax
|
||||
.. method:: BindToObject
|
||||
.. method:: BindToStorage
|
||||
.. method:: Reduce
|
||||
.. method:: ComposeWith
|
||||
.. method:: Enum
|
||||
.. method:: IsEqual
|
||||
.. method:: Hash
|
||||
.. method:: IsRunning
|
||||
.. method:: GetTimeOfLastChange
|
||||
.. method:: Inverse
|
||||
.. method:: CommonPrefixWith
|
||||
.. method:: RelativePathTo
|
||||
.. method:: GetDisplayName
|
||||
.. method:: ParseDisplayName
|
||||
.. method:: IsSystemMoniker
|
||||
|
||||
|
||||
.. class:: INetFwPolicy2
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -112,22 +214,6 @@ Interfaces
|
||||
.. method:: get_LocalPolicyModifyState
|
||||
|
||||
|
||||
.. class:: INetFwRules
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetTypeInfoCount
|
||||
.. method:: GetTypeInfo
|
||||
.. method:: GetIDsOfNames
|
||||
.. method:: Invoke
|
||||
.. method:: get_Count
|
||||
.. method:: Add
|
||||
.. method:: Remove
|
||||
.. method:: Item
|
||||
.. method:: get__NewEnum
|
||||
|
||||
|
||||
.. class:: INetFwRule
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -175,6 +261,22 @@ Interfaces
|
||||
.. method:: put_Action
|
||||
|
||||
|
||||
.. class:: INetFwRules
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetTypeInfoCount
|
||||
.. method:: GetTypeInfo
|
||||
.. method:: GetIDsOfNames
|
||||
.. method:: Invoke
|
||||
.. method:: get_Count
|
||||
.. method:: Add
|
||||
.. method:: Remove
|
||||
.. method:: Item
|
||||
.. method:: get__NewEnum
|
||||
|
||||
|
||||
.. class:: INetFwServiceRestriction
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -189,6 +291,24 @@ Interfaces
|
||||
.. method:: get_Rules
|
||||
|
||||
|
||||
.. class:: IObjContext
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: SetProperty
|
||||
.. method:: RemoveProperty
|
||||
.. method:: GetProperty
|
||||
.. method:: EnumContextProps
|
||||
.. method:: Reserved1
|
||||
.. method:: Reserved2
|
||||
.. method:: Reserved3
|
||||
.. method:: Reserved4
|
||||
.. method:: Reserved5
|
||||
.. method:: Reserved6
|
||||
.. method:: Reserved7
|
||||
|
||||
|
||||
.. class:: IPersist
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -210,6 +330,16 @@ Interfaces
|
||||
.. method:: GetCurFile
|
||||
|
||||
|
||||
.. class:: IRemUnknown
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: RemQueryInterface
|
||||
.. method:: RemAddRef
|
||||
.. method:: RemRelease
|
||||
|
||||
|
||||
.. class:: IShellLinkA
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -260,6 +390,53 @@ Interfaces
|
||||
.. method:: SetPath
|
||||
|
||||
|
||||
.. class:: IStdIdentity
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
|
||||
|
||||
.. class:: IStorage
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: CreateStream
|
||||
.. method:: OpenStream
|
||||
.. method:: CreateStorage
|
||||
.. method:: OpenStorage
|
||||
.. method:: CopyTo
|
||||
.. method:: MoveElementTo
|
||||
.. method:: Commit
|
||||
.. method:: Revert
|
||||
.. method:: EnumElements
|
||||
.. method:: DestroyElement
|
||||
.. method:: RenameElement
|
||||
.. method:: SetElementTimes
|
||||
.. method:: SetClass
|
||||
.. method:: SetStateBits
|
||||
.. method:: Stat
|
||||
|
||||
|
||||
.. class:: IStream
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: Read
|
||||
.. method:: Write
|
||||
.. method:: Seek
|
||||
.. method:: SetSize
|
||||
.. method:: CopyTo
|
||||
.. method:: Commit
|
||||
.. method:: Revert
|
||||
.. method:: LockRegion
|
||||
.. method:: UnlockRegion
|
||||
.. method:: Stat
|
||||
.. method:: Clone
|
||||
|
||||
|
||||
.. class:: ITypeComp
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -500,6 +677,224 @@ Interfaces
|
||||
.. method:: GetCount
|
||||
|
||||
|
||||
.. class:: IActivationProperties
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetUnmarshalClass
|
||||
.. method:: GetMarshalSizeMax
|
||||
.. method:: MarshalInterface
|
||||
.. method:: UnmarshalInterface
|
||||
.. method:: ReleaseMarshalData
|
||||
.. method:: DisconnectObject
|
||||
.. method:: SetDestCtx
|
||||
.. method:: SetMarshalFlags
|
||||
.. method:: SetLocalBlob
|
||||
.. method:: GetLocalBlob
|
||||
|
||||
|
||||
.. class:: IActivationPropertiesOut
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetActivationID
|
||||
.. method:: GetObjectInterface
|
||||
.. method:: GetObjectInterfaces
|
||||
.. method:: RemoveRequestedIIDs
|
||||
|
||||
|
||||
.. class:: IActivationPropertiesIn
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetActivationID
|
||||
.. method:: GetClassInfo
|
||||
.. method:: GetClsctx
|
||||
.. method:: GetActivationFlags
|
||||
.. method:: AddRequestedIIDs
|
||||
.. method:: GetRequestedIIDs
|
||||
.. method:: DelegateGetClassObject
|
||||
.. method:: DelegateCreateInstance
|
||||
.. method:: DelegateCIAndGetCF
|
||||
.. method:: GetReturnActivationProperties
|
||||
|
||||
|
||||
.. class:: IClassClassicInfo
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetThreadingModel
|
||||
.. method:: GetModulePath
|
||||
.. method:: GetImplementedClsid
|
||||
.. method:: GetProcess
|
||||
.. method:: GetRemoteServerName
|
||||
.. method:: GetLocalServerType
|
||||
.. method:: GetSurrogateCommandLine
|
||||
|
||||
|
||||
.. class:: IComClassInfo
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetConfiguredClsid
|
||||
.. method:: GetProgId
|
||||
.. method:: GetClassName
|
||||
.. method:: GetApplication
|
||||
.. method:: GetClassContext
|
||||
.. method:: GetCustomActivatorCount
|
||||
.. method:: GetCustomActivatorClsids
|
||||
.. method:: GetCustomActivators
|
||||
.. method:: GetTypeInfo
|
||||
.. method:: IsComPlusConfiguredClass
|
||||
.. method:: MustRunInClientContext
|
||||
.. method:: GetVersionNumber
|
||||
.. method:: Lock
|
||||
.. method:: Unlock
|
||||
|
||||
|
||||
.. class:: IContext
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: SetProperty
|
||||
.. method:: RemoveProperty
|
||||
.. method:: GetProperty
|
||||
.. method:: EnumContextProps
|
||||
|
||||
|
||||
.. class:: IEnumContextProps
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: Next
|
||||
.. method:: Skip
|
||||
.. method:: Reset
|
||||
.. method:: Clone
|
||||
.. method:: Count
|
||||
|
||||
|
||||
.. class:: IEnumSTATSTG
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: Next
|
||||
.. method:: Skip
|
||||
.. method:: Reset
|
||||
.. method:: Clone
|
||||
|
||||
|
||||
.. class:: IInitActivationPropertiesIn
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: SetClsctx
|
||||
.. method:: SetActivationFlags
|
||||
.. method:: SetClassInfo
|
||||
.. method:: SetContextInfo
|
||||
.. method:: SetConstructFromStorage
|
||||
.. method:: SetConstructFromFile
|
||||
|
||||
|
||||
.. class:: IOpaqueDataInfo
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: AddOpaqueData
|
||||
.. method:: GetOpaqueData
|
||||
.. method:: DeleteOpaqueData
|
||||
.. method:: GetOpaqueDataCount
|
||||
.. method:: GetAllOpaqueData
|
||||
|
||||
|
||||
.. class:: IPrivActivationPropertiesIn
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetActivationID
|
||||
.. method:: GetClassInfo
|
||||
.. method:: GetClsctx
|
||||
.. method:: GetActivationFlags
|
||||
.. method:: AddRequestedIIDs
|
||||
.. method:: GetRequestedIIDs
|
||||
.. method:: DelegateGetClassObject
|
||||
.. method:: DelegateCreateInstance
|
||||
.. method:: DelegateCIAndGetCF
|
||||
.. method:: GetReturnActivationProperties
|
||||
.. method:: PrivGetReturnActivationProperties
|
||||
.. method:: GetCOMVersion
|
||||
.. method:: GetClsid
|
||||
.. method:: GetClientToken
|
||||
.. method:: GetDestCtx
|
||||
|
||||
|
||||
.. class:: IPrivActivationPropertiesOut
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetActivationID
|
||||
.. method:: GetObjectInterface
|
||||
.. method:: GetObjectInterfaces
|
||||
.. method:: RemoveRequestedIIDs
|
||||
.. method:: SetObjectInterfaces
|
||||
.. method:: SetMarshalledResults
|
||||
.. method:: GetMarshalledResults
|
||||
|
||||
|
||||
.. class:: IScmReplyInfo
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: SetResolverInfo
|
||||
.. method:: GetResolverInfo
|
||||
.. method:: SetRemoteReplyInfo
|
||||
.. method:: GetRemoteReplyInfo
|
||||
|
||||
|
||||
.. class:: IScmRequestInfo
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: SetScmInfo
|
||||
.. method:: GetScmInfo
|
||||
.. method:: SetRemoteRequestInfo
|
||||
.. method:: GetRemoteRequestInfo
|
||||
|
||||
|
||||
.. class:: IStandardActivator
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: StandardGetClassObject
|
||||
.. method:: StandardCreateInstance
|
||||
.. method:: StandardGetInstanceFromFile
|
||||
.. method:: StandardGetInstanceFromIStorage
|
||||
.. method:: Reset
|
||||
|
||||
|
||||
.. class:: ISystemActivator
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetClassObject
|
||||
.. method:: CreateInstance
|
||||
|
||||
|
||||
.. class:: IBindCtx
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -576,33 +971,6 @@ Interfaces
|
||||
.. method:: EnumSubCommands
|
||||
|
||||
|
||||
.. class:: IMoniker
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetClassID
|
||||
.. method:: IsDirty
|
||||
.. method:: Load
|
||||
.. method:: Save
|
||||
.. method:: GetSizeMax
|
||||
.. method:: BindToObject
|
||||
.. method:: BindToStorage
|
||||
.. method:: Reduce
|
||||
.. method:: ComposeWith
|
||||
.. method:: Enum
|
||||
.. method:: IsEqual
|
||||
.. method:: Hash
|
||||
.. method:: IsRunning
|
||||
.. method:: GetTimeOfLastChange
|
||||
.. method:: Inverse
|
||||
.. method:: CommonPrefixWith
|
||||
.. method:: RelativePathTo
|
||||
.. method:: GetDisplayName
|
||||
.. method:: ParseDisplayName
|
||||
.. method:: IsSystemMoniker
|
||||
|
||||
|
||||
.. class:: IRunningObjectTable
|
||||
|
||||
.. method:: QueryInterface
|
||||
@@ -643,22 +1011,30 @@ Interfaces
|
||||
.. method:: EnumItems
|
||||
|
||||
|
||||
.. class:: IStream
|
||||
.. class:: IProxyManager
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: Read
|
||||
.. method:: Write
|
||||
.. method:: Seek
|
||||
.. method:: SetSize
|
||||
.. method:: CopyTo
|
||||
.. method:: Commit
|
||||
.. method:: Revert
|
||||
.. method:: LockRegion
|
||||
.. method:: UnlockRegion
|
||||
.. method:: Stat
|
||||
.. method:: Clone
|
||||
.. method:: CreateServer
|
||||
.. method:: IsConnected
|
||||
.. method:: LockConnection
|
||||
.. method:: Disconnect
|
||||
.. method:: GetConnectionStatus
|
||||
.. method:: ScalarDeletingDestructor
|
||||
.. method:: SetMapping
|
||||
.. method:: GetMapping
|
||||
.. method:: GetServerObjectContext
|
||||
.. method:: GetWrapperForContex
|
||||
|
||||
|
||||
.. class:: IProxyServerIdentity
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetServerProcessId
|
||||
.. method:: GetServerProcessHandle
|
||||
|
||||
|
||||
.. class:: IApplicationActivationManager
|
||||
@@ -701,6 +1077,63 @@ Interfaces
|
||||
.. method:: OnStateChanged
|
||||
|
||||
|
||||
.. class:: IChannelHook
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: ClientGetSize
|
||||
.. method:: ClientFillBuffer
|
||||
.. method:: ClientNotify
|
||||
.. method:: ServerNotify
|
||||
.. method:: ServerGetSize
|
||||
.. method:: ServerFillBuffer
|
||||
|
||||
|
||||
.. class:: IRpcChannelBuffer
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetBuffer
|
||||
.. method:: SendReceive
|
||||
.. method:: FreeBuffer
|
||||
.. method:: GetDestCtx
|
||||
.. method:: IsConnected
|
||||
|
||||
|
||||
.. class:: IRpcHelper
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: GetDCOMProtocolVersion
|
||||
.. method:: GetIIDFromOBJREF
|
||||
|
||||
|
||||
.. class:: IRpcOptions
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: Set
|
||||
.. method:: Query
|
||||
|
||||
|
||||
.. class:: IRpcStubBuffer
|
||||
|
||||
.. method:: QueryInterface
|
||||
.. method:: AddRef
|
||||
.. method:: Release
|
||||
.. method:: Connect
|
||||
.. method:: Disconnect
|
||||
.. method:: Invoke
|
||||
.. method:: IsIIDSupported
|
||||
.. method:: CountRefs
|
||||
.. method:: DebugServerQueryInterface
|
||||
.. method:: DebugServerRelease
|
||||
|
||||
|
||||
.. class:: IAction
|
||||
|
||||
.. method:: QueryInterface
|
||||
|
||||
@@ -126,6 +126,32 @@ WinDef
|
||||
.. autodata:: NUM_CR_RESULTS
|
||||
.. autodata:: PCD_MAX_MEMORY
|
||||
.. autodata:: PCD_MAX_IO
|
||||
.. autodata:: ORPCF_NULL
|
||||
.. autodata:: ORPCF_LOCAL
|
||||
.. autodata:: ORPCF_RESERVED1
|
||||
.. autodata:: ORPCF_RESERVED2
|
||||
.. autodata:: ORPCF_RESERVED3
|
||||
.. autodata:: ORPCF_RESERVED4
|
||||
.. autodata:: ORPCF_INPUT_SYNC
|
||||
.. autodata:: ORPCF_ASYNC
|
||||
.. autodata:: ORPCF_DYNAMIC_CLOAKING
|
||||
.. autodata:: ORPCF_REJECTED
|
||||
.. autodata:: ORPCF_RETRY_LATER
|
||||
.. autodata:: OBJREF_SIGNATURE
|
||||
.. autodata:: OBJREF_STANDARD
|
||||
.. autodata:: OBJREF_HANDLER
|
||||
.. autodata:: OBJREF_CUSTOM
|
||||
.. autodata:: OBJREF_EXTENDED
|
||||
.. autodata:: SORF_OXRES1
|
||||
.. autodata:: SORF_OXRES2
|
||||
.. autodata:: SORF_OXRES3
|
||||
.. autodata:: SORF_OXRES4
|
||||
.. autodata:: SORF_OXRES5
|
||||
.. autodata:: SORF_OXRES6
|
||||
.. autodata:: SORF_OXRES7
|
||||
.. autodata:: SORF_OXRES8
|
||||
.. autodata:: SORF_NULL
|
||||
.. autodata:: SORF_NOPING
|
||||
.. autodata:: CWCSTORAGENAME
|
||||
.. autodata:: STGM_DIRECT
|
||||
.. autodata:: STGM_TRANSACTED
|
||||
@@ -2393,11 +2419,11 @@ WinDef
|
||||
.. autodata:: FAX_PORT_QUERY
|
||||
.. autodata:: FAX_PORT_SET
|
||||
.. autodata:: FAX_JOB_MANAGE
|
||||
.. autodata:: COM_EXECUTE
|
||||
.. autodata:: COM_EXECUTE_LOCAL
|
||||
.. autodata:: COM_EXECUTE_REMOTE
|
||||
.. autodata:: COM_ACTIVATE_LOCAL
|
||||
.. autodata:: COM_ACTIVATE_REMOTE
|
||||
.. autodata:: COM_RIGHTS_EXECUTE
|
||||
.. autodata:: COM_RIGHTS_EXECUTE_LOCAL
|
||||
.. autodata:: COM_RIGHTS_EXECUTE_REMOTE
|
||||
.. autodata:: COM_RIGHTS_ACTIVATE_LOCAL
|
||||
.. autodata:: COM_RIGHTS_ACTIVATE_REMOTE
|
||||
.. autodata:: SECTION_QUERY
|
||||
.. autodata:: SECTION_MAP_WRITE
|
||||
.. autodata:: SECTION_MAP_READ
|
||||
|
||||
@@ -164,6 +164,14 @@ Functions
|
||||
|
||||
.. function:: SysFreeString(bstrString)
|
||||
|
||||
.. function:: CreateStreamOnHGlobal(hGlobal, fDeleteOnRelease, ppstm)
|
||||
|
||||
.. function:: GetHGlobalFromStream(pstm, phglobal)
|
||||
|
||||
.. function:: CoMarshalInterface(pStm, riid, pUnk, dwDestContext, pvDestContext, mshlflags)
|
||||
|
||||
.. function:: CoUnmarshalInterface(pStm, riid, ppv)
|
||||
|
||||
.. function:: CryptCATAdminCalcHashFromFileHandle(hFile, pcbHash, pbHash, dwFlags)
|
||||
|
||||
.. function:: CryptCATAdminCalcHashFromFileHandle2(hCatAdmin, hFile, pcbHash, pbHash, dwFlags)
|
||||
@@ -978,12 +986,6 @@ Functions
|
||||
|
||||
.. function:: SymEnumSymbolsEx(hProcess, BaseOfDll, Mask, EnumSymbolsCallback, UserContext, Options)
|
||||
|
||||
.. function:: SymEnumTypes(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
||||
|
||||
.. function:: SymEnumTypesByName(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext)
|
||||
|
||||
.. function:: SymEnumTypesByNameW(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext)
|
||||
|
||||
.. function:: SymEnumerateModules64(hProcess, EnumModulesCallback, UserContext)
|
||||
|
||||
.. function:: SymEnumerateModulesW64(hProcess, EnumModulesCallback, UserContext)
|
||||
@@ -1072,6 +1074,14 @@ Functions
|
||||
|
||||
.. function:: SymSetSearchPathW(hProcess, SearchPath)
|
||||
|
||||
.. function:: SymEnumTypes(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
||||
|
||||
.. function:: SymEnumTypesW(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
||||
|
||||
.. function:: SymEnumTypesByName(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext)
|
||||
|
||||
.. function:: SymEnumTypesByNameW(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext)
|
||||
|
||||
.. function:: CreateEventA(lpEventAttributes, bManualReset, bInitialState, lpName)
|
||||
|
||||
.. function:: CreateEventW(lpEventAttributes, bManualReset, bInitialState, lpName)
|
||||
|
||||
+1363
-140
File diff suppressed because it is too large
Load Diff
+63
-6
@@ -20,6 +20,23 @@ def pe(request):
|
||||
yield proc.peb.modules[2].pe
|
||||
proc.exit(0)
|
||||
|
||||
PE_DOTNET32_DLL_NAME = "test_pe_dotnet32.dll"
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def pe_dotnet32(tmpdir_factory):
|
||||
tmpdir = tmpdir_factory.mktemp("pe_dotnet32_test_dir")
|
||||
pe_dotnet32_data = zlib.decompress(b64decode(PE_DOTNET32_DLL_BASE64))
|
||||
fullpath = str(tmpdir.join(PE_DOTNET32_DLL_NAME))
|
||||
with open(fullpath, "wb") as f:
|
||||
f.write(pe_dotnet32_data)
|
||||
|
||||
try:
|
||||
yield fullpath
|
||||
finally:
|
||||
try:
|
||||
os.unlink(fullpath)
|
||||
except WindowsError as e:
|
||||
pass # Ignore delete fail, may happend if injected process is cleaned after the dll..
|
||||
|
||||
def test_pe_imports(pe):
|
||||
imports = pe.imports
|
||||
@@ -66,10 +83,13 @@ def test_pe_parsing_strange_optional_header_size(tmp_path, proc32):
|
||||
# Also check that section retrieval works (as its position is based on OptionalHeader Size)
|
||||
assert set(s.name for s in mod.pe.sections) == {".text", ".data", ".l1"}
|
||||
|
||||
|
||||
|
||||
|
||||
# Make a test from current_process parsing ?
|
||||
def test_pe_parsing_dotnet_32_process_64(proc64):
|
||||
def test_pe_parsing_dotnet32_process_64(proc64, pe_dotnet32):
|
||||
# .NET pe32 loadable in 64bit process -> rewrite of the OptionalHeader
|
||||
mod = proc64.load_library(r"C:\Windows\System32\stordiag.exe")
|
||||
mod = proc64.load_library(pe_dotnet32)
|
||||
# It was a PE32
|
||||
assert mod.pe.get_NT_HEADER().FileHeader.Machine == gdef.IMAGE_FILE_MACHINE_I386
|
||||
# Now Optional Header should be 64b
|
||||
@@ -83,17 +103,54 @@ def test_pe_parsing_dotnet_32_process_64(proc64):
|
||||
assert mod.pe.sections
|
||||
assert ".text" in set(s.name for s in mod.pe.sections)
|
||||
|
||||
def test_pe_parsing_dotnet_32_current_process_64(proc64):
|
||||
def test_pe_parsing_dotnet32_current_process_64(proc64, pe_dotnet32):
|
||||
# .NET pe32 loadable in 64bit process -> rewrite of the OptionalHeader
|
||||
# So we injecte python code in a the remote proc64 to test the parsing from itself
|
||||
PIPE_NAME = "PFW_TEST_Pipe"
|
||||
mod = proc64.load_library(r"C:\Windows\System32\stordiag.exe")
|
||||
assert proc64.peb.modules[-1].name == "stordiag.exe"
|
||||
mod = proc64.load_library(pe_dotnet32)
|
||||
assert proc64.peb.modules[-1].name == PE_DOTNET32_DLL_NAME
|
||||
proc64.execute_python("import sys; import windows; import windows.pipe")
|
||||
proc64.execute_python("""pemod = [x for x in windows.current_process.peb.modules if x.name == 'stordiag.exe'][0].pe""")
|
||||
proc64.execute_python("""pemod = [x for x in windows.current_process.peb.modules if x.name == '{0}'][0].pe""".format(PE_DOTNET32_DLL_NAME))
|
||||
with windows.pipe.create(PIPE_NAME) as np:
|
||||
rcode = """windows.pipe.send_object("{pipe}", (list(pemod.imports), [sec.name for sec in pemod.sections]))"""
|
||||
proc64.execute_python(rcode.format(pipe=PIPE_NAME))
|
||||
imported_dlls, sections_names = np.recv()
|
||||
assert imported_dlls == ['mscoree.dll']
|
||||
assert ".text" in sections_names
|
||||
|
||||
# A "Portable Executable 32 .NET Assembly" DLL
|
||||
# Result of compiling a simple hello-world
|
||||
# Can be loaded into a 64b process to witness 32 -> 64b PE conversion at load time
|
||||
PE_DOTNET32_DLL_BASE64 = b"""
|
||||
eNrtV01wFEUUfpNsQhJMTAQsFMFhgxhQJpsEEGIC+dkQoglEdhMKSRXMznaWkflZp3tD1oNygaOF
|
||||
FwotLL1YUuUBy0LKn7K8WCUeuMHNg1VeKD1QelBKLfHrntmfhODPxYPSm37d7/Xr19973fO6M/H8
|
||||
Gaolohjq7dtEH1FYBuivy0nUlkc/aaFLjVfXf6SNX12fPmZzPR/4ucB0dcv0PF/oGaYHBU+3PT25
|
||||
P6W7fpYZzc1NGyIbkyNE41otvdP91bclu99QnJZrCaIGCivK2Y0gegnYQNivCXETVVoFqibs1tLR
|
||||
U0St6q/SlhtVkrC7PzLZUbeEk0eJ7kMjHiNK0z8oehm6Kg3g91bxhmDzAu35+sivhgruKhNHjYAH
|
||||
FkXYpO9Sv2mhHsQDRsAc3wqxSszKVusdekOLYc5vDNu9akodZbFoK9bSSNV6+ofFCDAr3wEYTZvX
|
||||
1XQ0y3Yo9cyQpiyG+Oa2GgmjJ9HTtVNK6sgBvYDh9peJVgJ3A2p7SgS2l+NS45FYGKL2qRT1xUK3
|
||||
2kenxpJox8F/Ifkhx89EGDBdG11F1CiZX7QeejD0pyUKS03oGwEcLY/6YehPaSHKevqVrmj1NKFJ
|
||||
OkUfavfTDRWOk3Qckq3am6Bfk6SvK3pZ0TVKbqt+r7Lwm3ZWa6KH6KwyrBBRGItWehXNNsVNSvfo
|
||||
NfTaUWcUd3r1RcwPsf6sNdJFYGsjKXsItIk2gbZSl6I7FR1UdEzR5xQ9pKipZr1ICVoFbLJvwO9N
|
||||
oCuoG3QNtA2s/DzoE3QGtIfeAH2a3gUdpkugzyp5CnSYDtPnFDtJ0Y6WSm3NwuPyMK2PYlkte6DU
|
||||
7ZswbW/XBrR+tuCwXZQqcsFcY9j3uO+wEnug4AnbZXQwsAUbtz1Gw76btx0WjDKPBaZg2UGBo5Ip
|
||||
CEZJlinkcmbGYRXZIOfMzTjFtC2qxWkzyDGxB3mKnfCD43fq78Ea0yzgtu/dOTjmzfqBawoMms5d
|
||||
teDKrJ0rBEqvMhw6oIQHmGPOqx6/c/pkgMhYYim7bt70ipWBKEhKLuyM7diianRhJI0ILj4uEowL
|
||||
I+s4NBmm7Ei1PIPNOsyS6MiwhB+U5EnbzHk+F7bFFxsvbU6KBXO2xXi0JVgM2wwWUee0P/MCzKrV
|
||||
idbsJYYM4JBPT+IrP4g2AJeNTs8HF18a7T7y3sDHrRcOT7aPvU0xXdMaanXS6tBpa5NsS4xAGt7f
|
||||
feSVtutNvXXg1rY0aFH+XSc/sHTNgwcDM7/P90bmLZaXPqWPBf4JrkEv/Pa3abTa2DeSHvYDNpjP
|
||||
PxnFqX9uu5GAgZaV5cOStHneMYv7wFKjRrHQkfs0Wob9ZCZnIdOFLIcfMqBGdV1hN1b6Zt5a8d4t
|
||||
0iYm5dpTqFdwv1xZVvlSpN4K1MdR1yJHr21YmGcXpXY6kEqmzl7fOXX7h52Dl2+ev3Eoaa6QNoZ7
|
||||
Z6Y4PJk5mBwcnRLh0bAsH/s1I3HP+JkXZiLYMx4TcFbJjXw2Q6m9g93btlNkt+2nyC6wzz/b+NT3
|
||||
P355LWd1DtU7Gys4Tpfu6SXK/MZq7ggCPTLPZBogl1uIOlNnUZbbj5E+QPfKv11q1LnC9p1cLd9m
|
||||
4WuKqk+lPFM7lpCXnl5L6R+7i34HHp5nsM3nqt4952q2gk7jpjkCOkIH0BvDC20f+DHQPeFrjT6L
|
||||
3fy9/Eqpsrm76j2oLUKTVLJp3IcB7NjIMgw2PZpFzpFlg5qVxqgJKce4SQJ6PriwvB+7pUkbKcgD
|
||||
jHiUW8LSNaWTKP+2UgaUaDPeOhruT59cyqs1ivDIBMeUdYGWk1D9bqVbsp1UI5ZaM78AU/WcBDJe
|
||||
Zc40aoCxim4XbvBEuco1GqEvcQul6wGLU4WoZNtANnYo/DI7cEY0GsdITmlLb/LwQyLLYadF9Pn3
|
||||
Ktv7I7kd2S5h8/50jTBOk5jrQ1qA3+KucUrgfbFYd7HnXVU+71AxGsQoh5aLnXGAXv+TOdG8YaLv
|
||||
qg7UzU8/79s97zr6XHRNxJHh4zrzLD+L264/PpXes2VHXOfC9LKm43usP15kPL57V3NTc1OfGV3l
|
||||
Okx4vD9eCLxebh1jrsm3uLYV+NyfFVss3+01uWvMdcV11/TsWSTm6er1YEzXy8bGsgy3sCguwCR/
|
||||
cd3DXdUfnyjiYnNsS704DDOfj3eGFkRQ4EI+av4mnu5wZczkzCrgaVaMeEgC9mIBOFl2MrDn8BbI
|
||||
Mf43rfbEy1aq7eCSsAoS8TibY47uSNofN/mYN+cfZ0FcL9i40RjHArOmw1nklDLSuQSaEvTOBdj7
|
||||
OstBAN/XWQrqrv94ytfD/8nObb93+/0fyx8qiKxw
|
||||
"""
|
||||
@@ -29,7 +29,7 @@ def test_symbols_module_info(symctx):
|
||||
def test_symbols_search(symctx):
|
||||
mod = symctx.load_file(path=u"c:\\windows\\system32\\ntdll.dll", addr=0x42000)
|
||||
res = symctx.search(u"ntdll!*CreateFile")
|
||||
assert set(s.name for s in res) == {"NtCreateFile", "ZwCreateFile"}
|
||||
assert set(s.name for s in res) >= {"NtCreateFile", "ZwCreateFile"} # May have other names
|
||||
|
||||
|
||||
def test_symbols(symctx):
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ def test_token_user(curtok):
|
||||
user_sid = curtok.user
|
||||
assert user_sid
|
||||
computername, username = windows.utils.lookup_sid(user_sid)
|
||||
assert computername == windows.system.computer_name
|
||||
assert computername.upper() == windows.system.computer_name.upper()
|
||||
assert username == os.environ["USERNAME"]
|
||||
|
||||
def test_token_id(curtok):
|
||||
|
||||
+1
-1
@@ -75,7 +75,7 @@ def test_get_object(name, cls):
|
||||
# Todo: test
|
||||
# - put_instance
|
||||
|
||||
@pytest.mark.parametrize("cmdline", [r"c:\windows\notepad.exe trolol.exe"])
|
||||
@pytest.mark.parametrize("cmdline", [r"winver.exe test_string_pfw"])
|
||||
def test_exec_method_Win32_Process_create(cmdline):
|
||||
namespace = windows.system.wmi["root\\cimv2"]
|
||||
win32_process_cls = namespace.get_object("Win32_Process")
|
||||
|
||||
@@ -69,12 +69,22 @@ class TypeInfo(interfaces.ITypeInfo):
|
||||
self.GetDocumentation(id, res, None, None, None)
|
||||
return res
|
||||
|
||||
|
||||
class MemoryIStream(gdef.IStream):
|
||||
@classmethod
|
||||
def create(cls):
|
||||
self = cls()
|
||||
windows.winproxy.CreateStreamOnHGlobal(ppstm=self)
|
||||
return self
|
||||
|
||||
def create_instance(clsiid, targetinterface, custom_iid=None, context=CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER):
|
||||
"""A simple wrapper around ``CoCreateInstance <https://msdn.microsoft.com/en-us/library/windows/desktop/ms686615(v=vs.85).aspx>``"""
|
||||
if custom_iid is None:
|
||||
custom_iid = targetinterface.IID
|
||||
if isinstance(clsiid, basestring):
|
||||
clsiid = IID.from_string(clsiid)
|
||||
if isinstance(custom_iid, basestring):
|
||||
custom_iid = IID.from_string(custom_iid)
|
||||
winproxy.CoCreateInstance(byref(clsiid), None, context, byref(custom_iid), byref(targetinterface))
|
||||
return targetinterface
|
||||
|
||||
|
||||
@@ -238,6 +238,8 @@ class SymbolType(object):
|
||||
@property
|
||||
def children(self):
|
||||
count = self.nb_children
|
||||
if count is None:
|
||||
return None
|
||||
class res_struct(ctypes.Structure):
|
||||
_fields_ = [("Count", gdef.ULONG), ("Start", gdef.ULONG), ("Types", (gdef.ULONG * count))]
|
||||
x = res_struct()
|
||||
@@ -520,7 +522,7 @@ class SymbolHandler(object):
|
||||
else:
|
||||
callback = ctypes.WINFUNCTYPE(gdef.BOOL, ctypes.POINTER(SymbolInfo), gdef.ULONG , ctypes.py_object)(callback)
|
||||
|
||||
addr = getattr(mod, "addr", mod) # Retrieve mod.addr, else us the value directly
|
||||
addr = getattr(mod, "addr", mod) # Retrieve mod.addr, else use the value directly
|
||||
windows.winproxy.SymSearchW(self.handle, gdef.DWORD64(addr), 0, tag, mask, 0, callback, res, options)
|
||||
for sym in res:
|
||||
sym.resolver = self
|
||||
|
||||
+959
-116
File diff suppressed because it is too large
Load Diff
@@ -651,11 +651,11 @@ windef = {'ABOVE_NORMAL_PRIORITY_CLASS',
|
||||
'COMPRESSION_FORMAT_NONE',
|
||||
'COMPRESSION_FORMAT_XPRESS',
|
||||
'COMPRESSION_FORMAT_XPRESS_HUFF',
|
||||
'COM_ACTIVATE_LOCAL',
|
||||
'COM_ACTIVATE_REMOTE',
|
||||
'COM_EXECUTE',
|
||||
'COM_EXECUTE_LOCAL',
|
||||
'COM_EXECUTE_REMOTE',
|
||||
'COM_RIGHTS_ACTIVATE_LOCAL',
|
||||
'COM_RIGHTS_ACTIVATE_REMOTE',
|
||||
'COM_RIGHTS_EXECUTE',
|
||||
'COM_RIGHTS_EXECUTE_LOCAL',
|
||||
'COM_RIGHTS_EXECUTE_REMOTE',
|
||||
'CONTAINER_INHERIT_ACE',
|
||||
'CONTEXT_ALL',
|
||||
'CONTEXT_AMD64',
|
||||
@@ -2288,6 +2288,11 @@ windef = {'ABOVE_NORMAL_PRIORITY_CLASS',
|
||||
'OBJECT_INHERIT_ACE',
|
||||
'OBJECT_TYPE_ALL_ACCESS',
|
||||
'OBJECT_TYPE_CREATE',
|
||||
'OBJREF_CUSTOM',
|
||||
'OBJREF_EXTENDED',
|
||||
'OBJREF_HANDLER',
|
||||
'OBJREF_SIGNATURE',
|
||||
'OBJREF_STANDARD',
|
||||
'OBJ_CASE_INSENSITIVE',
|
||||
'OBJ_EXCLUSIVE',
|
||||
'OBJ_FORCE_ACCESS_CHECK',
|
||||
@@ -2299,6 +2304,17 @@ windef = {'ABOVE_NORMAL_PRIORITY_CLASS',
|
||||
'OBJ_VALID_ATTRIBUTES',
|
||||
'OPEN_ALWAYS',
|
||||
'OPEN_EXISTING',
|
||||
'ORPCF_ASYNC',
|
||||
'ORPCF_DYNAMIC_CLOAKING',
|
||||
'ORPCF_INPUT_SYNC',
|
||||
'ORPCF_LOCAL',
|
||||
'ORPCF_NULL',
|
||||
'ORPCF_REJECTED',
|
||||
'ORPCF_RESERVED1',
|
||||
'ORPCF_RESERVED2',
|
||||
'ORPCF_RESERVED3',
|
||||
'ORPCF_RESERVED4',
|
||||
'ORPCF_RETRY_LATER',
|
||||
'OS_ADVSERVER',
|
||||
'OS_ANYSERVER',
|
||||
'OS_APPLIANCE',
|
||||
@@ -2904,6 +2920,16 @@ windef = {'ABOVE_NORMAL_PRIORITY_CLASS',
|
||||
'SOCK_RDM',
|
||||
'SOCK_SEQPACKET',
|
||||
'SOCK_STREAM',
|
||||
'SORF_NOPING',
|
||||
'SORF_NULL',
|
||||
'SORF_OXRES1',
|
||||
'SORF_OXRES2',
|
||||
'SORF_OXRES3',
|
||||
'SORF_OXRES4',
|
||||
'SORF_OXRES5',
|
||||
'SORF_OXRES6',
|
||||
'SORF_OXRES7',
|
||||
'SORF_OXRES8',
|
||||
'SPC_CAB_DATA_OBJID',
|
||||
'SPC_CERT_EXTENSIONS_OBJID',
|
||||
'SPC_COMMERCIAL_SP_KEY_PURPOSE_OBJID',
|
||||
@@ -12190,6 +12216,7 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'CERT_TRUST_LIST_INFO',
|
||||
'CERT_TRUST_STATUS',
|
||||
'CERT_USAGE_MATCH',
|
||||
'CID',
|
||||
'CLAIM_SECURITY_ATTRIBUTES_INFORMATION',
|
||||
'CLAIM_SECURITY_ATTRIBUTES_INFORMATION_UNION',
|
||||
'CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE',
|
||||
@@ -12215,6 +12242,10 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'COAUTHIDENTITY',
|
||||
'COAUTHINFO',
|
||||
'COMVERSION',
|
||||
'CONTAINERTHAT',
|
||||
'CONTAINERVERSION',
|
||||
'CONTAINER_EXTENT',
|
||||
'CONTAINER_EXTENT_ARRAY',
|
||||
'CONTEXT32',
|
||||
'CONTEXT64',
|
||||
'COSERVERINFO',
|
||||
@@ -12260,6 +12291,8 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'CTL_INFO',
|
||||
'CTL_USAGE',
|
||||
'CURDIR',
|
||||
'ContextProperty',
|
||||
'DATAELEMENT',
|
||||
'DATA_BLOB',
|
||||
'DEBUG_BREAKPOINT_PARAMETERS',
|
||||
'DEBUG_EVENT',
|
||||
@@ -12352,6 +12385,7 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'DNS_WINSR_DATAW',
|
||||
'DNS_WINS_DATA',
|
||||
'DNS_WKS_DATA',
|
||||
'DUALSTRINGARRAY',
|
||||
'ELEMDESC',
|
||||
'ENABLE_TRACE_PARAMETERS',
|
||||
'ENUM_SERVICE_STATUSA',
|
||||
@@ -12428,6 +12462,7 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'GROUP_USERS_INFO_0',
|
||||
'GROUP_USERS_INFO_1',
|
||||
'GUID',
|
||||
'HSTRING__',
|
||||
'IDLDESC',
|
||||
'IID',
|
||||
'IMAGEHLP_CBA_EVENT',
|
||||
@@ -12469,6 +12504,7 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'IO_Resource_s',
|
||||
'IO_STATUS_BLOCK',
|
||||
'IP6_ADDRESS',
|
||||
'IPID',
|
||||
'IP_ADAPTER_INDEX_MAP',
|
||||
'IP_ADAPTER_INFO',
|
||||
'IP_ADDRESS_STRING',
|
||||
@@ -12505,7 +12541,10 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'LOCALGROUP_MEMBERS_INFO_1',
|
||||
'LOCALGROUP_MEMBERS_INFO_2',
|
||||
'LOCALGROUP_MEMBERS_INFO_3',
|
||||
'LOCALTHAT',
|
||||
'LOCALTHAT32',
|
||||
'LOCALTHIS',
|
||||
'LOCALTHIS32',
|
||||
'LPADDRESS',
|
||||
'LPADDRESS64',
|
||||
'LPBINDPTR',
|
||||
@@ -12646,7 +12685,9 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'MIB_UDP6TABLE_OWNER_PID',
|
||||
'MIB_UDPROW_OWNER_PID',
|
||||
'MIB_UDPTABLE_OWNER_PID',
|
||||
'MIDL_ILocalObjectExporter_0007',
|
||||
'MIDL_XmitDefs_0001',
|
||||
'MInterfacePointer',
|
||||
'MODLOAD_DATA',
|
||||
'MULTI_QI',
|
||||
'Mem_Des_s',
|
||||
@@ -12668,8 +12709,15 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'OBJECT_ATTRIBUTES',
|
||||
'OBJECT_DIRECTORY_INFORMATION',
|
||||
'OBJECT_TYPES_INFORMATION',
|
||||
'OBJREF',
|
||||
'OBJREFDATA',
|
||||
'OPEN_VIRTUAL_DISK_PARAMETERS',
|
||||
'ORPCTHAT',
|
||||
'ORPCTHAT32',
|
||||
'ORPCTHIS',
|
||||
'ORPCTHIS32',
|
||||
'ORPC_EXTENT',
|
||||
'ORPC_EXTENT_ARRAY',
|
||||
'OSVERSIONINFOA',
|
||||
'OSVERSIONINFOEXA',
|
||||
'OSVERSIONINFOEXW',
|
||||
@@ -12677,6 +12725,8 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'OUTPUT_DEBUG_STRING_INFO',
|
||||
'OVERLAPPED',
|
||||
'OVERLAPPED_ENTRY',
|
||||
'OXID_INFO',
|
||||
'OpaqueData',
|
||||
'PACCESS_ALLOWED_ACE',
|
||||
'PACCESS_ALLOWED_CALLBACK_ACE',
|
||||
'PACCESS_ALLOWED_CALLBACK_OBJECT_ACE',
|
||||
@@ -12826,6 +12876,7 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'PCTL_INFO',
|
||||
'PCTL_USAGE',
|
||||
'PCURDIR',
|
||||
'PDATAELEMENT',
|
||||
'PDATA_BLOB',
|
||||
'PDEBUG_BREAKPOINT_PARAMETERS',
|
||||
'PDEBUG_EXCEPTION_FILTER_PARAMETERS',
|
||||
@@ -13074,6 +13125,7 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'PMIB_UDP6TABLE_OWNER_PID',
|
||||
'PMIB_UDPROW_OWNER_PID',
|
||||
'PMIB_UDPTABLE_OWNER_PID',
|
||||
'PMInterfacePointer',
|
||||
'PMODLOAD_DATA',
|
||||
'PNET_DISPLAY_GROUP',
|
||||
'PNET_DISPLAY_MACHINE',
|
||||
@@ -13088,6 +13140,7 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'POLICY_LSA_SERVER_ROLE_INFO',
|
||||
'POLICY_PRIMARY_DOMAIN_INFO',
|
||||
'POPEN_VIRTUAL_DISK_PARAMETERS',
|
||||
'PORPC_EXTENT',
|
||||
'PORT_MESSAGE32',
|
||||
'PORT_MESSAGE32_TMP_UNION',
|
||||
'PORT_MESSAGE64',
|
||||
@@ -13108,6 +13161,8 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'PPORT_MESSAGE64',
|
||||
'PPORT_VIEW',
|
||||
'PPRIVILEGE_SET',
|
||||
'PPRIV_RESOLVER_INFO',
|
||||
'PPRIV_RESOLVER_INFO_LEGACY',
|
||||
'PPROCESSENTRY32',
|
||||
'PPROCESSENTRY32W',
|
||||
'PPROCESS_BASIC_INFORMATION',
|
||||
@@ -13139,8 +13194,13 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'PPUBLIC_OBJECT_BASIC_INFORMATION',
|
||||
'PPUBLIC_OBJECT_TYPE_INFORMATION',
|
||||
'PREMOTE_PORT_VIEW',
|
||||
'PREMOTE_REPLY_SCM_INFO',
|
||||
'PREMQIRESULT',
|
||||
'PRGBTRIPLE',
|
||||
'PRIVILEGE_SET',
|
||||
'PRIV_RESOLVER_INFO',
|
||||
'PRIV_RESOLVER_INFO_LEGACY',
|
||||
'PRIV_SCM_INFO',
|
||||
'PRLIST_ENTRY',
|
||||
'PROCESSENTRY32',
|
||||
'PROCESSENTRY32W',
|
||||
@@ -13160,6 +13220,7 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY',
|
||||
'PROPERTYKEY',
|
||||
'PROVIDER_ENUMERATION_INFO',
|
||||
'PRPCOLEMESSAGE',
|
||||
'PRTLP_CURDIR_REF',
|
||||
'PRTL_DRIVE_LETTER_CURDIR',
|
||||
'PRTL_OSVERSIONINFOEXW',
|
||||
@@ -13292,11 +13353,17 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'REFCLSID',
|
||||
'REFGUID',
|
||||
'REFIID',
|
||||
'REFIPID',
|
||||
'REFPROPERTYKEY',
|
||||
'REMINTERFACEREF',
|
||||
'REMOTE_PORT_VIEW',
|
||||
'REMOTE_REPLY_SCM_INFO',
|
||||
'REMOTE_REQUEST_SCM_INFO',
|
||||
'REMQIRESULT',
|
||||
'RGBQUAD',
|
||||
'RGBTRIPLE',
|
||||
'RIP_INFO',
|
||||
'RPCOLEMESSAGE',
|
||||
'RPC_IF_ID',
|
||||
'RTLP_CURDIR_REF',
|
||||
'RTL_DRIVE_LETTER_CURDIR',
|
||||
@@ -13340,6 +13407,7 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'STARTUPINFOEXW',
|
||||
'STARTUPINFOW',
|
||||
'STATSTG',
|
||||
'STDOBJREF',
|
||||
'STRING',
|
||||
'STRUCT_PLAINTEXTKEYBLOB',
|
||||
'SYMBOL_INFO',
|
||||
@@ -13388,7 +13456,6 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'TMP_SPC_LINK_UNION',
|
||||
'TMP_TYPEDESC_UNION',
|
||||
'TMP_UNION_DEBUG_INFO',
|
||||
'TMP_UNION_IO_STATUS_BLOCK',
|
||||
'TMP_VARDESC_UNION',
|
||||
'TMP_WINTRUST_UNION_TYPE',
|
||||
'TMP_lowmid_union',
|
||||
@@ -13772,7 +13839,10 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'_LOCALGROUP_MEMBERS_INFO_1',
|
||||
'_LOCALGROUP_MEMBERS_INFO_2',
|
||||
'_LOCALGROUP_MEMBERS_INFO_3',
|
||||
'_LOCALTHAT',
|
||||
'_LOCALTHAT32',
|
||||
'_LOCALTHIS',
|
||||
'_LOCALTHIS32',
|
||||
'_LSA_OBJECT_ATTRIBUTES',
|
||||
'_LSA_REFERENCED_DOMAIN_LIST',
|
||||
'_LSA_TRANSLATED_NAME',
|
||||
@@ -13802,6 +13872,12 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'_MIB_UDP6TABLE_OWNER_PID',
|
||||
'_MIB_UDPROW_OWNER_PID',
|
||||
'_MIB_UDPTABLE_OWNER_PID',
|
||||
'_MIDL_ILocalObjectExporter_0007',
|
||||
'_MIDL_XmitDefs_0001',
|
||||
'_MIDL_XmitDefs_0005',
|
||||
'_MIDL_XmitDefs_0007',
|
||||
'_MIDL_XmitDefs_0008',
|
||||
'_MIDL_XmitDefs_0010',
|
||||
'_MODLOAD_DATA',
|
||||
'_NET_DISPLAY_GROUP',
|
||||
'_NET_DISPLAY_MACHINE',
|
||||
@@ -13836,6 +13912,9 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'_PORT_MESSAGE_TMP_UNION_U2',
|
||||
'_PORT_VIEW',
|
||||
'_PRIVILEGE_SET',
|
||||
'_PRIV_RESOLVER_INFO',
|
||||
'_PRIV_RESOLVER_INFO_LEGACY',
|
||||
'_PRIV_SCM_INFO',
|
||||
'_PROCESS_BASIC_INFORMATION',
|
||||
'_PROCESS_INFORMATION',
|
||||
'_PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION',
|
||||
@@ -13868,6 +13947,8 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'_QUERY_SERVICE_CONFIGA',
|
||||
'_QUERY_SERVICE_CONFIGW',
|
||||
'_REMOTE_PORT_VIEW',
|
||||
'_REMOTE_REPLY_SCM_INFO',
|
||||
'_REMOTE_REQUEST_SCM_INFO',
|
||||
'_RIP_INFO',
|
||||
'_RPC_IF_ID',
|
||||
'_RTLP_CURDIR_REF',
|
||||
@@ -13942,7 +14023,6 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'_TMP_SPC_LINK_UNION',
|
||||
'_TMP_TYPEDESC_UNION',
|
||||
'_TMP_UNION_DEBUG_INFO',
|
||||
'_TMP_UNION_IO_STATUS_BLOCK',
|
||||
'_TMP_VARDESC_UNION',
|
||||
'_TMP_WINTRUST_UNION_TYPE',
|
||||
'_TMP_lowmid',
|
||||
@@ -14002,7 +14082,6 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'_XSTATE_FEATURE',
|
||||
'__MIDL_IBackgroundCopyJob2_0003',
|
||||
'__MIDL_IBackgroundCopyJob2_0004',
|
||||
'__MIDL_XmitDefs_0001',
|
||||
'__PUBLIC_OBJECT_TYPE_INFORMATION',
|
||||
'__tagBRECORD',
|
||||
'__tagVARIANT',
|
||||
@@ -14029,24 +14108,40 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
'tagBITMAPINFO',
|
||||
'tagBITMAPINFOHEADER',
|
||||
'tagCOMVERSION',
|
||||
'tagContextProperty',
|
||||
'tagDATAELEMENT',
|
||||
'tagDEC',
|
||||
'tagDISPPARAMS',
|
||||
'tagDUALSTRINGARRAY',
|
||||
'tagELEMDESC',
|
||||
'tagEXCEPINFO',
|
||||
'tagFUNCDESC',
|
||||
'tagIDLDESC',
|
||||
'tagMInterfacePointer',
|
||||
'tagMULTI_QI',
|
||||
'tagOBJREF',
|
||||
'tagOBJREFDATA',
|
||||
'tagORPCTHAT',
|
||||
'tagORPCTHIS',
|
||||
'tagORPCTHIS32',
|
||||
'tagORPC_EXTENT',
|
||||
'tagORPC_EXTENT_ARRAY',
|
||||
'tagOXID_INFO',
|
||||
'tagOpaqueData',
|
||||
'tagPARAMDESC',
|
||||
'tagPARAMDESCEX',
|
||||
'tagPROCESSENTRY32',
|
||||
'tagPROCESSENTRY32W',
|
||||
'tagREMINTERFACEREF',
|
||||
'tagREMQIRESULT',
|
||||
'tagRGBQUAD',
|
||||
'tagRGBTRIPLE',
|
||||
'tagRPCOLEMESSAGE',
|
||||
'tagSAFEARRAY',
|
||||
'tagSAFEARRAYBOUND',
|
||||
'tagSOLE_AUTHENTICATION_SERVICE',
|
||||
'tagSTATSTG',
|
||||
'tagSTDOBJREF',
|
||||
'tagTHREADENTRY32',
|
||||
'tagTLIBATTR',
|
||||
'tagTYPEATTR',
|
||||
@@ -14059,6 +14154,7 @@ structs = {'ACCESS_ALLOWED_ACE',
|
||||
enums = {'ACCESS_MODE',
|
||||
'ACL_INFORMATION_CLASS',
|
||||
'ACTIVATEOPTIONS',
|
||||
'ACTIVATION_STAGE',
|
||||
'ADDRESS_MODE',
|
||||
'ALPC_MESSAGE_INFORMATION_CLASS',
|
||||
'ALPC_PORT_INFORMATION_CLASS',
|
||||
@@ -14081,6 +14177,7 @@ enums = {'ACCESS_MODE',
|
||||
'COINIT',
|
||||
'COMPUTER_NAME_FORMAT',
|
||||
'COMSD',
|
||||
'CPFLAGS',
|
||||
'DESCKIND',
|
||||
'DNS_FREE_TYPE',
|
||||
'DataKind',
|
||||
@@ -14112,9 +14209,11 @@ enums = {'ACCESS_MODE',
|
||||
'IO_PRIORITY_HINT',
|
||||
'KEY_INFORMATION_CLASS',
|
||||
'KEY_VALUE_INFORMATION_CLASS',
|
||||
'LocalServerType',
|
||||
'MEMORY_INFORMATION_CLASS',
|
||||
'MEM_EXTENDED_PARAMETER_TYPE',
|
||||
'MIB_TCP_STATE',
|
||||
'MSHCTX',
|
||||
'MSHLFLAGS',
|
||||
'MULTIPLE_TRUSTEE_OPERATION',
|
||||
'NDR_FORMAT_CHARACTER',
|
||||
@@ -14162,6 +14261,7 @@ enums = {'ACCESS_MODE',
|
||||
'SICHINTF',
|
||||
'SID_NAME_USE',
|
||||
'SIGDN',
|
||||
'STREAM_SEEK',
|
||||
'SYM_TYPE',
|
||||
'SYSKIND',
|
||||
'SYSTEM_INFORMATION_CLASS',
|
||||
@@ -14186,6 +14286,7 @@ enums = {'ACCESS_MODE',
|
||||
'TRUSTEE_FORM',
|
||||
'TRUSTEE_TYPE',
|
||||
'TYPEKIND',
|
||||
'ThreadingModel',
|
||||
'UDP_TABLE_CLASS',
|
||||
'UdtKind',
|
||||
'VARENUM',
|
||||
@@ -14283,18 +14384,24 @@ enums = {'ACCESS_MODE',
|
||||
'_WELL_KNOWN_SID_TYPE',
|
||||
'__MIDL_IBackgroundCopyJob2_0001',
|
||||
'__MIDL_IBackgroundCopyJob2_0002',
|
||||
'tagACTIVATION_STAGE',
|
||||
'tagCALLCONV',
|
||||
'tagCALLFRAME_WALK',
|
||||
'tagCLSCTX',
|
||||
'tagCOINIT',
|
||||
'tagCOMSD',
|
||||
'tagCPFLAGS',
|
||||
'tagDESCKIND',
|
||||
'tagFUNCKIND',
|
||||
'tagINVOKEKIND',
|
||||
'tagLocalServerType',
|
||||
'tagMSHCTX',
|
||||
'tagMSHLFLAGS',
|
||||
'tagSTREAM_SEEK',
|
||||
'tagSYSKIND',
|
||||
'tagTOKEN_TYPE',
|
||||
'tagTYPEKIND',
|
||||
'tagThreadingModel',
|
||||
'tagVARKIND',
|
||||
'tag_WBEMSTATUS',
|
||||
'tag_WBEM_CHANGE_FLAG_TYPE',
|
||||
@@ -14386,7 +14493,9 @@ functions = {'AccessCheck',
|
||||
'CoGetInterceptor',
|
||||
'CoInitializeEx',
|
||||
'CoInitializeSecurity',
|
||||
'CoMarshalInterface',
|
||||
'CoTaskMemFree',
|
||||
'CoUnmarshalInterface',
|
||||
'CommitTransaction',
|
||||
'ConnectNamedPipe',
|
||||
'ContinueDebugEvent',
|
||||
@@ -14425,6 +14534,7 @@ functions = {'AccessCheck',
|
||||
'CreateRemoteThread',
|
||||
'CreateServiceA',
|
||||
'CreateServiceW',
|
||||
'CreateStreamOnHGlobal',
|
||||
'CreateThread',
|
||||
'CreateToolhelp32Snapshot',
|
||||
'CreateTransaction',
|
||||
@@ -14616,6 +14726,7 @@ functions = {'AccessCheck',
|
||||
'GetFirmwareEnvironmentVariableExW',
|
||||
'GetFirmwareEnvironmentVariableW',
|
||||
'GetForegroundWindow',
|
||||
'GetHGlobalFromStream',
|
||||
'GetIfTable',
|
||||
'GetInterfaceInfo',
|
||||
'GetIpAddrTable',
|
||||
@@ -15031,6 +15142,7 @@ functions = {'AccessCheck',
|
||||
'SymEnumTypes',
|
||||
'SymEnumTypesByName',
|
||||
'SymEnumTypesByNameW',
|
||||
'SymEnumTypesW',
|
||||
'SymEnumerateModules64',
|
||||
'SymEnumerateModulesW64',
|
||||
'SymFromAddr',
|
||||
@@ -15144,6 +15256,10 @@ functions = {'AccessCheck',
|
||||
|
||||
interfaces = {'IAction',
|
||||
'IActionCollection',
|
||||
'IActivationProperties',
|
||||
'IActivationPropertiesIn',
|
||||
'IActivationPropertiesOut',
|
||||
'IActivationStageInfo',
|
||||
'IApplicationActivationManager',
|
||||
'IBackgroundCopyCallback',
|
||||
'IBackgroundCopyError',
|
||||
@@ -15154,17 +15270,27 @@ interfaces = {'IAction',
|
||||
'IBackgroundCopyJob2',
|
||||
'IBackgroundCopyManager',
|
||||
'IBindCtx',
|
||||
'ICallFactory',
|
||||
'ICallFrame',
|
||||
'ICallFrameEvents',
|
||||
'ICallFrameWalker',
|
||||
'ICallInterceptor',
|
||||
'IChannelHook',
|
||||
'IClassClassicInfo',
|
||||
'IClassFactory',
|
||||
'IClientSecurity',
|
||||
'IComCatalog',
|
||||
'IComClassInfo',
|
||||
'IComHandlerAction',
|
||||
'IContext',
|
||||
'IDispatch',
|
||||
'IEmailAction',
|
||||
'IEnumBackgroundCopyFiles',
|
||||
'IEnumBackgroundCopyJobs',
|
||||
'IEnumContextProps',
|
||||
'IEnumExplorerCommand',
|
||||
'IEnumMoniker',
|
||||
'IEnumSTATSTG',
|
||||
'IEnumShellItems',
|
||||
'IEnumString',
|
||||
'IEnumVARIANT',
|
||||
@@ -15172,30 +15298,50 @@ interfaces = {'IAction',
|
||||
'IExecAction',
|
||||
'IExplorerCommand',
|
||||
'IIdleSettings',
|
||||
'IInitActivationPropertiesIn',
|
||||
'IInternalUnknown',
|
||||
'IMarshal',
|
||||
'IMoniker',
|
||||
'INetFwPolicy2',
|
||||
'INetFwRule',
|
||||
'INetFwRules',
|
||||
'INetFwServiceRestriction',
|
||||
'INetworkSettings',
|
||||
'IObjContext',
|
||||
'IOpaqueDataInfo',
|
||||
'IPackageDebugSettings',
|
||||
'IPackageExecutionStateChangeNotification',
|
||||
'IPersist',
|
||||
'IPersistFile',
|
||||
'IPrincipal',
|
||||
'IPrivActivationPropertiesIn',
|
||||
'IPrivActivationPropertiesOut',
|
||||
'IProxyManager',
|
||||
'IProxyServerIdentity',
|
||||
'IRegisteredTask',
|
||||
'IRegisteredTaskCollection',
|
||||
'IRegistrationInfo',
|
||||
'IRemUnknown',
|
||||
'IRepetitionPattern',
|
||||
'IRpcChannelBuffer',
|
||||
'IRpcHelper',
|
||||
'IRpcOptions',
|
||||
'IRpcStubBuffer',
|
||||
'IRunningObjectTable',
|
||||
'IRunningTask',
|
||||
'IRunningTaskCollection',
|
||||
'IScmReplyInfo',
|
||||
'IScmRequestInfo',
|
||||
'IShellItem',
|
||||
'IShellItemArray',
|
||||
'IShellLinkA',
|
||||
'IShellLinkW',
|
||||
'IShowMessageAction',
|
||||
'IStandardActivator',
|
||||
'IStdIdentity',
|
||||
'IStorage',
|
||||
'IStream',
|
||||
'ISystemActivator',
|
||||
'ITaskDefinition',
|
||||
'ITaskFolder',
|
||||
'ITaskFolderCollection',
|
||||
|
||||
@@ -143,6 +143,32 @@ CR_INVALID_STRUCTURE_SIZE = make_flag("CR_INVALID_STRUCTURE_SIZE", ( 0x0000003B
|
||||
NUM_CR_RESULTS = make_flag("NUM_CR_RESULTS", ( 0x0000003C ))
|
||||
PCD_MAX_MEMORY = make_flag("PCD_MAX_MEMORY", 2)
|
||||
PCD_MAX_IO = make_flag("PCD_MAX_IO", 2)
|
||||
ORPCF_NULL = make_flag("ORPCF_NULL", ( 0 ))
|
||||
ORPCF_LOCAL = make_flag("ORPCF_LOCAL", ( 1 ))
|
||||
ORPCF_RESERVED1 = make_flag("ORPCF_RESERVED1", ( 2 ))
|
||||
ORPCF_RESERVED2 = make_flag("ORPCF_RESERVED2", ( 4 ))
|
||||
ORPCF_RESERVED3 = make_flag("ORPCF_RESERVED3", ( 8 ))
|
||||
ORPCF_RESERVED4 = make_flag("ORPCF_RESERVED4", ( 16 ))
|
||||
ORPCF_INPUT_SYNC = make_flag("ORPCF_INPUT_SYNC", ORPCF_RESERVED1)
|
||||
ORPCF_ASYNC = make_flag("ORPCF_ASYNC", ORPCF_RESERVED2)
|
||||
ORPCF_DYNAMIC_CLOAKING = make_flag("ORPCF_DYNAMIC_CLOAKING", ORPCF_RESERVED3)
|
||||
ORPCF_REJECTED = make_flag("ORPCF_REJECTED", ORPCF_RESERVED1)
|
||||
ORPCF_RETRY_LATER = make_flag("ORPCF_RETRY_LATER", ORPCF_RESERVED2)
|
||||
OBJREF_SIGNATURE = make_flag("OBJREF_SIGNATURE", ( 0x574f454d ))
|
||||
OBJREF_STANDARD = make_flag("OBJREF_STANDARD", ( 0x1 ))
|
||||
OBJREF_HANDLER = make_flag("OBJREF_HANDLER", ( 0x2 ))
|
||||
OBJREF_CUSTOM = make_flag("OBJREF_CUSTOM", ( 0x4 ))
|
||||
OBJREF_EXTENDED = make_flag("OBJREF_EXTENDED", ( 0x8 ))
|
||||
SORF_OXRES1 = make_flag("SORF_OXRES1", ( 0x1 ))
|
||||
SORF_OXRES2 = make_flag("SORF_OXRES2", ( 0x20 ))
|
||||
SORF_OXRES3 = make_flag("SORF_OXRES3", ( 0x40 ))
|
||||
SORF_OXRES4 = make_flag("SORF_OXRES4", ( 0x80 ))
|
||||
SORF_OXRES5 = make_flag("SORF_OXRES5", ( 0x100 ))
|
||||
SORF_OXRES6 = make_flag("SORF_OXRES6", ( 0x200 ))
|
||||
SORF_OXRES7 = make_flag("SORF_OXRES7", ( 0x400 ))
|
||||
SORF_OXRES8 = make_flag("SORF_OXRES8", ( 0x800 ))
|
||||
SORF_NULL = make_flag("SORF_NULL", ( 0 ))
|
||||
SORF_NOPING = make_flag("SORF_NOPING", ( 0x1000 ))
|
||||
CWCSTORAGENAME = make_flag("CWCSTORAGENAME", 32)
|
||||
STGM_DIRECT = make_flag("STGM_DIRECT", 0x00000000)
|
||||
STGM_TRANSACTED = make_flag("STGM_TRANSACTED", 0x00010000)
|
||||
@@ -2410,11 +2436,11 @@ FAX_CONFIG_SET = make_flag("FAX_CONFIG_SET", ( 0x0008 ))
|
||||
FAX_PORT_QUERY = make_flag("FAX_PORT_QUERY", ( 0x0010 ))
|
||||
FAX_PORT_SET = make_flag("FAX_PORT_SET", ( 0x0020 ))
|
||||
FAX_JOB_MANAGE = make_flag("FAX_JOB_MANAGE", ( 0x0040 ))
|
||||
COM_EXECUTE = make_flag("COM_EXECUTE", ( 0x0001 ))
|
||||
COM_EXECUTE_LOCAL = make_flag("COM_EXECUTE_LOCAL", ( 0x0002 ))
|
||||
COM_EXECUTE_REMOTE = make_flag("COM_EXECUTE_REMOTE", ( 0x0004 ))
|
||||
COM_ACTIVATE_LOCAL = make_flag("COM_ACTIVATE_LOCAL", ( 0x0008 ))
|
||||
COM_ACTIVATE_REMOTE = make_flag("COM_ACTIVATE_REMOTE", ( 0x0010 ))
|
||||
COM_RIGHTS_EXECUTE = make_flag("COM_RIGHTS_EXECUTE", ( 0x0001 ))
|
||||
COM_RIGHTS_EXECUTE_LOCAL = make_flag("COM_RIGHTS_EXECUTE_LOCAL", ( 0x0002 ))
|
||||
COM_RIGHTS_EXECUTE_REMOTE = make_flag("COM_RIGHTS_EXECUTE_REMOTE", ( 0x0004 ))
|
||||
COM_RIGHTS_ACTIVATE_LOCAL = make_flag("COM_RIGHTS_ACTIVATE_LOCAL", ( 0x0008 ))
|
||||
COM_RIGHTS_ACTIVATE_REMOTE = make_flag("COM_RIGHTS_ACTIVATE_REMOTE", ( 0x0010 ))
|
||||
SECTION_QUERY = make_flag("SECTION_QUERY", 0x0001)
|
||||
SECTION_MAP_WRITE = make_flag("SECTION_MAP_WRITE", 0x0002)
|
||||
SECTION_MAP_READ = make_flag("SECTION_MAP_READ", 0x0004)
|
||||
|
||||
@@ -405,6 +405,26 @@ SysAllocStringParams = ((1, 'psz'),)
|
||||
SysFreeStringPrototype = WINFUNCTYPE(VOID, BSTR)
|
||||
SysFreeStringParams = ((1, 'bstrString'),)
|
||||
|
||||
#def CreateStreamOnHGlobal(hGlobal, fDeleteOnRelease, ppstm):
|
||||
# return CreateStreamOnHGlobal.ctypes_function(hGlobal, fDeleteOnRelease, ppstm)
|
||||
CreateStreamOnHGlobalPrototype = WINFUNCTYPE(HRESULT, HGLOBAL, BOOL, POINTER(LPSTREAM))
|
||||
CreateStreamOnHGlobalParams = ((1, 'hGlobal'), (1, 'fDeleteOnRelease'), (1, 'ppstm'))
|
||||
|
||||
#def GetHGlobalFromStream(pstm, phglobal):
|
||||
# return GetHGlobalFromStream.ctypes_function(pstm, phglobal)
|
||||
GetHGlobalFromStreamPrototype = WINFUNCTYPE(HRESULT, LPUNKNOWN, POINTER(HGLOBAL))
|
||||
GetHGlobalFromStreamParams = ((1, 'pstm'), (1, 'phglobal'))
|
||||
|
||||
#def CoMarshalInterface(pStm, riid, pUnk, dwDestContext, pvDestContext, mshlflags):
|
||||
# return CoMarshalInterface.ctypes_function(pStm, riid, pUnk, dwDestContext, pvDestContext, mshlflags)
|
||||
CoMarshalInterfacePrototype = WINFUNCTYPE(HRESULT, LPUNKNOWN, REFIID, LPUNKNOWN, DWORD, LPVOID, DWORD)
|
||||
CoMarshalInterfaceParams = ((1, 'pStm'), (1, 'riid'), (1, 'pUnk'), (1, 'dwDestContext'), (1, 'pvDestContext'), (1, 'mshlflags'))
|
||||
|
||||
#def CoUnmarshalInterface(pStm, riid, ppv):
|
||||
# return CoUnmarshalInterface.ctypes_function(pStm, riid, ppv)
|
||||
CoUnmarshalInterfacePrototype = WINFUNCTYPE(HRESULT, PVOID, REFIID, POINTER(LPVOID))
|
||||
CoUnmarshalInterfaceParams = ((1, 'pStm'), (1, 'riid'), (1, 'ppv'))
|
||||
|
||||
#def CryptCATAdminCalcHashFromFileHandle(hFile, pcbHash, pbHash, dwFlags):
|
||||
# return CryptCATAdminCalcHashFromFileHandle.ctypes_function(hFile, pcbHash, pbHash, dwFlags)
|
||||
CryptCATAdminCalcHashFromFileHandlePrototype = WINFUNCTYPE(BOOL, HANDLE, POINTER(DWORD), POINTER(BYTE), DWORD)
|
||||
@@ -2440,21 +2460,6 @@ SymEnumSymbolsParams = ((1, 'hProcess'), (1, 'BaseOfDll'), (1, 'Mask'), (1, 'Enu
|
||||
SymEnumSymbolsExPrototype = WINFUNCTYPE(BOOL, HANDLE, ULONG64, PCSTR, PVOID, PVOID, DWORD)
|
||||
SymEnumSymbolsExParams = ((1, 'hProcess'), (1, 'BaseOfDll'), (1, 'Mask'), (1, 'EnumSymbolsCallback'), (1, 'UserContext'), (1, 'Options'))
|
||||
|
||||
#def SymEnumTypes(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext):
|
||||
# return SymEnumTypes.ctypes_function(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
||||
SymEnumTypesPrototype = WINFUNCTYPE(BOOL, HANDLE, ULONG64, PVOID, PVOID)
|
||||
SymEnumTypesParams = ((1, 'hProcess'), (1, 'BaseOfDll'), (1, 'EnumSymbolsCallback'), (1, 'UserContext'))
|
||||
|
||||
#def SymEnumTypesByName(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext):
|
||||
# return SymEnumTypesByName.ctypes_function(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext)
|
||||
SymEnumTypesByNamePrototype = WINFUNCTYPE(BOOL, HANDLE, ULONG64, PCSTR, PVOID, PVOID)
|
||||
SymEnumTypesByNameParams = ((1, 'hProcess'), (1, 'BaseOfDll'), (1, 'mask'), (1, 'EnumSymbolsCallback'), (1, 'UserContext'))
|
||||
|
||||
#def SymEnumTypesByNameW(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext):
|
||||
# return SymEnumTypesByNameW.ctypes_function(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext)
|
||||
SymEnumTypesByNameWPrototype = WINFUNCTYPE(BOOL, HANDLE, ULONG64, PCWSTR, PVOID, PVOID)
|
||||
SymEnumTypesByNameWParams = ((1, 'hProcess'), (1, 'BaseOfDll'), (1, 'mask'), (1, 'EnumSymbolsCallback'), (1, 'UserContext'))
|
||||
|
||||
#def SymEnumerateModules64(hProcess, EnumModulesCallback, UserContext):
|
||||
# return SymEnumerateModules64.ctypes_function(hProcess, EnumModulesCallback, UserContext)
|
||||
SymEnumerateModules64Prototype = WINFUNCTYPE(BOOL, HANDLE, PVOID, PVOID)
|
||||
@@ -2675,6 +2680,26 @@ SymSetSearchPathParams = ((1, 'hProcess'), (1, 'SearchPath'))
|
||||
SymSetSearchPathWPrototype = WINFUNCTYPE(BOOL, HANDLE, PCWSTR)
|
||||
SymSetSearchPathWParams = ((1, 'hProcess'), (1, 'SearchPath'))
|
||||
|
||||
#def SymEnumTypes(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext):
|
||||
# return SymEnumTypes.ctypes_function(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
||||
SymEnumTypesPrototype = WINFUNCTYPE(BOOL, HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID)
|
||||
SymEnumTypesParams = ((1, 'hProcess'), (1, 'BaseOfDll'), (1, 'EnumSymbolsCallback'), (1, 'UserContext'))
|
||||
|
||||
#def SymEnumTypesW(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext):
|
||||
# return SymEnumTypesW.ctypes_function(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
||||
SymEnumTypesWPrototype = WINFUNCTYPE(BOOL, HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID)
|
||||
SymEnumTypesWParams = ((1, 'hProcess'), (1, 'BaseOfDll'), (1, 'EnumSymbolsCallback'), (1, 'UserContext'))
|
||||
|
||||
#def SymEnumTypesByName(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext):
|
||||
# return SymEnumTypesByName.ctypes_function(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext)
|
||||
SymEnumTypesByNamePrototype = WINFUNCTYPE(BOOL, HANDLE, ULONG64, PCSTR, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID)
|
||||
SymEnumTypesByNameParams = ((1, 'hProcess'), (1, 'BaseOfDll'), (1, 'mask'), (1, 'EnumSymbolsCallback'), (1, 'UserContext'))
|
||||
|
||||
#def SymEnumTypesByNameW(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext):
|
||||
# return SymEnumTypesByNameW.ctypes_function(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext)
|
||||
SymEnumTypesByNameWPrototype = WINFUNCTYPE(BOOL, HANDLE, ULONG64, PCWSTR, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID)
|
||||
SymEnumTypesByNameWParams = ((1, 'hProcess'), (1, 'BaseOfDll'), (1, 'mask'), (1, 'EnumSymbolsCallback'), (1, 'UserContext'))
|
||||
|
||||
#def CreateEventA(lpEventAttributes, bManualReset, bInitialState, lpName):
|
||||
# return CreateEventA.ctypes_function(lpEventAttributes, bManualReset, bInitialState, lpName)
|
||||
CreateEventAPrototype = WINFUNCTYPE(HANDLE, LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR)
|
||||
|
||||
@@ -93,6 +93,7 @@ LPCH = c_char_p
|
||||
LPWCH = c_wchar
|
||||
BSTR = c_wchar_p
|
||||
OLECHAR = c_wchar
|
||||
SNB = POINTER(POINTER(OLECHAR))
|
||||
POLECHAR = c_wchar_p
|
||||
PZZWSTR = c_wchar_p
|
||||
PUCHAR = POINTER(UCHAR)
|
||||
@@ -128,7 +129,7 @@ ALG_ID = UINT
|
||||
DISPID = LONG
|
||||
MEMBERID = DISPID
|
||||
LRESULT = LONG_PTR
|
||||
LPUNKNOWN = POINTER(PVOID)
|
||||
LPUNKNOWN = PVOID
|
||||
LPPOINT = POINTER(POINT)
|
||||
LPRECT = POINTER(RECT)
|
||||
SPC_UUID = BYTE*16
|
||||
@@ -137,6 +138,8 @@ PWINDBG_EXTENSION_APIS32 = PVOID
|
||||
PWINDBG_EXTENSION_APIS64 = PVOID
|
||||
FILEOP_FLAGS = WORD
|
||||
NET_API_STATUS = DWORD
|
||||
PVOID32 = DWORD
|
||||
PVOID64 = DWORD64
|
||||
NCRYPT_HANDLE = ULONG_PTR
|
||||
NCRYPT_PROV_HANDLE = ULONG_PTR
|
||||
NCRYPT_KEY_HANDLE = ULONG_PTR
|
||||
@@ -253,6 +256,12 @@ DEVINSTID_W = LPWSTR
|
||||
RPCOLEDATAREP = ULONG
|
||||
HREFTYPE = DWORD
|
||||
SFGAOF = ULONG
|
||||
ID = ULONG64
|
||||
MID = ID
|
||||
OXID = ID
|
||||
OID = ID
|
||||
SETID = ID
|
||||
LPSTREAM = PVOID#Istream*
|
||||
GROUP = UINT
|
||||
SOCKET = HANDLE
|
||||
WNDPROC = PVOID
|
||||
@@ -473,15 +482,18 @@ class _GUID(Structure):
|
||||
("Data3", USHORT),
|
||||
("Data4", BYTE * (8)),
|
||||
]
|
||||
CID = _GUID
|
||||
CLSID = _GUID
|
||||
GUID = _GUID
|
||||
IID = _GUID
|
||||
IPID = _GUID
|
||||
LPCGUID = POINTER(_GUID)
|
||||
LPCLSID = POINTER(_GUID)
|
||||
LPGUID = POINTER(_GUID)
|
||||
REFCLSID = POINTER(_GUID)
|
||||
REFGUID = POINTER(_GUID)
|
||||
REFIID = POINTER(_GUID)
|
||||
REFIPID = POINTER(_GUID)
|
||||
|
||||
INITIAL_GUID = _GUID
|
||||
class _GUID(INITIAL_GUID):
|
||||
@@ -507,7 +519,7 @@ class _GUID(INITIAL_GUID):
|
||||
self.name = None
|
||||
if self.name is None:
|
||||
return '<GUID "{0}">'.format(self.strid.upper())
|
||||
return '<GUID "{0}({1})">'.format(self.strid.upper(), self.name)
|
||||
return '<GUID "{0}" ({1})>'.format(self.strid.upper(), self.name)
|
||||
|
||||
__sprint__ = __repr__
|
||||
|
||||
@@ -543,15 +555,18 @@ class _GUID(INITIAL_GUID):
|
||||
return NotImplemented
|
||||
return (self.Data1, self.Data2, self.Data3, self.Data4[:]) == (other.Data1, other.Data2, other.Data3, other.Data4[:])
|
||||
|
||||
CID = _GUID
|
||||
CLSID = _GUID
|
||||
GUID = _GUID
|
||||
IID = _GUID
|
||||
IPID = _GUID
|
||||
LPCGUID = POINTER(_GUID)
|
||||
LPCLSID = POINTER(_GUID)
|
||||
LPGUID = POINTER(_GUID)
|
||||
REFCLSID = POINTER(_GUID)
|
||||
REFGUID = POINTER(_GUID)
|
||||
REFIID = POINTER(_GUID)
|
||||
REFIPID = POINTER(_GUID)
|
||||
class IO_Des_s(Structure):
|
||||
_fields_ = [
|
||||
("IOD_Count", DWORD),
|
||||
@@ -839,16 +854,6 @@ class tagCALLFRAME_WALK(EnumType):
|
||||
CALLFRAME_WALK = tagCALLFRAME_WALK
|
||||
|
||||
|
||||
SD_LAUNCHPERMISSIONS = EnumValue("tagCOMSD", "SD_LAUNCHPERMISSIONS", 0x0)
|
||||
SD_ACCESSPERMISSIONS = EnumValue("tagCOMSD", "SD_ACCESSPERMISSIONS", 0x1)
|
||||
SD_LAUNCHRESTRICTIONS = EnumValue("tagCOMSD", "SD_LAUNCHRESTRICTIONS", 0x2)
|
||||
SD_ACCESSRESTRICTIONS = EnumValue("tagCOMSD", "SD_ACCESSRESTRICTIONS", 0x3)
|
||||
class tagCOMSD(EnumType):
|
||||
values = [SD_LAUNCHPERMISSIONS, SD_ACCESSPERMISSIONS, SD_LAUNCHRESTRICTIONS, SD_ACCESSRESTRICTIONS]
|
||||
mapper = FlagMapper(*values)
|
||||
COMSD = tagCOMSD
|
||||
|
||||
|
||||
class tagMULTI_QI(Structure):
|
||||
_fields_ = [
|
||||
("pIID", POINTER(IID)),
|
||||
@@ -1008,6 +1013,576 @@ VARIANT = __tagVARIANT
|
||||
VARIANTARG = __tagVARIANT
|
||||
_tagVARIANT = __tagVARIANT
|
||||
|
||||
SD_LAUNCHPERMISSIONS = EnumValue("tagCOMSD", "SD_LAUNCHPERMISSIONS", 0x0)
|
||||
SD_ACCESSPERMISSIONS = EnumValue("tagCOMSD", "SD_ACCESSPERMISSIONS", 0x1)
|
||||
SD_LAUNCHRESTRICTIONS = EnumValue("tagCOMSD", "SD_LAUNCHRESTRICTIONS", 0x2)
|
||||
SD_ACCESSRESTRICTIONS = EnumValue("tagCOMSD", "SD_ACCESSRESTRICTIONS", 0x3)
|
||||
class tagCOMSD(EnumType):
|
||||
values = [SD_LAUNCHPERMISSIONS, SD_ACCESSPERMISSIONS, SD_LAUNCHRESTRICTIONS, SD_ACCESSRESTRICTIONS]
|
||||
mapper = FlagMapper(*values)
|
||||
COMSD = tagCOMSD
|
||||
|
||||
|
||||
CPFLAG_NONE = EnumValue("tagCPFLAGS", "CPFLAG_NONE", 0x0)
|
||||
CPFLAG_PROPAGATE = EnumValue("tagCPFLAGS", "CPFLAG_PROPAGATE", 0x1)
|
||||
CPFLAG_EXPOSE = EnumValue("tagCPFLAGS", "CPFLAG_EXPOSE", 0x2)
|
||||
CPFLAG_ENVOY = EnumValue("tagCPFLAGS", "CPFLAG_ENVOY", 0x4)
|
||||
CPFLAG_MONITORSTUB = EnumValue("tagCPFLAGS", "CPFLAG_MONITORSTUB", 0x8)
|
||||
CPFLAG_MONITORPROXY = EnumValue("tagCPFLAGS", "CPFLAG_MONITORPROXY", 0x10)
|
||||
CPFLAG_DONTCOMPARE = EnumValue("tagCPFLAGS", "CPFLAG_DONTCOMPARE", 0x20)
|
||||
class tagCPFLAGS(EnumType):
|
||||
values = [CPFLAG_NONE, CPFLAG_PROPAGATE, CPFLAG_EXPOSE, CPFLAG_ENVOY, CPFLAG_MONITORSTUB, CPFLAG_MONITORPROXY, CPFLAG_DONTCOMPARE]
|
||||
mapper = FlagMapper(*values)
|
||||
CPFLAGS = tagCPFLAGS
|
||||
|
||||
|
||||
CLIENT_CONTEXT_STAGE = EnumValue("tagACTIVATION_STAGE", "CLIENT_CONTEXT_STAGE", 0x1)
|
||||
CLIENT_MACHINE_STAGE = EnumValue("tagACTIVATION_STAGE", "CLIENT_MACHINE_STAGE", 0x2)
|
||||
SERVER_MACHINE_STAGE = EnumValue("tagACTIVATION_STAGE", "SERVER_MACHINE_STAGE", 0x3)
|
||||
SERVER_PROCESS_STAGE = EnumValue("tagACTIVATION_STAGE", "SERVER_PROCESS_STAGE", 0x4)
|
||||
SERVER_CONTEXT_STAGE = EnumValue("tagACTIVATION_STAGE", "SERVER_CONTEXT_STAGE", 0x5)
|
||||
class tagACTIVATION_STAGE(EnumType):
|
||||
values = [CLIENT_CONTEXT_STAGE, CLIENT_MACHINE_STAGE, SERVER_MACHINE_STAGE, SERVER_PROCESS_STAGE, SERVER_CONTEXT_STAGE]
|
||||
mapper = FlagMapper(*values)
|
||||
ACTIVATION_STAGE = tagACTIVATION_STAGE
|
||||
|
||||
|
||||
ApartmentThreaded = EnumValue("tagThreadingModel", "ApartmentThreaded", 0x0)
|
||||
FreeThreaded = EnumValue("tagThreadingModel", "FreeThreaded", 0x1)
|
||||
SingleThreaded = EnumValue("tagThreadingModel", "SingleThreaded", 0x2)
|
||||
BothThreaded = EnumValue("tagThreadingModel", "BothThreaded", 0x3)
|
||||
NeutralThreaded = EnumValue("tagThreadingModel", "NeutralThreaded", 0x4)
|
||||
class tagThreadingModel(EnumType):
|
||||
values = [ApartmentThreaded, FreeThreaded, SingleThreaded, BothThreaded, NeutralThreaded]
|
||||
mapper = FlagMapper(*values)
|
||||
ThreadingModel = tagThreadingModel
|
||||
|
||||
|
||||
LocalServerType16 = EnumValue("tagLocalServerType", "LocalServerType16", 0x0)
|
||||
LocalServerType32 = EnumValue("tagLocalServerType", "LocalServerType32", 0x1)
|
||||
class tagLocalServerType(EnumType):
|
||||
values = [LocalServerType16, LocalServerType32]
|
||||
mapper = FlagMapper(*values)
|
||||
LocalServerType = tagLocalServerType
|
||||
|
||||
|
||||
STREAM_SEEK_SET = EnumValue("tagSTREAM_SEEK", "STREAM_SEEK_SET", 0x0)
|
||||
STREAM_SEEK_CUR = EnumValue("tagSTREAM_SEEK", "STREAM_SEEK_CUR", 0x1)
|
||||
STREAM_SEEK_END = EnumValue("tagSTREAM_SEEK", "STREAM_SEEK_END", 0x2)
|
||||
class tagSTREAM_SEEK(EnumType):
|
||||
values = [STREAM_SEEK_SET, STREAM_SEEK_CUR, STREAM_SEEK_END]
|
||||
mapper = FlagMapper(*values)
|
||||
STREAM_SEEK = tagSTREAM_SEEK
|
||||
|
||||
|
||||
MSHCTX_LOCAL = EnumValue("tagMSHCTX", "MSHCTX_LOCAL", 0x0)
|
||||
MSHCTX_NOSHAREDMEM = EnumValue("tagMSHCTX", "MSHCTX_NOSHAREDMEM", 0x1)
|
||||
MSHCTX_DIFFERENTMACHINE = EnumValue("tagMSHCTX", "MSHCTX_DIFFERENTMACHINE", 0x2)
|
||||
MSHCTX_INPROC = EnumValue("tagMSHCTX", "MSHCTX_INPROC", 0x3)
|
||||
MSHCTX_CROSSCTX = EnumValue("tagMSHCTX", "MSHCTX_CROSSCTX", 0x4)
|
||||
MSHCTX_CONTAINER = EnumValue("tagMSHCTX", "MSHCTX_CONTAINER", 0x5)
|
||||
class tagMSHCTX(EnumType):
|
||||
values = [MSHCTX_LOCAL, MSHCTX_NOSHAREDMEM, MSHCTX_DIFFERENTMACHINE, MSHCTX_INPROC, MSHCTX_CROSSCTX, MSHCTX_CONTAINER]
|
||||
mapper = FlagMapper(*values)
|
||||
MSHCTX = tagMSHCTX
|
||||
|
||||
|
||||
class tagOpaqueData(Structure):
|
||||
_fields_ = [
|
||||
("guid", GUID),
|
||||
("dataLength", ULONG),
|
||||
("reserved1", ULONG),
|
||||
("reserved2", ULONG),
|
||||
("data", POINTER(BYTE)),
|
||||
]
|
||||
OpaqueData = tagOpaqueData
|
||||
|
||||
class tagSTDOBJREF(Structure):
|
||||
_fields_ = [
|
||||
("flags", ULONG),
|
||||
("cPublicRefs", ULONG),
|
||||
("oxid", OXID),
|
||||
("oid", OID),
|
||||
("ipid", IPID),
|
||||
]
|
||||
STDOBJREF = tagSTDOBJREF
|
||||
|
||||
class tagDATAELEMENT(Structure):
|
||||
_fields_ = [
|
||||
("dataID", GUID),
|
||||
("cbSize", ULONG),
|
||||
("cbRounded", ULONG),
|
||||
("Data", BYTE * (1)),
|
||||
]
|
||||
DATAELEMENT = tagDATAELEMENT
|
||||
PDATAELEMENT = POINTER(tagDATAELEMENT)
|
||||
|
||||
class tagOBJREFDATA(Structure):
|
||||
_fields_ = [
|
||||
("nElms", ULONG),
|
||||
("ppElmArray", POINTER(PDATAELEMENT)),
|
||||
]
|
||||
OBJREFDATA = tagOBJREFDATA
|
||||
|
||||
class tagDUALSTRINGARRAY(Structure):
|
||||
_fields_ = [
|
||||
("wNumEntries", USHORT),
|
||||
("wSecurityOffset", USHORT),
|
||||
("aStringArray", USHORT * (1)),
|
||||
]
|
||||
DUALSTRINGARRAY = tagDUALSTRINGARRAY
|
||||
|
||||
INITIAL_tagDUALSTRINGARRAY = tagDUALSTRINGARRAY
|
||||
|
||||
class tagDUALSTRINGARRAY(INITIAL_tagDUALSTRINGARRAY):
|
||||
@property
|
||||
def rawbuffer(self):
|
||||
array_size = self.wNumEntries
|
||||
array_type = self.aStringArray._type_
|
||||
new_buffer_type = (array_type * array_size)
|
||||
buffer = new_buffer_type.from_address(ctypes.addressof(self.aStringArray))
|
||||
return buffer
|
||||
|
||||
|
||||
|
||||
@property
|
||||
def bidings(self):
|
||||
rawbuffer = self.rawbuffer
|
||||
rawarray = rawbuffer[:] # Allow to find 0 in USHORT without overlap
|
||||
rawbytes = bytearray(rawbuffer) # Allow to access to bytes to utf-16-le decode
|
||||
results = []
|
||||
next_start = 0
|
||||
|
||||
# STRINGBINDING documentation says that it starts with a USHORT wTowerId
|
||||
# But i don't see it in our response.. (local response ?)
|
||||
# So ignore it for now
|
||||
for i in range(100):
|
||||
current_index = rawarray.index(0, next_start)
|
||||
new_entry = rawbytes[next_start * 2: current_index * 2]
|
||||
if not new_entry:
|
||||
return results
|
||||
results.append(new_entry.decode("utf-16-le")) # Does not handle full unicode I think but..
|
||||
next_start = current_index + 1
|
||||
# Should not happen
|
||||
raise ValueError("Could not parse DUALSTRINGARRAY")
|
||||
|
||||
@property
|
||||
def security_bidings(self):
|
||||
rawbuffer = self.rawbuffer
|
||||
rawarray = rawbuffer[self.wSecurityOffset:]
|
||||
rawbytes = bytearray(rawbuffer)[self.wSecurityOffset * 2:]
|
||||
results = []
|
||||
next_start = 0
|
||||
|
||||
for i in range(100):
|
||||
wAuthnSvc = rawarray[next_start]
|
||||
if wAuthnSvc == 0:
|
||||
return results
|
||||
reserved = rawarray[next_start + 1]
|
||||
current_index = rawarray.index(0, next_start + 2)
|
||||
new_entry = rawbytes[(next_start + 2) * 2:current_index * 2]
|
||||
results.append((wAuthnSvc, reserved, new_entry.decode("utf-16-le"))) # Does not handle full unicode I think but..
|
||||
next_start = current_index + 1
|
||||
# Should not happen
|
||||
raise ValueError("Could not parse DUALSTRINGARRAY security bidings")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DUALSTRINGARRAY = tagDUALSTRINGARRAY
|
||||
class _ANON__ANON_TAGOBJREF_SUB_UNION_1_SUB_STRUCTURE_1(Structure):
|
||||
_fields_ = [
|
||||
("std", STDOBJREF),
|
||||
("saResAddr", DUALSTRINGARRAY),
|
||||
]
|
||||
|
||||
|
||||
class _ANON__ANON_TAGOBJREF_SUB_UNION_1_SUB_STRUCTURE_2(Structure):
|
||||
_fields_ = [
|
||||
("std", STDOBJREF),
|
||||
("clsid", CLSID),
|
||||
("saResAddr", DUALSTRINGARRAY),
|
||||
]
|
||||
|
||||
|
||||
class _ANON__ANON_TAGOBJREF_SUB_UNION_1_SUB_STRUCTURE_3(Structure):
|
||||
_fields_ = [
|
||||
("clsid", CLSID),
|
||||
("cbExtension", ULONG),
|
||||
("size", ULONG),
|
||||
("pData", POINTER(BYTE)),
|
||||
]
|
||||
|
||||
|
||||
class _ANON__ANON_TAGOBJREF_SUB_UNION_1_SUB_STRUCTURE_4(Structure):
|
||||
_fields_ = [
|
||||
("std", STDOBJREF),
|
||||
("pORData", POINTER(OBJREFDATA)),
|
||||
("saResAddr", DUALSTRINGARRAY),
|
||||
]
|
||||
|
||||
class _ANON_TAGOBJREF_SUB_UNION_1(Union):
|
||||
_anonymous_ = ("u_standard","u_handler","u_custom","u_extended")
|
||||
_fields_ = [
|
||||
("u_standard", _ANON__ANON_TAGOBJREF_SUB_UNION_1_SUB_STRUCTURE_1),
|
||||
("u_handler", _ANON__ANON_TAGOBJREF_SUB_UNION_1_SUB_STRUCTURE_2),
|
||||
("u_custom", _ANON__ANON_TAGOBJREF_SUB_UNION_1_SUB_STRUCTURE_3),
|
||||
("u_extended", _ANON__ANON_TAGOBJREF_SUB_UNION_1_SUB_STRUCTURE_4),
|
||||
]
|
||||
|
||||
class tagOBJREF(Structure):
|
||||
_anonymous_ = ("u_objref",)
|
||||
_fields_ = [
|
||||
("signature", ULONG),
|
||||
("flags", ULONG),
|
||||
("iid", GUID),
|
||||
("u_objref", _ANON_TAGOBJREF_SUB_UNION_1),
|
||||
]
|
||||
OBJREF = tagOBJREF
|
||||
|
||||
class tagCOMVERSION(Structure):
|
||||
_fields_ = [
|
||||
("MajorVersion", USHORT),
|
||||
("MinorVersion", USHORT),
|
||||
]
|
||||
COMVERSION = tagCOMVERSION
|
||||
|
||||
class tagORPC_EXTENT(Structure):
|
||||
_fields_ = [
|
||||
("id", _GUID),
|
||||
("size", ULONG),
|
||||
("data", BYTE * (1)),
|
||||
]
|
||||
ORPC_EXTENT = tagORPC_EXTENT
|
||||
PORPC_EXTENT = tagORPC_EXTENT
|
||||
|
||||
class tagORPC_EXTENT_ARRAY(Structure):
|
||||
_fields_ = [
|
||||
("size", ULONG),
|
||||
("reserved", ULONG),
|
||||
("extent", POINTER(PORPC_EXTENT)),
|
||||
]
|
||||
ORPC_EXTENT_ARRAY = tagORPC_EXTENT_ARRAY
|
||||
|
||||
class tagORPCTHIS(Structure):
|
||||
_fields_ = [
|
||||
("version", COMVERSION),
|
||||
("flags", ULONG),
|
||||
("reserved1", ULONG),
|
||||
("cid", GUID),
|
||||
("extensions", PVOID),
|
||||
]
|
||||
ORPCTHIS = tagORPCTHIS
|
||||
|
||||
class tagORPCTHIS32(Structure):
|
||||
_fields_ = [
|
||||
("version", COMVERSION),
|
||||
("flags", ULONG),
|
||||
("reserved1", ULONG),
|
||||
("cid", GUID),
|
||||
("extensions", PVOID32),
|
||||
]
|
||||
ORPCTHIS32 = tagORPCTHIS32
|
||||
|
||||
class tagOXID_INFO(Structure):
|
||||
_fields_ = [
|
||||
("dwTid", DWORD),
|
||||
("dwPid", DWORD),
|
||||
("dwAuthnHint", DWORD),
|
||||
("version", COMVERSION),
|
||||
("ipidRemUnknown", IPID),
|
||||
("dwFlags", DWORD),
|
||||
("psa", POINTER(DUALSTRINGARRAY)),
|
||||
]
|
||||
OXID_INFO = tagOXID_INFO
|
||||
|
||||
class tagContextProperty(Structure):
|
||||
_fields_ = [
|
||||
("policyId", GUID),
|
||||
("flags", CPFLAGS),
|
||||
("pUnk", PVOID),
|
||||
]
|
||||
ContextProperty = tagContextProperty
|
||||
|
||||
class _PRIV_SCM_INFO(Structure):
|
||||
_fields_ = [
|
||||
("Apartment", LONG),
|
||||
("pwszWinstaDesktop", POINTER(WCHAR)),
|
||||
("ProcessSignature", ULONG64),
|
||||
("pEnvBlock", POINTER(WCHAR)),
|
||||
("EnvBlockLength", DWORD),
|
||||
]
|
||||
PRIV_SCM_INFO = _PRIV_SCM_INFO
|
||||
|
||||
class _REMOTE_REQUEST_SCM_INFO(Structure):
|
||||
_fields_ = [
|
||||
("ClientImpLevel", DWORD),
|
||||
("cRequestedProtseqs", USHORT),
|
||||
("pRequestedProtseqs", POINTER(USHORT)),
|
||||
]
|
||||
REMOTE_REQUEST_SCM_INFO = _REMOTE_REQUEST_SCM_INFO
|
||||
|
||||
class tagMInterfacePointer(Structure):
|
||||
_fields_ = [
|
||||
("ulCntData", ULONG),
|
||||
("abData", BYTE * (1)),
|
||||
]
|
||||
MInterfacePointer = tagMInterfacePointer
|
||||
PMInterfacePointer = POINTER(tagMInterfacePointer)
|
||||
|
||||
INITIAL_tagMInterfacePointer = tagMInterfacePointer
|
||||
|
||||
class tagMInterfacePointer(INITIAL_tagMInterfacePointer):
|
||||
@property
|
||||
def objref(self):
|
||||
return OBJREF.from_address(ctypes.addressof(self.abData))
|
||||
MInterfacePointer = tagMInterfacePointer
|
||||
PMInterfacePointer = POINTER(tagMInterfacePointer)
|
||||
class tagRPCOLEMESSAGE(Structure):
|
||||
_fields_ = [
|
||||
("reserved1", PVOID),
|
||||
("dataRepresentation", RPCOLEDATAREP),
|
||||
("Buffer", PVOID),
|
||||
("cbBuffer", ULONG),
|
||||
("iMethod", ULONG),
|
||||
("reserved2", PVOID * (5)),
|
||||
("rpcFlags", ULONG),
|
||||
]
|
||||
PRPCOLEMESSAGE = POINTER(tagRPCOLEMESSAGE)
|
||||
RPCOLEMESSAGE = tagRPCOLEMESSAGE
|
||||
|
||||
class tagREMQIRESULT(Structure):
|
||||
_fields_ = [
|
||||
("hResult", HRESULT),
|
||||
("std", STDOBJREF),
|
||||
]
|
||||
PREMQIRESULT = POINTER(tagREMQIRESULT)
|
||||
REMQIRESULT = tagREMQIRESULT
|
||||
|
||||
class tagREMINTERFACEREF(Structure):
|
||||
_fields_ = [
|
||||
("ipid", IPID),
|
||||
("cPublicRefs", ULONG),
|
||||
("cPrivateRefs", ULONG),
|
||||
]
|
||||
REMINTERFACEREF = tagREMINTERFACEREF
|
||||
|
||||
class _PRIV_RESOLVER_INFO_LEGACY(Structure):
|
||||
_fields_ = [
|
||||
("OxidServer", OXID),
|
||||
("pServerORBindings", POINTER(DUALSTRINGARRAY)),
|
||||
("OxidInfo", OXID_INFO),
|
||||
("LocalMidOfRemote", MID),
|
||||
("DllServerModel", DWORD),
|
||||
("pwszDllServer", POINTER(WCHAR)),
|
||||
("FoundInROT", BOOL),
|
||||
]
|
||||
PPRIV_RESOLVER_INFO_LEGACY = POINTER(_PRIV_RESOLVER_INFO_LEGACY)
|
||||
PRIV_RESOLVER_INFO_LEGACY = _PRIV_RESOLVER_INFO_LEGACY
|
||||
|
||||
class _REMOTE_REPLY_SCM_INFO(Structure):
|
||||
_fields_ = [
|
||||
("Oxid", OXID),
|
||||
("pdsaOxidBindings", POINTER(DUALSTRINGARRAY)),
|
||||
("ipidRemUnknown", IPID),
|
||||
("authnHint", DWORD),
|
||||
("serverVersion", COMVERSION),
|
||||
]
|
||||
PREMOTE_REPLY_SCM_INFO = POINTER(_REMOTE_REPLY_SCM_INFO)
|
||||
REMOTE_REPLY_SCM_INFO = _REMOTE_REPLY_SCM_INFO
|
||||
|
||||
class CONTAINER_EXTENT(Structure):
|
||||
_fields_ = [
|
||||
("id", UINT),
|
||||
("version", UINT),
|
||||
("size", UINT),
|
||||
("data", BYTE * (1)),
|
||||
]
|
||||
|
||||
|
||||
class CONTAINER_EXTENT_ARRAY(Structure):
|
||||
_fields_ = [
|
||||
("size", UINT),
|
||||
("reserved", UINT),
|
||||
("extent", POINTER(CONTAINER_EXTENT)),
|
||||
]
|
||||
|
||||
|
||||
class HSTRING__(Structure):
|
||||
_fields_ = [
|
||||
("unused", INT),
|
||||
]
|
||||
|
||||
|
||||
class CONTAINERVERSION(Structure):
|
||||
_fields_ = [
|
||||
("version", UINT),
|
||||
("capabilityFlags", UINT64),
|
||||
("extensions", POINTER(CONTAINER_EXTENT_ARRAY)),
|
||||
]
|
||||
|
||||
|
||||
class _MIDL_ILocalObjectExporter_0007(Structure):
|
||||
_fields_ = [
|
||||
("dwTid", ULONG),
|
||||
("dwPid", ULONG),
|
||||
("dwAuthnHint", ULONG),
|
||||
("dcomVersion", tagCOMVERSION),
|
||||
("containerVersion", CONTAINERVERSION),
|
||||
("ipidRemUnknown", _GUID),
|
||||
("dwFlags", ULONG),
|
||||
("psa", POINTER(tagDUALSTRINGARRAY)),
|
||||
("guidProcessIdentifier", _GUID),
|
||||
("processHostId", UINT64),
|
||||
("clientDependencyBehavior", INT),
|
||||
("packageFullName", POINTER(HSTRING__)),
|
||||
("userSid", POINTER(HSTRING__)),
|
||||
("appcontainerSid", POINTER(HSTRING__)),
|
||||
("primaryOxid", UINT64),
|
||||
("primaryIpidRemUnknown", _GUID),
|
||||
]
|
||||
MIDL_ILocalObjectExporter_0007 = _MIDL_ILocalObjectExporter_0007
|
||||
|
||||
class _PRIV_RESOLVER_INFO(Structure):
|
||||
_fields_ = [
|
||||
("OxidServer", UINT64),
|
||||
("pServerORBindings", POINTER(tagDUALSTRINGARRAY)),
|
||||
("OxidInfo", MIDL_ILocalObjectExporter_0007),
|
||||
("LocalMidOfRemote", UINT64),
|
||||
("FoundInROT", INT),
|
||||
]
|
||||
PPRIV_RESOLVER_INFO = POINTER(_PRIV_RESOLVER_INFO)
|
||||
PRIV_RESOLVER_INFO = _PRIV_RESOLVER_INFO
|
||||
|
||||
class _MIDL_XmitDefs_0001(Structure):
|
||||
_fields_ = [
|
||||
("asyncOperationId", GUID),
|
||||
("oxidClientProcessNA", ULONG64),
|
||||
("originalClientLogicalThreadId", GUID),
|
||||
("uClientCausalityTraceId", ULONG64),
|
||||
]
|
||||
MIDL_XmitDefs_0001 = _MIDL_XmitDefs_0001
|
||||
|
||||
class _LOCALTHIS(Structure):
|
||||
_fields_ = [
|
||||
("dwFlags", DWORD),
|
||||
("dwClientThread", DWORD),
|
||||
("passthroughTraceActivity", GUID),
|
||||
("callTraceActivity", GUID),
|
||||
("asyncRequestBlock", MIDL_XmitDefs_0001),
|
||||
("reserved", DWORD),
|
||||
("pTouchedAstaArray", PVOID),
|
||||
]
|
||||
LOCALTHIS = _LOCALTHIS
|
||||
|
||||
class _LOCALTHIS32(Structure):
|
||||
_fields_ = [
|
||||
("dwFlags", DWORD),
|
||||
("dwClientThread", DWORD),
|
||||
("passthroughTraceActivity", GUID),
|
||||
("callTraceActivity", GUID),
|
||||
("asyncRequestBlock", MIDL_XmitDefs_0001),
|
||||
("reserved", DWORD),
|
||||
("pTouchedAstaArray", PVOID32),
|
||||
]
|
||||
LOCALTHIS32 = _LOCALTHIS32
|
||||
|
||||
class _MIDL_XmitDefs_0007(Structure):
|
||||
_fields_ = [
|
||||
("pointOfFailure", INT),
|
||||
("hrFailure", HRESULT),
|
||||
("sizeOfMarshaledErrorInfo", ULONG),
|
||||
("reserved", ULONG),
|
||||
("pMarshaledErrorInfo", POINTER(BYTE)),
|
||||
]
|
||||
|
||||
|
||||
class _MIDL_XmitDefs_0005(Structure):
|
||||
_fields_ = [
|
||||
("sizeOfMarshaledResults", ULONG),
|
||||
("reserved", ULONG),
|
||||
("pMarshaledResults", POINTER(BYTE)),
|
||||
]
|
||||
|
||||
|
||||
class _MIDL_XmitDefs_0008(Structure):
|
||||
_fields_ = [
|
||||
("outcome", INT),
|
||||
("successDetails", _MIDL_XmitDefs_0005),
|
||||
("failureDetails", _MIDL_XmitDefs_0007),
|
||||
]
|
||||
|
||||
|
||||
class _MIDL_XmitDefs_0010(Structure):
|
||||
_fields_ = [
|
||||
("asyncStatus", ULONG),
|
||||
("reserved1", ULONG),
|
||||
("uServerCausalityTraceId", UINT64),
|
||||
("completionTraceActivity", _GUID),
|
||||
("reserved2", ULONG),
|
||||
("pOutcomeDetails", POINTER(_MIDL_XmitDefs_0008)),
|
||||
]
|
||||
|
||||
|
||||
class CONTAINERTHAT(Structure):
|
||||
_fields_ = [
|
||||
("responseFlags", UINT64),
|
||||
("unassignedPassthroughGuid_1", _GUID),
|
||||
("unassignedPassthroughGuid_2", _GUID),
|
||||
("unassignedPassthroughGuid_3", _GUID),
|
||||
("unassignedPassthroughGuid_4", _GUID),
|
||||
("reservedGuid_1", _GUID),
|
||||
("reservedGuid_2", _GUID),
|
||||
("reservedGuid_3", _GUID),
|
||||
("reservedGuid_4", _GUID),
|
||||
("unassignedPassthroughUint64_1", UINT64),
|
||||
("unassignedPassthroughUint64_2", UINT64),
|
||||
("unassignedPassthroughUint64_3", UINT64),
|
||||
("unassignedPassthroughUint64_4", UINT64),
|
||||
("marshalingSetId", UINT64),
|
||||
("reservedUint64_2", UINT64),
|
||||
("reservedUint64_3", UINT64),
|
||||
("reservedUint64_4", UINT64),
|
||||
("reservedUint32", UINT),
|
||||
("extensions", POINTER(CONTAINER_EXTENT_ARRAY)),
|
||||
]
|
||||
|
||||
|
||||
class _LOCALTHAT(Structure):
|
||||
_fields_ = [
|
||||
("marshalingSetId", UINT64),
|
||||
("reserved", ULONG),
|
||||
("pAsyncResponseBlock", POINTER(_MIDL_XmitDefs_0010)),
|
||||
("containerErrorInformation", POINTER(CONTAINER_EXTENT)),
|
||||
("containerPassthroughData", POINTER(CONTAINERTHAT)),
|
||||
]
|
||||
LOCALTHAT = _LOCALTHAT
|
||||
|
||||
class _LOCALTHAT32(Structure):
|
||||
_fields_ = [
|
||||
("marshalingSetId", UINT64),
|
||||
("reserved", ULONG),
|
||||
("pAsyncResponseBlock", PVOID32),
|
||||
("containerErrorInformation", PVOID32),
|
||||
("containerPassthroughData", PVOID32),
|
||||
]
|
||||
LOCALTHAT32 = _LOCALTHAT32
|
||||
|
||||
class tagORPCTHAT(Structure):
|
||||
_fields_ = [
|
||||
("flags", ULONG),
|
||||
("extensions", POINTER(tagORPC_EXTENT_ARRAY)),
|
||||
]
|
||||
ORPCTHAT = tagORPCTHAT
|
||||
|
||||
class ORPCTHAT32(Structure):
|
||||
_fields_ = [
|
||||
("flags", ULONG),
|
||||
("extensions", PVOID32),
|
||||
]
|
||||
|
||||
|
||||
VIRTUAL_DISK_ACCESS_NONE = EnumValue("_VIRTUAL_DISK_ACCESS_MASK", "VIRTUAL_DISK_ACCESS_NONE", 0x0)
|
||||
VIRTUAL_DISK_ACCESS_ATTACH_RO = EnumValue("_VIRTUAL_DISK_ACCESS_MASK", "VIRTUAL_DISK_ACCESS_ATTACH_RO", 0x1)
|
||||
VIRTUAL_DISK_ACCESS_ATTACH_RW = EnumValue("_VIRTUAL_DISK_ACCESS_MASK", "VIRTUAL_DISK_ACCESS_ATTACH_RW", 0x2)
|
||||
@@ -3336,7 +3911,7 @@ class _IMAGEHLP_MODULEW64(Structure):
|
||||
("LoadedImageName", WCHAR * (256)),
|
||||
("LoadedPdbName", WCHAR * (256)),
|
||||
("CVSig", DWORD),
|
||||
("CVData", POINTER(WCHAR) * (MAX_PATH * 3)),
|
||||
("CVData", WCHAR * (MAX_PATH * 3)),
|
||||
("PdbSig", DWORD),
|
||||
("PdbSig70", GUID),
|
||||
("PdbAge", DWORD),
|
||||
@@ -6109,16 +6684,16 @@ class _OBJECT_ATTRIBUTES(_OBJECT_ATTRIBUTES):
|
||||
return """<{0} ObjectName="{1}">""".format(type(self).__name__, self.ObjectName.contents.str)
|
||||
OBJECT_ATTRIBUTES = _OBJECT_ATTRIBUTES
|
||||
POBJECT_ATTRIBUTES = POINTER(_OBJECT_ATTRIBUTES)
|
||||
class _TMP_UNION_IO_STATUS_BLOCK(Union):
|
||||
class _ANON__IO_STATUS_BLOCK_SUB_UNION_1(Union):
|
||||
_fields_ = [
|
||||
("Status", NTSTATUS),
|
||||
("Pointer", PVOID),
|
||||
]
|
||||
TMP_UNION_IO_STATUS_BLOCK = _TMP_UNION_IO_STATUS_BLOCK
|
||||
|
||||
class _IO_STATUS_BLOCK(Structure):
|
||||
_anonymous_ = ("anon_01",)
|
||||
_fields_ = [
|
||||
("DUMMYUNIONNAME", TMP_UNION_IO_STATUS_BLOCK),
|
||||
("anon_01", _ANON__IO_STATUS_BLOCK_SUB_UNION_1),
|
||||
("Information", ULONG_PTR),
|
||||
]
|
||||
IO_STATUS_BLOCK = _IO_STATUS_BLOCK
|
||||
@@ -6918,44 +7493,6 @@ class _REMOTE_PORT_VIEW(Structure):
|
||||
PREMOTE_PORT_VIEW = POINTER(_REMOTE_PORT_VIEW)
|
||||
REMOTE_PORT_VIEW = _REMOTE_PORT_VIEW
|
||||
|
||||
class tagCOMVERSION(Structure):
|
||||
_fields_ = [
|
||||
("MajorVersion", USHORT),
|
||||
("MinorVersion", USHORT),
|
||||
]
|
||||
COMVERSION = tagCOMVERSION
|
||||
|
||||
class tagORPCTHIS(Structure):
|
||||
_fields_ = [
|
||||
("version", COMVERSION),
|
||||
("flags", ULONG),
|
||||
("reserved1", ULONG),
|
||||
("cid", GUID),
|
||||
("extensions", PVOID),
|
||||
]
|
||||
ORPCTHIS = tagORPCTHIS
|
||||
|
||||
class __MIDL_XmitDefs_0001(Structure):
|
||||
_fields_ = [
|
||||
("asyncOperationId", GUID),
|
||||
("oxidClientProcessNA", ULONG64),
|
||||
("originalClientLogicalThreadId", GUID),
|
||||
("uClientCausalityTraceId", ULONG64),
|
||||
]
|
||||
MIDL_XmitDefs_0001 = __MIDL_XmitDefs_0001
|
||||
|
||||
class _LOCALTHIS(Structure):
|
||||
_fields_ = [
|
||||
("dwFlags", DWORD),
|
||||
("dwClientThread", DWORD),
|
||||
("passthroughTraceActivity", GUID),
|
||||
("callTraceActivity", GUID),
|
||||
("asyncRequestBlock", MIDL_XmitDefs_0001),
|
||||
("reserved", DWORD),
|
||||
("pTouchedAstaArray", PVOID),
|
||||
]
|
||||
LOCALTHIS = _LOCALTHIS
|
||||
|
||||
ECS_ENABLED = EnumValue("_EXPCMDSTATE", "ECS_ENABLED", 0x0)
|
||||
ECS_DISABLED = EnumValue("_EXPCMDSTATE", "ECS_DISABLED", 0x1)
|
||||
ECS_HIDDEN = EnumValue("_EXPCMDSTATE", "ECS_HIDDEN", 0x2)
|
||||
|
||||
@@ -892,16 +892,19 @@ class CmpsB(Instruction):
|
||||
default_32_bits = True
|
||||
encoding = [(RawBits.from_int(8, 0xa6),)]
|
||||
|
||||
cmpsw = CmpsB # Allow use in assemble (use Capitalize) : todo cleaner
|
||||
|
||||
class CmpsW(Instruction):
|
||||
default_32_bits = True
|
||||
encoding = [(RawBits.from_int(16, 0x66A7),)]
|
||||
|
||||
Cmpsw = CmpsW # Allow use in assemble (use Capitalize) : todo cleaner
|
||||
|
||||
class CmpsD(Instruction):
|
||||
default_32_bits = True
|
||||
encoding = [(RawBits.from_int(8, 0xa7),)]
|
||||
|
||||
Cmpsd = CmpsD # Allow use in assemble (use Capitalize) : todo cleaner
|
||||
|
||||
class Nop(Instruction):
|
||||
encoding = [(RawBits.from_int(8, 0x90),)]
|
||||
|
||||
+45
-21
@@ -14,6 +14,8 @@ KNOW_RESPONSE_TYPE = gdef.FlagMapper(gdef.RPC_RESPONSE_TYPE_FAIL, gdef.RPC_RESPO
|
||||
KNOWN_RPC_ERROR_CODE = gdef.FlagMapper(
|
||||
gdef.ERROR_INVALID_HANDLE,
|
||||
gdef.RPC_X_BAD_STUB_DATA,
|
||||
gdef.RPC_E_INVALID_HEADER,
|
||||
gdef.RPC_E_DISCONNECTED,
|
||||
gdef.RPC_S_UNKNOWN_IF,
|
||||
gdef.RPC_S_PROTOCOL_ERROR,
|
||||
gdef.RPC_S_UNSUPPORTED_TRANS_SYN,
|
||||
@@ -57,34 +59,36 @@ class ALPC_RPC_CALL(ctypes.Structure):
|
||||
("UNK5", gdef.DWORD),
|
||||
("UNK6", gdef.DWORD),
|
||||
("UNK7", gdef.DWORD),
|
||||
("ORPC_IPID", gdef.GUID)
|
||||
("orpc_ipid", gdef.GUID)
|
||||
]
|
||||
|
||||
class RPCClient(object):
|
||||
"""A client for RPC-over-ALPC able to bind to interface and perform calls using NDR32 marshalling"""
|
||||
REQUEST_IDENTIFIER = 0x11223344
|
||||
|
||||
def __init__(self, port):
|
||||
self.alpc_client = alpc.AlpcClient(port) #: The :class:`windows.alpc.AlpcClient` used to communicate with the server
|
||||
self.number_of_bind_if = 0 # if -> interface
|
||||
self.if_bind_number = {}
|
||||
|
||||
def bind(self, IID_str, version=(1,0)):
|
||||
"""Bind to the ``IID_str`` with the given ``version``
|
||||
def bind(self, iid, version=(1,0)):
|
||||
"""Bind to the ``IID`` with the given ``version``
|
||||
|
||||
:returns: :class:`windows.generated_def.IID`
|
||||
"""
|
||||
IID = windows.com.IID.from_string(IID_str)
|
||||
request = self._forge_bind_request(IID, version, self.number_of_bind_if)
|
||||
if not isinstance(iid, gdef.GUID):
|
||||
iid = windows.com.IID.from_string(iid)
|
||||
request = self._forge_bind_request(iid, version, self.number_of_bind_if)
|
||||
response = self._send_request(request)
|
||||
# Parse reponse
|
||||
request_type = self._get_request_type(response)
|
||||
if request_type != gdef.RPC_RESPONSE_TYPE_BIND_OK:
|
||||
raise ValueError("Unexpected reponse type. Expected RESPONSE_TYPE_BIND_OK got {0}".format(KNOW_RESPONSE_TYPE[request_type]))
|
||||
iid_hash = hash(buffer(IID)[:]) # TODO: add __hash__ to IID
|
||||
iid_hash = hash(buffer(iid)[:]) # TODO: add __hash__ to IID
|
||||
self.if_bind_number[iid_hash] = self.number_of_bind_if
|
||||
self.number_of_bind_if += 1
|
||||
#TODO: attach version information to IID
|
||||
return IID
|
||||
return iid
|
||||
|
||||
def forge_alpc_request(self, IID, method_offset, params, ipid=None):
|
||||
"""Craft an ALPC message containing an RPC request to call ``method_offset`` of interface ``IID`
|
||||
@@ -113,18 +117,17 @@ class RPCClient(object):
|
||||
request_type = self._get_request_type(response)
|
||||
if request_type != gdef.RPC_RESPONSE_TYPE_SUCCESS:
|
||||
raise ValueError("Unexpected reponse type. Expected RESPONSE_SUCCESS got {0}".format(KNOW_RESPONSE_TYPE[request_type]))
|
||||
|
||||
return self._get_response_effective_data(response)
|
||||
# windows.utils.sprint(ALPC_RPC_CALL.from_buffer_copy(response + "\x00" * 12))
|
||||
data = struct.unpack("<6I", response[:6 * 4])
|
||||
assert data[3] == self.REQUEST_IDENTIFIER
|
||||
return response[4 * 6:] # Should be the return value (not completly verified)
|
||||
# data = struct.unpack("<6I", response[:6 * 4])
|
||||
# assert data[3] == self.REQUEST_IDENTIFIER
|
||||
# return response[4 * 6:] # Should be the return value (not completly verified)
|
||||
|
||||
def _send_request(self, request):
|
||||
response = self.alpc_client.send_receive(request)
|
||||
return response.data
|
||||
return self.alpc_client.send_receive(request)
|
||||
|
||||
def _forge_call_request(self, interface_nb, method_offset, params, ipid=None):
|
||||
# TODO: differents REQUEST_IDENTIFIER for each req ?
|
||||
# TODO: differents REQUEST_IDENTIFIER for each req ? Use REQUEST_IDENTIFIER to identify ORPC calls ?
|
||||
# TODO: what is this '0' ? (1 is also accepted) (flags ?)
|
||||
# request = struct.pack("<16I", gdef.RPC_REQUEST_TYPE_CALL, NOT_USED, 1, self.REQUEST_IDENTIFIER, interface_nb, method_offset, *[NOT_USED] * 10)
|
||||
req = ALPC_RPC_CALL()
|
||||
@@ -134,16 +137,24 @@ class RPCClient(object):
|
||||
req.if_nb = interface_nb
|
||||
req.method_offset = method_offset
|
||||
if ipid:
|
||||
req.ORPC_IPID = ipid
|
||||
this = gdef.ORPCTHIS()
|
||||
req.flags = 1 # We have a IPID
|
||||
req.orpc_ipid = ipid
|
||||
this = gdef.ORPCTHIS32() # we use NDR32
|
||||
this.version = (5,7)
|
||||
this.flags = 1
|
||||
lthis = gdef.LOCALTHIS()
|
||||
this.flags = gdef.ORPCF_LOCAL
|
||||
# Not mandatory
|
||||
# this.cid = gdef.GUID.from_string("42424242-4242-4242-4242-424242424242")
|
||||
lthis = gdef.LOCALTHIS32() # we use NDR32
|
||||
# RPC_E_INVALID_HEADER is NULL
|
||||
lthis.callTraceActivity = gdef.GUID.from_string("42424242-4242-4242-4242-424242424242")
|
||||
lthis.dwClientThread = windows.current_thread.tid
|
||||
return buffer(req)[:] + buffer(this)[:] + buffer(lthis)[:] + params
|
||||
return buffer(req)[:] + params
|
||||
|
||||
def _forge_call_request_in_view(self, interface_nb, method_offset, params, ipid=None):
|
||||
# Version crade qui clean rien pour POC. GROS DOUTES :D
|
||||
if ipid:
|
||||
raise NotImplementedError("RpcClient._forge_call_request_in_view() with ipid")
|
||||
raw_request = self._forge_call_request(interface_nb, method_offset, b"")
|
||||
p = windows.alpc.AlpcMessage(0x2000)
|
||||
section = self.alpc_client.create_port_section(0x40000, 0, len(params))
|
||||
@@ -171,9 +182,22 @@ class RPCClient(object):
|
||||
return buffer(req)[:]
|
||||
|
||||
def _get_request_type(self, response):
|
||||
"""Response is a `AlpcMessage`"""
|
||||
"raise if request_type == RESPONSE_TYPE_FAIL"
|
||||
request_type = struct.unpack("<I", response[:4])[0]
|
||||
request_type = struct.unpack("<I", response.data[:4])[0]
|
||||
if request_type == gdef.RPC_RESPONSE_TYPE_FAIL:
|
||||
error_code = struct.unpack("<5I", response)[2]
|
||||
error_code = struct.unpack("<5I", response.data)[2]
|
||||
raise ValueError("RPC Response error {0} ({1})".format(error_code, KNOWN_RPC_ERROR_CODE.get(error_code, error_code)))
|
||||
return request_type
|
||||
return request_type
|
||||
|
||||
def _get_response_effective_data(self, response):
|
||||
"""Response is a `AlpcMessage` needed to handle response in message vs response in view"""
|
||||
if not response.view_is_valid:
|
||||
# Reponse directly in PORT_MESSAGE
|
||||
return response.data[0x18:] # 4 * 6
|
||||
# Response in view M extract size from PORT_MESSAGE & read data from view
|
||||
assert response.port_message.u1.s1.TotalLength >= 0x48 # At least 0x20 of data
|
||||
rpcdatasize = struct.unpack("<I", response.data[0x18:0x1c])[0]
|
||||
viewattr = response.view_attribute
|
||||
assert viewattr.ViewSize >= rpcdatasize
|
||||
return windows.current_process.read_memory(viewattr.ViewBase, rpcdatasize)
|
||||
@@ -554,6 +554,7 @@ class NdrStream(object):
|
||||
def __init__(self, data):
|
||||
self.fulldata = data
|
||||
self.data = data
|
||||
# self.data = memoryview(data) # FAST but need some code rewrite at some places
|
||||
|
||||
def partial_unpack(self, format):
|
||||
size = struct.calcsize(format)
|
||||
|
||||
+6
-6
@@ -175,11 +175,11 @@ SECTION_ACCESS_RIGHT = gdef.FlagMapper(
|
||||
)
|
||||
|
||||
COM_ACCESS_RIGHT = gdef.FlagMapper(
|
||||
gdef.COM_EXECUTE,
|
||||
gdef.COM_EXECUTE_LOCAL,
|
||||
gdef.COM_EXECUTE_REMOTE,
|
||||
gdef.COM_ACTIVATE_LOCAL,
|
||||
gdef.COM_ACTIVATE_REMOTE,
|
||||
gdef.COM_RIGHTS_EXECUTE,
|
||||
gdef.COM_RIGHTS_EXECUTE_LOCAL,
|
||||
gdef.COM_RIGHTS_EXECUTE_REMOTE,
|
||||
gdef.COM_RIGHTS_ACTIVATE_LOCAL,
|
||||
gdef.COM_RIGHTS_ACTIVATE_REMOTE,
|
||||
)
|
||||
|
||||
SERVICE_ACCESS_RIGHT = gdef.FlagMapper(
|
||||
@@ -206,7 +206,6 @@ ADS_ACCESS_RIGHT = gdef.FlagMapper(
|
||||
gdef.ADS_RIGHT_DS_CONTROL_ACCESS,
|
||||
)
|
||||
|
||||
|
||||
SPECIFIC_ACCESS_RIGTH_BY_TYPE = {
|
||||
None: gdef.FlagMapper(),
|
||||
"file": FILE_ACCESS_RIGHT,
|
||||
@@ -218,6 +217,7 @@ SPECIFIC_ACCESS_RIGTH_BY_TYPE = {
|
||||
"callback": CALLBACK_ACCESS_RIGHT,
|
||||
"mutant": MUTANT_ACCESS_RIGHT,
|
||||
"event": EVENT_ACCESS_RIGHT,
|
||||
"section": SECTION_ACCESS_RIGHT,
|
||||
"semaphore": SEMAPHORE_ACCESS_RIGHT,
|
||||
"io_completion": IO_COMPLETION_ACCESS_RIGHT,
|
||||
"port": PORT_ACCESS_RIGHT,
|
||||
|
||||
@@ -133,6 +133,10 @@ def SymEnumTypes(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext=None):
|
||||
UserContext = transform_pyobject_to_pvoid(UserContext)
|
||||
return SymEnumTypes.ctypes_function(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
||||
|
||||
@DbgHelpProxy()
|
||||
def SymEnumTypesW(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext=None):
|
||||
return SymEnumTypesW.ctypes_function(hProcess, BaseOfDll, EnumSymbolsCallback, UserContext)
|
||||
|
||||
@DbgHelpProxy()
|
||||
def SymEnumTypesByName(hProcess, BaseOfDll, mask, EnumSymbolsCallback, UserContext=None):
|
||||
UserContext = transform_pyobject_to_pvoid(UserContext)
|
||||
|
||||
@@ -46,4 +46,20 @@ def CLSIDFromProgID(lpszProgID, lpclsid):
|
||||
|
||||
@Ole32Proxy()
|
||||
def CoTaskMemFree(pv):
|
||||
return CoTaskMemFree.ctypes_function(pv)
|
||||
return CoTaskMemFree.ctypes_function(pv)
|
||||
|
||||
@Ole32Proxy()
|
||||
def CreateStreamOnHGlobal(hGlobal=None, fDeleteOnRelease=True, ppstm=NeededParameter):
|
||||
return CreateStreamOnHGlobal.ctypes_function(hGlobal, fDeleteOnRelease, ppstm)
|
||||
|
||||
@Ole32Proxy()
|
||||
def GetHGlobalFromStream(pstm, phglobal):
|
||||
return GetHGlobalFromStream.ctypes_function(pstm, phglobal)
|
||||
|
||||
@Ole32Proxy()
|
||||
def CoMarshalInterface(pStm, riid, pUnk, dwDestContext, pvDestContext, mshlflags):
|
||||
return CoMarshalInterface.ctypes_function(pStm, riid, pUnk, dwDestContext, pvDestContext, mshlflags)
|
||||
|
||||
@Ole32Proxy()
|
||||
def CoUnmarshalInterface(pStm, riid, ppv):
|
||||
return CoUnmarshalInterface.ctypes_function(pStm, riid, ppv)
|
||||
Reference in New Issue
Block a user