diff --git a/ctypes_generation/definitions/com/WMI/IWbemObjectTextSrc.txt b/ctypes_generation/definitions/com/WMI/IWbemObjectTextSrc.txt new file mode 100644 index 0000000..d2d5303 --- /dev/null +++ b/ctypes_generation/definitions/com/WMI/IWbemObjectTextSrc.txt @@ -0,0 +1,33 @@ +typedef struct IWbemObjectTextSrcVtbl + { + BEGIN_INTERFACE + + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IWbemObjectTextSrc * This, + /* [in] */ REFIID riid, + /* [iid_is][out] */ void **ppvObject); + + ULONG ( STDMETHODCALLTYPE *AddRef )( + IWbemObjectTextSrc * This); + + ULONG ( STDMETHODCALLTYPE *Release )( + IWbemObjectTextSrc * This); + + HRESULT ( STDMETHODCALLTYPE *GetText )( + IWbemObjectTextSrc * This, + /* [in] */ long lFlags, + /* [in] */ IWbemClassObject *pObj, + /* [in] */ ULONG uObjTextFormat, + /* [in] */ IWbemContext *pCtx, + /* [out] */ BSTR *strText); + + HRESULT ( STDMETHODCALLTYPE *CreateFromText )( + IWbemObjectTextSrc * This, + /* [in] */ long lFlags, + /* [in] */ BSTR strText, + /* [in] */ ULONG uObjTextFormat, + /* [in] */ IWbemContext *pCtx, + /* [out] */ IWbemClassObject **pNewObj); + + END_INTERFACE + } IWbemObjectTextSrcVtbl; \ No newline at end of file diff --git a/ctypes_generation/definitions/defines/network.txt b/ctypes_generation/definitions/defines/network.txt index cd1daf6..afbf66f 100644 --- a/ctypes_generation/definitions/defines/network.txt +++ b/ctypes_generation/definitions/defines/network.txt @@ -176,3 +176,16 @@ #define DNS_QUERY_DNSSEC_CHECKING_DISABLED 0x02000000 #define DNS_QUERY_RESERVED 0xf0000000 + +/** IPTypes.h **/ +// Definitions and structures used by getnetworkparams and getadaptersinfo apis + +#define MAX_ADAPTER_DESCRIPTION_LENGTH 128 // arb. +#define MAX_ADAPTER_NAME_LENGTH 256 // arb. +#define MAX_ADAPTER_ADDRESS_LENGTH 8 // arb. +#define DEFAULT_MINIMUM_ENTITIES 32 // arb. +#define MAX_HOSTNAME_LEN 128 // arb. +#define MAX_DOMAIN_NAME_LEN 128 // arb. +#define MAX_SCOPE_ID_LEN 256 // arb. +#define MAX_DHCPV6_DUID_LENGTH 130 // RFC 3315. +#define MAX_DNS_SUFFIX_STRING_LENGTH 256 \ No newline at end of file diff --git a/ctypes_generation/definitions/functions/com.txt b/ctypes_generation/definitions/functions/com.txt index 0f54a61..96d7098 100644 --- a/ctypes_generation/definitions/functions/com.txt +++ b/ctypes_generation/definitions/functions/com.txt @@ -56,4 +56,87 @@ HRESULT WINAPI CLSIDFromProgID( PVOID CoTaskMemFree( LPVOID pv +); + + +LPSAFEARRAY SafeArrayCreate( + [in] VARTYPE vt, + [in] UINT cDims, + [in] SAFEARRAYBOUND *rgsabound +); + +LPSAFEARRAY SafeArrayCreateVector( + [in] VARTYPE vt, + [in] LONG lLbound, + [in] ULONG cElements +); + + +HRESULT SafeArrayDestroy( + [in] SAFEARRAY *psa +); + + +HRESULT SafeArrayDestroyData( + [in] SAFEARRAY *psa +); + +HRESULT SafeArrayGetElement( + [in] SAFEARRAY *psa, + [in] LONG *rgIndices, + [out] VOID *pv +); + +UINT SafeArrayGetElemsize( + [in] SAFEARRAY *psa +); + +HRESULT SafeArrayGetLBound( + [in] SAFEARRAY *psa, + [in] UINT nDim, + [out] LONG *plLbound +); + +HRESULT SafeArrayGetUBound( + [in] SAFEARRAY *psa, + [in] UINT nDim, + [out] LONG *plUbound +); + +UINT SafeArrayGetDim( + [in] SAFEARRAY *psa +); + +HRESULT SafeArrayPutElement( + [in] SAFEARRAY *psa, + [in] LONG *rgIndices, + [in] VOID *pv +); + +HRESULT SafeArrayGetVartype( + [in] SAFEARRAY *psa, + [out] VARTYPE *pvt +); + +VOID SysFreeString( + [in, optional] BSTR bstrString +); + +HRESULT SafeArrayCopy( + [in] SAFEARRAY *psa, + [out] LPSAFEARRAY *ppsaOut +); + +HRESULT SafeArrayCopyData( + [in] SAFEARRAY *psaSource, + [in] SAFEARRAY *psaTarget +); + + +PVOID SysAllocString( + [in, optional] OLECHAR *psz +); + +VOID SysFreeString( + [in, optional] BSTR bstrString ); \ No newline at end of file diff --git a/ctypes_generation/definitions/functions/network.txt b/ctypes_generation/definitions/functions/network.txt index c4d6abd..ba27569 100644 --- a/ctypes_generation/definitions/functions/network.txt +++ b/ctypes_generation/definitions/functions/network.txt @@ -66,4 +66,15 @@ DNS_STATUS DnsQueryEx( PDNS_QUERY_REQUEST pQueryRequest, PDNS_QUERY_RESULT pQueryResults, PDNS_QUERY_CANCEL pCancelHandle +); + +ULONG GetAdaptersInfo( + [out] PIP_ADAPTER_INFO AdapterInfo, + [in, out] PULONG SizePointer +); + +DWORD GetPerAdapterInfo( + [in] ULONG IfIndex, + [out] PIP_PER_ADAPTER_INFO pPerAdapterInfo, + [in] PULONG pOutBufLen ); \ No newline at end of file diff --git a/ctypes_generation/definitions/structures/com.txt b/ctypes_generation/definitions/structures/com.txt index 54b285a..a2de6c8 100644 --- a/ctypes_generation/definitions/structures/com.txt +++ b/ctypes_generation/definitions/structures/com.txt @@ -99,7 +99,7 @@ typedef struct tagSAFEARRAY ULONG cLocks; PVOID pvData; SAFEARRAYBOUND rgsabound[ 1 ]; -} SAFEARRAY; +} SAFEARRAY, *LPSAFEARRAY; typedef struct __tagBRECORD { PVOID pvRecord; diff --git a/ctypes_generation/definitions/structures/file_info.txt b/ctypes_generation/definitions/structures/file_info.txt index a12d984..9704be1 100644 --- a/ctypes_generation/definitions/structures/file_info.txt +++ b/ctypes_generation/definitions/structures/file_info.txt @@ -284,3 +284,20 @@ typedef struct _FILE_NOTIFY_EXTENDED_INFORMATION { DWORD FileNameLength; WCHAR FileName[1]; } FILE_NOTIFY_EXTENDED_INFORMATION, *PFILE_NOTIFY_EXTENDED_INFORMATION; + + +/* + The sub union is new from _WIN32_WINNT_WIN10_RS1 + But it does not change the struct size, so keep it like this + https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/ntifs/ns-ntifs-_file_rename_information +*/ + +typedef struct _FILE_RENAME_INFORMATION { + union { + BOOLEAN ReplaceIfExists; // FileRenameInformation + ULONG Flags; // FileRenameInformationEx + } __ANON_DUMMYUNIONNAME_FILE_RENAME_INFORMATION; /* */ + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION; diff --git a/ctypes_generation/definitions/structures/network.txt b/ctypes_generation/definitions/structures/network.txt index fad9bac..f0a0f90 100644 --- a/ctypes_generation/definitions/structures/network.txt +++ b/ctypes_generation/definitions/structures/network.txt @@ -870,4 +870,51 @@ typedef struct _DNS_QUERY_RESULT // Might BE A or W record (don't know how to distinguish for now) PVOID pQueryRecords; // PDNS_RECORD pQueryRecords; PVOID Reserved; -} DNS_QUERY_RESULT, *PDNS_QUERY_RESULT; \ No newline at end of file +} DNS_QUERY_RESULT, *PDNS_QUERY_RESULT; + + +typedef struct { + CHAR String[4 * 4]; +} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING; + +typedef struct _IP_ADDR_STRING { + struct _IP_ADDR_STRING* Next; + IP_ADDRESS_STRING IpAddress; + IP_MASK_STRING IpMask; + DWORD Context; +} IP_ADDR_STRING, *PIP_ADDR_STRING; + +typedef struct _IP_ADAPTER_INFO { + struct _IP_ADAPTER_INFO *Next; + DWORD ComboIndex; + CHAR AdapterName[MAX_ADAPTER_NAME_LENGTH + 4]; + CHAR Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]; + UINT AddressLength; + BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH]; + DWORD Index; + UINT Type; + UINT DhcpEnabled; + PIP_ADDR_STRING CurrentIpAddress; + IP_ADDR_STRING IpAddressList; + IP_ADDR_STRING GatewayList; + IP_ADDR_STRING DhcpServer; + BOOL HaveWins; + IP_ADDR_STRING PrimaryWinsServer; + IP_ADDR_STRING SecondaryWinsServer; + ULONGLONG LeaseObtained; // time_t ? + ULONGLONG LeaseExpires; // time_t ? +} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO; + + +// #if (NTDDI_VERSION >= NTDDI_WIN2KSP1) +// typedef IP_PER_ADAPTER_INFO_W2KSP1 IP_PER_ADAPTER_INFO; +// typedef IP_PER_ADAPTER_INFO_W2KSP1 *PIP_PER_ADAPTER_INFO; +// #endif + +typedef struct _IP_PER_ADAPTER_INFO_W2KSP1 { + UINT AutoconfigEnabled; + UINT AutoconfigActive; + PIP_ADDR_STRING CurrentDnsServer; + IP_ADDR_STRING DnsServerList; +} IP_PER_ADAPTER_INFO_W2KSP1, *PIP_PER_ADAPTER_INFO_W2KSP1, IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO; + diff --git a/ctypes_generation/extended_structs/_FILE_RENAME_INFORMATION.py b/ctypes_generation/extended_structs/_FILE_RENAME_INFORMATION.py new file mode 100644 index 0000000..4402d69 --- /dev/null +++ b/ctypes_generation/extended_structs/_FILE_RENAME_INFORMATION.py @@ -0,0 +1,11 @@ +INITIAL_FILE_RENAME_INFORMATION = _FILE_RENAME_INFORMATION + +class _FILE_RENAME_INFORMATION(INITIAL_FILE_RENAME_INFORMATION): + @property + def filename(self): + filename_addr = ctypes.addressof(self) + type(self).FileName.offset + if getattr(self, "_target", None) is not None: #remote ctypes :D -> TRICKS OF THE YEAR + raw_data = self._target.read_memory(filename_addr, self.FileNameLength) + return raw_data.decode("utf16") + size = int(self.FileNameLength / 2) + return (ctypes.c_wchar * size).from_address(filename_addr)[:] diff --git a/docs/source/native_exec.rst b/docs/source/native_exec.rst index fb6d992..0efe896 100644 --- a/docs/source/native_exec.rst +++ b/docs/source/native_exec.rst @@ -147,73 +147,7 @@ Another example from a project:: '\x81~\x08\x0c\x00\x00\x00u&\x8bN\x10\x8bQ\x04\x8bA\x08\x8b\t\x81\xf9\x01\x00\x00\x00u\x03\xee\xeb\r\x81\xf9\x02\x00\x00\x00u\x04f\xef\xeb\x01\xef1\xc0\xc3\xc7\xc0\r\x00\x00\xc0\xc3' -Available Instructions in X86 assembler -''''''''''''''''''''''''''''''''''''''' -.. note:: - Not all encodings may be implemented for each of the instructions. - - ``Byte`` and ``Raw`` are not x86 instruction and allow to insert arbitrary data to the generated code. - -Listing: - - * Add - * And - * Byte - * Cmp - * CmpsB - * CmpsD - * CmpsW - * Cpuid - * Dec - * In - * Inc - * Int - * Int3 - * Iret - * Lea - * Mov - * Movsb - * Movsd - * Nop - * Not - * Or - * Out - * Pop - * Popad - * Popfd - * Push - * Pushad - * Pushfd - * Raw - * Ret - * Retf - * Rol - * Ror - * ScasB - * ScasD - * ScasW - * Shl - * Shr - * StosB - * StosD - * StosW - * Sub - * Test - * Xchg - * Xor - -.. note:: - - ``Raw``: Output raw data from an hexadecimal string - - >>> windows.native_exec.simple_x64.Raw("90C332FCFF").get_code() - '\x90\xc32\xfc\xff' - - ``Byte``: Output a raw byte - - >>> windows.native_exec.simple_x86.Byte(0x42).get_code() - 'B' :mod:`windows.native_exec.simple_x64` -- X64 Assembler """""""""""""""""""""""""""""""""""""""""""""""""""""" @@ -248,63 +182,6 @@ Demo:: 'g\x8b\x00' -Available Instructions in X64 assembler -''''''''''''''''''''''''''''''''''''''' - -.. note:: - Not all encodings may be implemented for each of the instructions. - - ``Raw`` is not an x64 instruction and allow to insert arbitrary data to the generated code. - -Listing: - * Add - * And - * Cmp - * CmpsB - * CmpsD - * CmpsQ - * CmpsW - * Cpuid - * Dec - * In - * Inc - * Int - * Int3 - * Lea - * Mov - * Nop - * Not - * Or - * Out - * Pop - * Popfq - * Push - * Pushfq - * Raw - * Ret - * Retf - * Retf32 - * ScasB - * ScasD - * ScasQ - * ScasW - * Shl - * Shr - * Sub - * Test - * Xchg - * Xor - - -.. note:: - - ``Raw``: Output raw data from an hexadecimal string - - >>> windows.native_exec.simple_x64.Raw("90C332FCFF").get_code() - '\x90\xc32\xfc\xff' - - - :mod:`windows.native_exec.nativeutils` -- Native utility functions """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" diff --git a/docs/source/windef_generated.rst b/docs/source/windef_generated.rst index 95fff3c..fed44eb 100644 --- a/docs/source/windef_generated.rst +++ b/docs/source/windef_generated.rst @@ -543,6 +543,69 @@ WinDef .. autodata:: EVENT_TRACE_FLAG_REGISTRY .. autodata:: EVENT_TRACE_FLAG_DBGPRINT .. autodata:: EVENT_TRACE_FLAG_VOLMGR +.. autodata:: FILE_NOTIFY_CHANGE_FILE_NAME +.. autodata:: FILE_NOTIFY_CHANGE_DIR_NAME +.. autodata:: FILE_NOTIFY_CHANGE_NAME +.. autodata:: FILE_NOTIFY_CHANGE_ATTRIBUTES +.. autodata:: FILE_NOTIFY_CHANGE_SIZE +.. autodata:: FILE_NOTIFY_CHANGE_LAST_WRITE +.. autodata:: FILE_NOTIFY_CHANGE_LAST_ACCESS +.. autodata:: FILE_NOTIFY_CHANGE_CREATION +.. autodata:: FILE_NOTIFY_CHANGE_EA +.. autodata:: FILE_NOTIFY_CHANGE_SECURITY +.. autodata:: FILE_NOTIFY_CHANGE_STREAM_NAME +.. autodata:: FILE_NOTIFY_CHANGE_STREAM_SIZE +.. autodata:: FILE_NOTIFY_CHANGE_STREAM_WRITE +.. autodata:: FILE_NOTIFY_VALID_MASK +.. autodata:: FILE_ACTION_ADDED +.. autodata:: FILE_ACTION_REMOVED +.. autodata:: FILE_ACTION_MODIFIED +.. autodata:: FILE_ACTION_RENAMED_OLD_NAME +.. autodata:: FILE_ACTION_RENAMED_NEW_NAME +.. autodata:: FILE_ACTION_ADDED_STREAM +.. autodata:: FILE_ACTION_REMOVED_STREAM +.. autodata:: FILE_ACTION_MODIFIED_STREAM +.. autodata:: FILE_ACTION_REMOVED_BY_DELETE +.. autodata:: FILE_ACTION_ID_NOT_TUNNELLED +.. autodata:: FILE_ACTION_TUNNELLED_ID_COLLISION +.. autodata:: FILE_CASE_SENSITIVE_SEARCH +.. autodata:: FILE_CASE_PRESERVED_NAMES +.. autodata:: FILE_UNICODE_ON_DISK +.. autodata:: FILE_PERSISTENT_ACLS +.. autodata:: FILE_FILE_COMPRESSION +.. autodata:: FILE_VOLUME_QUOTAS +.. autodata:: FILE_SUPPORTS_SPARSE_FILES +.. autodata:: FILE_SUPPORTS_REPARSE_POINTS +.. autodata:: FILE_SUPPORTS_REMOTE_STORAGE +.. autodata:: FILE_VOLUME_IS_COMPRESSED +.. autodata:: FILE_SUPPORTS_OBJECT_IDS +.. autodata:: FILE_SUPPORTS_ENCRYPTION +.. autodata:: FILE_NAMED_STREAMS +.. autodata:: FILE_READ_ONLY_VOLUME +.. autodata:: FILE_SEQUENTIAL_WRITE_ONCE +.. autodata:: FILE_SUPPORTS_TRANSACTIONS +.. autodata:: FILE_SUPPORTS_HARD_LINKS +.. autodata:: FILE_SUPPORTS_EXTENDED_ATTRIBUTES +.. autodata:: FILE_SUPPORTS_OPEN_BY_FILE_ID +.. autodata:: FILE_SUPPORTS_USN_JOURNAL +.. autodata:: FILE_SHARE_READ +.. autodata:: FILE_SHARE_WRITE +.. autodata:: FILE_SHARE_DELETE +.. autodata:: FILE_ATTRIBUTE_READONLY +.. autodata:: FILE_ATTRIBUTE_HIDDEN +.. autodata:: FILE_ATTRIBUTE_SYSTEM +.. autodata:: FILE_ATTRIBUTE_DIRECTORY +.. autodata:: FILE_ATTRIBUTE_ARCHIVE +.. autodata:: FILE_ATTRIBUTE_DEVICE +.. autodata:: FILE_ATTRIBUTE_NORMAL +.. autodata:: FILE_ATTRIBUTE_TEMPORARY +.. autodata:: FILE_ATTRIBUTE_SPARSE_FILE +.. autodata:: FILE_ATTRIBUTE_REPARSE_POINT +.. autodata:: FILE_ATTRIBUTE_COMPRESSED +.. autodata:: FILE_ATTRIBUTE_OFFLINE +.. autodata:: FILE_ATTRIBUTE_NOT_CONTENT_INDEXED +.. autodata:: FILE_ATTRIBUTE_ENCRYPTED +.. autodata:: FILE_ATTRIBUTE_VIRTUAL .. autodata:: X86_KGDT_NULL .. autodata:: X86_KGDT_R0_CODE .. autodata:: X86_KGDT_R0_DATA @@ -584,6 +647,7 @@ WinDef .. autodata:: DNS_ATMA_FORMAT_E164 .. autodata:: DNS_ATMA_FORMAT_AESA .. autodata:: DNS_ATMA_MAX_ADDR_LENGTH +.. autodata:: DNS_ADDR_MAX_SOCKADDR_LENGTH .. autodata:: DNS_TYPE_ZERO .. autodata:: DNS_TYPE_A .. autodata:: DNS_TYPE_NS @@ -671,6 +735,15 @@ WinDef .. autodata:: DNS_QUERY_DNSSEC_OK .. autodata:: DNS_QUERY_DNSSEC_CHECKING_DISABLED .. autodata:: DNS_QUERY_RESERVED +.. autodata:: MAX_ADAPTER_DESCRIPTION_LENGTH +.. autodata:: MAX_ADAPTER_NAME_LENGTH +.. autodata:: MAX_ADAPTER_ADDRESS_LENGTH +.. autodata:: DEFAULT_MINIMUM_ENTITIES +.. autodata:: MAX_HOSTNAME_LEN +.. autodata:: MAX_DOMAIN_NAME_LEN +.. autodata:: MAX_SCOPE_ID_LEN +.. autodata:: MAX_DHCPV6_DUID_LENGTH +.. autodata:: MAX_DNS_SUFFIX_STRING_LENGTH .. autodata:: PIPE_ACCESS_INBOUND .. autodata:: PIPE_ACCESS_OUTBOUND .. autodata:: PIPE_ACCESS_DUPLEX @@ -803,6 +876,7 @@ WinDef .. autodata:: PROTECTED_SACL_SECURITY_INFORMATION .. autodata:: UNPROTECTED_DACL_SECURITY_INFORMATION .. autodata:: UNPROTECTED_SACL_SECURITY_INFORMATION +.. autodata:: SECURITY_DESCRIPTOR_REVISION .. autodata:: SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL .. autodata:: SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY .. autodata:: SERVICE_TRIGGER_TYPE_DOMAIN_JOIN @@ -1529,59 +1603,8 @@ WinDef .. autodata:: OPEN_EXISTING .. autodata:: OPEN_ALWAYS .. autodata:: TRUNCATE_EXISTING -.. autodata:: FILE_SHARE_READ -.. autodata:: FILE_SHARE_WRITE -.. autodata:: FILE_SHARE_DELETE -.. autodata:: FILE_ATTRIBUTE_READONLY -.. autodata:: FILE_ATTRIBUTE_HIDDEN -.. autodata:: FILE_ATTRIBUTE_SYSTEM -.. autodata:: FILE_ATTRIBUTE_DIRECTORY -.. autodata:: FILE_ATTRIBUTE_ARCHIVE -.. autodata:: FILE_ATTRIBUTE_DEVICE -.. autodata:: FILE_ATTRIBUTE_NORMAL -.. autodata:: FILE_ATTRIBUTE_TEMPORARY -.. autodata:: FILE_ATTRIBUTE_SPARSE_FILE -.. autodata:: FILE_ATTRIBUTE_REPARSE_POINT -.. autodata:: FILE_ATTRIBUTE_COMPRESSED -.. autodata:: FILE_ATTRIBUTE_OFFLINE -.. autodata:: FILE_ATTRIBUTE_NOT_CONTENT_INDEXED -.. autodata:: FILE_ATTRIBUTE_ENCRYPTED -.. autodata:: FILE_ATTRIBUTE_VIRTUAL -.. autodata:: FILE_NOTIFY_CHANGE_FILE_NAME -.. autodata:: FILE_NOTIFY_CHANGE_DIR_NAME -.. autodata:: FILE_NOTIFY_CHANGE_ATTRIBUTES -.. autodata:: FILE_NOTIFY_CHANGE_SIZE -.. autodata:: FILE_NOTIFY_CHANGE_LAST_WRITE -.. autodata:: FILE_NOTIFY_CHANGE_LAST_ACCESS -.. autodata:: FILE_NOTIFY_CHANGE_CREATION -.. autodata:: FILE_NOTIFY_CHANGE_SECURITY -.. autodata:: FILE_ACTION_ADDED -.. autodata:: FILE_ACTION_REMOVED -.. autodata:: FILE_ACTION_MODIFIED -.. autodata:: FILE_ACTION_RENAMED_OLD_NAME -.. autodata:: FILE_ACTION_RENAMED_NEW_NAME .. autodata:: MAILSLOT_NO_MESSAGE .. autodata:: MAILSLOT_WAIT_FOREVER -.. autodata:: FILE_CASE_SENSITIVE_SEARCH -.. autodata:: FILE_CASE_PRESERVED_NAMES -.. autodata:: FILE_UNICODE_ON_DISK -.. autodata:: FILE_PERSISTENT_ACLS -.. autodata:: FILE_FILE_COMPRESSION -.. autodata:: FILE_VOLUME_QUOTAS -.. autodata:: FILE_SUPPORTS_SPARSE_FILES -.. autodata:: FILE_SUPPORTS_REPARSE_POINTS -.. autodata:: FILE_SUPPORTS_REMOTE_STORAGE -.. autodata:: FILE_VOLUME_IS_COMPRESSED -.. autodata:: FILE_SUPPORTS_OBJECT_IDS -.. autodata:: FILE_SUPPORTS_ENCRYPTION -.. autodata:: FILE_NAMED_STREAMS -.. autodata:: FILE_READ_ONLY_VOLUME -.. autodata:: FILE_SEQUENTIAL_WRITE_ONCE -.. autodata:: FILE_SUPPORTS_TRANSACTIONS -.. autodata:: FILE_SUPPORTS_HARD_LINKS -.. autodata:: FILE_SUPPORTS_EXTENDED_ATTRIBUTES -.. autodata:: FILE_SUPPORTS_OPEN_BY_FILE_ID -.. autodata:: FILE_SUPPORTS_USN_JOURNAL .. autodata:: RRF_RT_REG_NONE .. autodata:: RRF_RT_REG_SZ .. autodata:: RRF_RT_REG_EXPAND_SZ diff --git a/docs/source/winstructs_generated.rst b/docs/source/winstructs_generated.rst index ce2ba7c..2d6acc4 100644 --- a/docs/source/winstructs_generated.rst +++ b/docs/source/winstructs_generated.rst @@ -2278,6 +2278,10 @@ tagSAFEARRAY Alias for :class:`tagSAFEARRAY` +.. class:: LPSAFEARRAY + + Pointer to :class:`tagSAFEARRAY` + .. class:: tagSAFEARRAY .. attribute:: cDims @@ -8301,6 +8305,149 @@ _WIN32_FIND_DATAW :class:`WORD` +_FILE_NOTIFY_INFORMATION +'''''''''''''''''''''''' +.. class:: FILE_NOTIFY_INFORMATION + + Alias for :class:`_FILE_NOTIFY_INFORMATION` + +.. class:: PFILE_NOTIFY_INFORMATION + + Pointer to :class:`_FILE_NOTIFY_INFORMATION` + +.. class:: _FILE_NOTIFY_INFORMATION + + .. attribute:: NextEntryOffset + + :class:`DWORD` + + + .. attribute:: Action + + :class:`DWORD` + + + .. attribute:: FileNameLength + + :class:`DWORD` + + + .. attribute:: FileName + + :class:`WCHAR` + +_FILE_NOTIFY_EXTENDED_INFORMATION +''''''''''''''''''''''''''''''''' +.. class:: PFILE_NOTIFY_EXTENDED_INFORMATION + + Pointer to :class:`_FILE_NOTIFY_EXTENDED_INFORMATION` + +.. class:: FILE_NOTIFY_EXTENDED_INFORMATION + + Alias for :class:`_FILE_NOTIFY_EXTENDED_INFORMATION` + +.. class:: _FILE_NOTIFY_EXTENDED_INFORMATION + + .. attribute:: NextEntryOffset + + :class:`DWORD` + + + .. attribute:: Action + + :class:`DWORD` + + + .. attribute:: CreationTime + + :class:`LARGE_INTEGER` + + + .. attribute:: LastModificationTime + + :class:`LARGE_INTEGER` + + + .. attribute:: LastChangeTime + + :class:`LARGE_INTEGER` + + + .. attribute:: LastAccessTime + + :class:`LARGE_INTEGER` + + + .. attribute:: AllocatedLength + + :class:`LARGE_INTEGER` + + + .. attribute:: FileSize + + :class:`LARGE_INTEGER` + + + .. attribute:: FileAttributes + + :class:`DWORD` + + + .. attribute:: ReparsePointTag + + :class:`DWORD` + + + .. attribute:: FileId + + :class:`LARGE_INTEGER` + + + .. attribute:: ParentFileId + + :class:`LARGE_INTEGER` + + + .. attribute:: FileNameLength + + :class:`DWORD` + + + .. attribute:: FileName + + :class:`WCHAR` + +_FILE_RENAME_INFORMATION +'''''''''''''''''''''''' +.. class:: FILE_RENAME_INFORMATION + + Alias for :class:`_FILE_RENAME_INFORMATION` + +.. class:: PFILE_RENAME_INFORMATION + + Pointer to :class:`_FILE_RENAME_INFORMATION` + +.. class:: _FILE_RENAME_INFORMATION + + .. attribute:: __ANON_DUMMYUNIONNAME_FILE_RENAME_INFORMATION + + :class:`_ANON__FILE_RENAME_INFORMATION_SUB_UNION_1` + + + .. attribute:: RootDirectory + + :class:`HANDLE` + + + .. attribute:: FileNameLength + + :class:`ULONG` + + + .. attribute:: FileName + + :class:`WCHAR` + _GUID ''''' .. class:: REFCLSID @@ -11133,6 +11280,386 @@ _DnsRecordW :class:`_ANON__DNSRECORDW_SUB_UNION_2` +_DnsAddr +'''''''' +.. class:: PDNS_ADDR + + Pointer to :class:`_DnsAddr` + +.. class:: DNS_ADDR + + Alias for :class:`_DnsAddr` + +.. class:: _DnsAddr + + .. attribute:: MaxSa + + :class:`CHAR` ``[DNS_ADDR_MAX_SOCKADDR_LENGTH]`` + + + .. attribute:: DnsAddrUserDword + + :class:`DWORD` ``[8]`` + +_DnsAddrArray +''''''''''''' +.. class:: PDNS_ADDR_ARRAY + + Pointer to :class:`_DnsAddrArray` + +.. class:: DNS_ADDR_ARRAY + + Alias for :class:`_DnsAddrArray` + +.. class:: _DnsAddrArray + + .. attribute:: MaxCount + + :class:`DWORD` + + + .. attribute:: AddrCount + + :class:`DWORD` + + + .. attribute:: Tag + + :class:`DWORD` + + + .. attribute:: Family + + :class:`WORD` + + + .. attribute:: WordReserved + + :class:`WORD` + + + .. attribute:: Flags + + :class:`DWORD` + + + .. attribute:: MatchFlag + + :class:`DWORD` + + + .. attribute:: Reserved1 + + :class:`DWORD` + + + .. attribute:: Reserved2 + + :class:`DWORD` + + + .. attribute:: AddrArray + + :class:`DNS_ADDR` ``[ANY_SIZE]`` + +_DNS_QUERY_REQUEST +'''''''''''''''''' +.. class:: PDNS_QUERY_REQUEST + + Pointer to :class:`_DNS_QUERY_REQUEST` + +.. class:: DNS_QUERY_REQUEST + + Alias for :class:`_DNS_QUERY_REQUEST` + +.. class:: _DNS_QUERY_REQUEST + + .. attribute:: Version + + :class:`ULONG` + + + .. attribute:: QueryName + + :class:`PCWSTR` + + + .. attribute:: QueryType + + :class:`WORD` + + + .. attribute:: QueryOptions + + :class:`ULONG64` + + + .. attribute:: pDnsServerList + + :class:`PDNS_ADDR_ARRAY` + + + .. attribute:: InterfaceIndex + + :class:`ULONG` + + + .. attribute:: pQueryCompletionCallback + + :class:`PDNS_QUERY_COMPLETION_ROUTINE` + + + .. attribute:: pQueryContext + + :class:`PVOID` + +_DNS_QUERY_CANCEL +''''''''''''''''' +.. class:: PDNS_QUERY_CANCEL + + Pointer to :class:`_DNS_QUERY_CANCEL` + +.. class:: DNS_QUERY_CANCEL + + Alias for :class:`_DNS_QUERY_CANCEL` + +.. class:: _DNS_QUERY_CANCEL + + .. attribute:: Reserved + + :class:`CHAR` ``[32]`` + +_DNS_QUERY_RESULT +''''''''''''''''' +.. class:: DNS_QUERY_RESULT + + Alias for :class:`_DNS_QUERY_RESULT` + +.. class:: PDNS_QUERY_RESULT + + Pointer to :class:`_DNS_QUERY_RESULT` + +.. class:: _DNS_QUERY_RESULT + + .. attribute:: Version + + :class:`ULONG` + + + .. attribute:: QueryStatus + + :class:`DNS_STATUS` + + + .. attribute:: QueryOptions + + :class:`ULONG64` + + + .. attribute:: pQueryRecords + + :class:`PVOID` + + + .. attribute:: Reserved + + :class:`PVOID` + +IP_ADDRESS_STRING +''''''''''''''''' +.. class:: IP_MASK_STRING + + Alias for :class:`IP_ADDRESS_STRING` + +.. class:: PIP_MASK_STRING + + Pointer to :class:`IP_ADDRESS_STRING` + +.. class:: PIP_ADDRESS_STRING + + Pointer to :class:`IP_ADDRESS_STRING` + +.. class:: IP_ADDRESS_STRING + + Alias for :class:`IP_ADDRESS_STRING` + +.. class:: IP_ADDRESS_STRING + + .. attribute:: String + + :class:`CHAR` ``[4 * 4]`` + +_IP_ADDR_STRING +''''''''''''''' +.. class:: PIP_ADDR_STRING + + Pointer to :class:`_IP_ADDR_STRING` + +.. class:: IP_ADDR_STRING + + Alias for :class:`_IP_ADDR_STRING` + +.. class:: _IP_ADDR_STRING + + .. attribute:: Next + + :class:`_IP_ADDR_STRING` + + + .. attribute:: IpAddress + + :class:`IP_ADDRESS_STRING` + + + .. attribute:: IpMask + + :class:`IP_MASK_STRING` + + + .. attribute:: Context + + :class:`DWORD` + +_IP_ADAPTER_INFO +'''''''''''''''' +.. class:: IP_ADAPTER_INFO + + Alias for :class:`_IP_ADAPTER_INFO` + +.. class:: PIP_ADAPTER_INFO + + Pointer to :class:`_IP_ADAPTER_INFO` + +.. class:: _IP_ADAPTER_INFO + + .. attribute:: Next + + :class:`_IP_ADAPTER_INFO` + + + .. attribute:: ComboIndex + + :class:`DWORD` + + + .. attribute:: AdapterName + + :class:`CHAR` ``[MAX_ADAPTER_NAME_LENGTH + 4]`` + + + .. attribute:: Description + + :class:`CHAR` ``[MAX_ADAPTER_DESCRIPTION_LENGTH + 4]`` + + + .. attribute:: AddressLength + + :class:`UINT` + + + .. attribute:: Address + + :class:`BYTE` ``[MAX_ADAPTER_ADDRESS_LENGTH]`` + + + .. attribute:: Index + + :class:`DWORD` + + + .. attribute:: Type + + :class:`UINT` + + + .. attribute:: DhcpEnabled + + :class:`UINT` + + + .. attribute:: CurrentIpAddress + + :class:`PIP_ADDR_STRING` + + + .. attribute:: IpAddressList + + :class:`IP_ADDR_STRING` + + + .. attribute:: GatewayList + + :class:`IP_ADDR_STRING` + + + .. attribute:: DhcpServer + + :class:`IP_ADDR_STRING` + + + .. attribute:: HaveWins + + :class:`BOOL` + + + .. attribute:: PrimaryWinsServer + + :class:`IP_ADDR_STRING` + + + .. attribute:: SecondaryWinsServer + + :class:`IP_ADDR_STRING` + + + .. attribute:: LeaseObtained + + :class:`ULONGLONG` + + + .. attribute:: LeaseExpires + + :class:`ULONGLONG` + +_IP_PER_ADAPTER_INFO_W2KSP1 +''''''''''''''''''''''''''' +.. class:: PIP_PER_ADAPTER_INFO + + Pointer to :class:`_IP_PER_ADAPTER_INFO_W2KSP1` + +.. class:: IP_PER_ADAPTER_INFO + + Alias for :class:`_IP_PER_ADAPTER_INFO_W2KSP1` + +.. class:: PIP_PER_ADAPTER_INFO_W2KSP1 + + Pointer to :class:`_IP_PER_ADAPTER_INFO_W2KSP1` + +.. class:: IP_PER_ADAPTER_INFO_W2KSP1 + + Alias for :class:`_IP_PER_ADAPTER_INFO_W2KSP1` + +.. class:: _IP_PER_ADAPTER_INFO_W2KSP1 + + .. attribute:: AutoconfigEnabled + + :class:`UINT` + + + .. attribute:: AutoconfigActive + + :class:`UINT` + + + .. attribute:: CurrentDnsServer + + :class:`PIP_ADDR_STRING` + + + .. attribute:: DnsServerList + + :class:`IP_ADDR_STRING` + _KEY_VALUE_BASIC_INFORMATION '''''''''''''''''''''''''''' .. class:: PKEY_VALUE_BASIC_INFORMATION @@ -16876,6 +17403,10 @@ _SYSTEM_PROCESS_ID_INFORMATION _CLIENT_ID '''''''''' +.. class:: PCLIENT_ID + + Pointer to :class:`_CLIENT_ID` + .. class:: CLIENT_ID Alias for :class:`_CLIENT_ID` @@ -16893,6 +17424,10 @@ _CLIENT_ID _CLIENT_ID64 '''''''''''' +.. class:: PCLIENT_ID64 + + Pointer to :class:`_CLIENT_ID64` + .. class:: CLIENT_ID64 Alias for :class:`_CLIENT_ID64` @@ -16914,6 +17449,10 @@ _CLIENT_ID32 Alias for :class:`_CLIENT_ID32` +.. class:: PCLIENT_ID32 + + Pointer to :class:`_CLIENT_ID32` + .. class:: _CLIENT_ID32 .. attribute:: UniqueProcess @@ -23507,6 +24046,10 @@ Simple types .. autoclass:: LPSERVICE_MAIN_FUNCTIONW +.. autoclass:: LPOVERLAPPED_COMPLETION_ROUTINE + +.. autoclass:: PDNS_QUERY_COMPLETION_ROUTINE + .. autoclass:: LPCONTEXT .. autoclass:: HCERTSTORE @@ -25117,6 +25660,26 @@ _IO_PRIORITY_HINT .. attribute:: MaxIoPriorityTypes(5) +_READ_DIRECTORY_NOTIFY_INFORMATION_CLASS +'''''''''''''''''''''''''''''''''''''''' +.. class:: PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS + + Pointer to :class:`_READ_DIRECTORY_NOTIFY_INFORMATION_CLASS` + + +.. class:: READ_DIRECTORY_NOTIFY_INFORMATION_CLASS + + Alias for :class:`_READ_DIRECTORY_NOTIFY_INFORMATION_CLASS` + + +.. class:: _READ_DIRECTORY_NOTIFY_INFORMATION_CLASS + + + .. attribute:: ReadDirectoryNotifyInformation(0) + + + .. attribute:: ReadDirectoryNotifyExtendedInformation(1) + _POLICY_INFORMATION_CLASS ''''''''''''''''''''''''' .. class:: POLICY_INFORMATION_CLASS @@ -26407,6 +26970,42 @@ ADDRESS_MODE .. attribute:: AddrModeFlat(3) +_COMPUTER_NAME_FORMAT +''''''''''''''''''''' +.. class:: COMPUTER_NAME_FORMAT + + Alias for :class:`_COMPUTER_NAME_FORMAT` + + +.. class:: _COMPUTER_NAME_FORMAT + + + .. attribute:: ComputerNameNetBIOS(0) + + + .. attribute:: ComputerNameDnsHostname(1) + + + .. attribute:: ComputerNameDnsDomain(2) + + + .. attribute:: ComputerNameDnsFullyQualified(3) + + + .. attribute:: ComputerNamePhysicalNetBIOS(4) + + + .. attribute:: ComputerNamePhysicalDnsHostname(5) + + + .. attribute:: ComputerNamePhysicalDnsDomain(6) + + + .. attribute:: ComputerNamePhysicalDnsFullyQualified(7) + + + .. attribute:: ComputerNameMax(8) + _TASK_ACTION_TYPE ''''''''''''''''' .. class:: TASK_ACTION_TYPE diff --git a/windows/generated_def/interfaces.py b/windows/generated_def/interfaces.py index 24c7503..f1f6f62 100644 --- a/windows/generated_def/interfaces.py +++ b/windows/generated_def/interfaces.py @@ -276,6 +276,9 @@ class IWbemLocator(COMInterface): class IWbemObjectSink(COMInterface): IID = generate_IID(0x7C857801, 0x7381, 0x11CF, 0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24, name="IWbemObjectSink", strid="7C857801-7381-11CF-884D-00AA004B2E24") +class IWbemObjectTextSrc(COMInterface): + IID = generate_IID(0xBFBF883A, 0xCAD7, 0x11D3, 0xA1, 0x1B, 0x00, 0x10, 0x5A, 0x1F, 0x51, 0x5A, name="IWbemObjectTextSrc", strid="BFBF883A-CAD7-11D3-A11B-00105A1F515A") + class IWbemQualifierSet(COMInterface): IID = generate_IID(0xDC12A680, 0x737F, 0x11CF, 0x88, 0x4D, 0x00, 0xAA, 0x00, 0x4B, 0x2E, 0x24, name="IWbemQualifierSet", strid="DC12A680-737F-11CF-884D-00AA004B2E24") @@ -2661,6 +2664,19 @@ IWbemObjectSink._functions_ = { "SetStatus": ctypes.WINFUNCTYPE(HRESULT, LONG, HRESULT, BSTR, IWbemClassObject)(4, "SetStatus"), } +IWbemObjectTextSrc._functions_ = { + # QueryInterface -> riid:REFIID, ppvObject:**void + "QueryInterface": ctypes.WINFUNCTYPE(HRESULT, REFIID, POINTER(PVOID))(0, "QueryInterface"), + # AddRef -> + "AddRef": ctypes.WINFUNCTYPE(ULONG)(1, "AddRef"), + # Release -> + "Release": ctypes.WINFUNCTYPE(ULONG)(2, "Release"), + # GetText -> lFlags:LONG, pObj:*IWbemClassObject, uObjTextFormat:ULONG, pCtx:*IWbemContext, strText:*BSTR + "GetText": ctypes.WINFUNCTYPE(HRESULT, LONG, IWbemClassObject, ULONG, IWbemContext, POINTER(BSTR))(3, "GetText"), + # CreateFromText -> lFlags:LONG, strText:BSTR, uObjTextFormat:ULONG, pCtx:*IWbemContext, pNewObj:**IWbemClassObject + "CreateFromText": ctypes.WINFUNCTYPE(HRESULT, LONG, BSTR, ULONG, IWbemContext, POINTER(IWbemClassObject))(4, "CreateFromText"), + } + IWbemQualifierSet._functions_ = { # QueryInterface -> riid:REFIID, ppvObject:**void "QueryInterface": ctypes.WINFUNCTYPE(HRESULT, REFIID, POINTER(PVOID))(0, "QueryInterface"), diff --git a/windows/generated_def/meta.py b/windows/generated_def/meta.py index 8c5c2e5..698a5ae 100644 --- a/windows/generated_def/meta.py +++ b/windows/generated_def/meta.py @@ -826,6 +826,7 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'DEBUG_EVENT_UNLOAD_MODULE', 'DEBUG_ONLY_THIS_PROCESS', 'DEBUG_PROCESS', + 'DEFAULT_MINIMUM_ENTITIES', 'DELETE', 'DETACHED_PROCESS', 'DIRECTORY_ALL_ACCESS', @@ -1590,13 +1591,20 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'MAXIMUM_ALLOWED', 'MAXLEN_IFDESCR', 'MAXLEN_PHYSADDR', + 'MAX_ADAPTER_ADDRESS_LENGTH', + 'MAX_ADAPTER_DESCRIPTION_LENGTH', 'MAX_ADAPTER_NAME', + 'MAX_ADAPTER_NAME_LENGTH', 'MAX_CLASS_NAME_LEN', 'MAX_CONFIG_VALUE', 'MAX_DEVICE_ID_LEN', 'MAX_DEVNODE_ID_LEN', + 'MAX_DHCPV6_DUID_LENGTH', 'MAX_DMA_CHANNELS', + 'MAX_DNS_SUFFIX_STRING_LENGTH', + 'MAX_DOMAIN_NAME_LEN', 'MAX_GUID_STRING_LEN', + 'MAX_HOSTNAME_LEN', 'MAX_INSTANCE_VALUE', 'MAX_INTERFACE_NAME_LEN', 'MAX_IO_PORTS', @@ -1604,6 +1612,7 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'MAX_MEM_REGISTERS', 'MAX_PATH', 'MAX_PROFILE_LEN', + 'MAX_SCOPE_ID_LEN', 'MEM_4MB_PAGES', 'MEM_COMMIT', 'MEM_DECOMMIT', @@ -11749,6 +11758,7 @@ structs = set(['ACCESS_ALLOWED_ACE', 'FILE_NOTIFY_EXTENDED_INFORMATION', 'FILE_NOTIFY_INFORMATION', 'FILE_POSITION_INFORMATION', + 'FILE_RENAME_INFORMATION', 'FILE_STANDARD_INFORMATION', 'FILE_STREAM_INFORMATION', 'FLOATING_SAVE_AREA', @@ -11794,7 +11804,13 @@ structs = set(['ACCESS_ALLOWED_ACE', 'IO_STATUS_BLOCK', 'IP6_ADDRESS', 'IP_ADAPTER_INDEX_MAP', + 'IP_ADAPTER_INFO', + 'IP_ADDRESS_STRING', + 'IP_ADDR_STRING', 'IP_INTERFACE_INFO', + 'IP_MASK_STRING', + 'IP_PER_ADAPTER_INFO', + 'IP_PER_ADAPTER_INFO_W2KSP1', 'IRQ_DES_32', 'IRQ_DES_64', 'IRQ_Des_32_s', @@ -11865,6 +11881,7 @@ structs = set(['ACCESS_ALLOWED_ACE', 'LPQUERY_SERVICE_CONFIGW', 'LPRGBTRIPLE', 'LPRIP_INFO', + 'LPSAFEARRAY', 'LPSAFEARRAYBOUND', 'LPSECURITY_ATTRIBUTES', 'LPSERVICE_STATUS', @@ -12237,6 +12254,7 @@ structs = set(['ACCESS_ALLOWED_ACE', 'PFILE_NOTIFY_EXTENDED_INFORMATION', 'PFILE_NOTIFY_INFORMATION', 'PFILE_POSITION_INFORMATION', + 'PFILE_RENAME_INFORMATION', 'PFILE_STANDARD_INFORMATION', 'PFILE_STREAM_INFORMATION', 'PGENERIC_MAPPING', @@ -12273,7 +12291,13 @@ structs = set(['ACCESS_ALLOWED_ACE', 'PIO_STATUS_BLOCK', 'PIP6_ADDRESS', 'PIP_ADAPTER_INDEX_MAP', + 'PIP_ADAPTER_INFO', + 'PIP_ADDRESS_STRING', + 'PIP_ADDR_STRING', 'PIP_INTERFACE_INFO', + 'PIP_MASK_STRING', + 'PIP_PER_ADAPTER_INFO', + 'PIP_PER_ADAPTER_INFO_W2KSP1', 'PIRQ_DES_32', 'PIRQ_DES_64', 'PIRQ_RANGE', @@ -12923,6 +12947,7 @@ structs = set(['ACCESS_ALLOWED_ACE', '_FILE_NOTIFY_EXTENDED_INFORMATION', '_FILE_NOTIFY_INFORMATION', '_FILE_POSITION_INFORMATION', + '_FILE_RENAME_INFORMATION', '_FILE_STANDARD_INFORMATION', '_FILE_STREAM_INFORMATION', '_FLOATING_SAVE_AREA', @@ -12958,7 +12983,10 @@ structs = set(['ACCESS_ALLOWED_ACE', '_INTERNET_BUFFERSW', '_IO_STATUS_BLOCK', '_IP_ADAPTER_INDEX_MAP', + '_IP_ADAPTER_INFO', + '_IP_ADDR_STRING', '_IP_INTERFACE_INFO', + '_IP_PER_ADAPTER_INFO_W2KSP1', '_ITEMIDLIST', '_JIT_DEBUG_INFO', '_KDHELP', @@ -13729,6 +13757,7 @@ functions = set(['AccessCheck', 'FreeSid', 'GetAce', 'GetAclInformation', + 'GetAdaptersInfo', 'GetClassInfoExA', 'GetClassInfoExW', 'GetClassNameA', @@ -13789,6 +13818,7 @@ functions = set(['AccessCheck', 'GetNamedSecurityInfoW', 'GetNumberOfEventLogRecords', 'GetParent', + 'GetPerAdapterInfo', 'GetPriorityClass', 'GetProcAddress', 'GetProcessDEPPolicy', @@ -14085,6 +14115,19 @@ functions = set(['AccessCheck', 'SHFileOperationA', 'SHGetPathFromIDListA', 'SHGetPathFromIDListW', + 'SafeArrayCopy', + 'SafeArrayCopyData', + 'SafeArrayCreate', + 'SafeArrayCreateVector', + 'SafeArrayDestroy', + 'SafeArrayDestroyData', + 'SafeArrayGetDim', + 'SafeArrayGetElement', + 'SafeArrayGetElemsize', + 'SafeArrayGetLBound', + 'SafeArrayGetUBound', + 'SafeArrayGetVartype', + 'SafeArrayPutElement', 'SetAclInformation', 'SetClipboardData', 'SetConsoleCtrlHandler', @@ -14188,6 +14231,8 @@ functions = set(['AccessCheck', 'SymUnDName64', 'SymUnloadModule', 'SymUnloadModule64', + 'SysAllocString', + 'SysFreeString', 'SystemTimeToFileTime', 'TdhEnumerateProviders', 'TerminateProcess', @@ -14308,6 +14353,7 @@ interfaces = set(['IAction', 'IWbemContext', 'IWbemLocator', 'IWbemObjectSink', + 'IWbemObjectTextSrc', 'IWbemQualifierSet', 'IWbemServices', 'IWebBrowser2']) diff --git a/windows/generated_def/windef.py b/windows/generated_def/windef.py index 0dcdd07..db396c4 100644 --- a/windows/generated_def/windef.py +++ b/windows/generated_def/windef.py @@ -740,6 +740,15 @@ DNS_QUERY_APPEND_MULTILABEL = make_flag("DNS_QUERY_APPEND_MULTILABEL", 0x0080000 DNS_QUERY_DNSSEC_OK = make_flag("DNS_QUERY_DNSSEC_OK", 0x01000000) DNS_QUERY_DNSSEC_CHECKING_DISABLED = make_flag("DNS_QUERY_DNSSEC_CHECKING_DISABLED", 0x02000000) DNS_QUERY_RESERVED = make_flag("DNS_QUERY_RESERVED", 0xf0000000) +MAX_ADAPTER_DESCRIPTION_LENGTH = make_flag("MAX_ADAPTER_DESCRIPTION_LENGTH", 128) +MAX_ADAPTER_NAME_LENGTH = make_flag("MAX_ADAPTER_NAME_LENGTH", 256) +MAX_ADAPTER_ADDRESS_LENGTH = make_flag("MAX_ADAPTER_ADDRESS_LENGTH", 8) +DEFAULT_MINIMUM_ENTITIES = make_flag("DEFAULT_MINIMUM_ENTITIES", 32) +MAX_HOSTNAME_LEN = make_flag("MAX_HOSTNAME_LEN", 128) +MAX_DOMAIN_NAME_LEN = make_flag("MAX_DOMAIN_NAME_LEN", 128) +MAX_SCOPE_ID_LEN = make_flag("MAX_SCOPE_ID_LEN", 256) +MAX_DHCPV6_DUID_LENGTH = make_flag("MAX_DHCPV6_DUID_LENGTH", 130) +MAX_DNS_SUFFIX_STRING_LENGTH = make_flag("MAX_DNS_SUFFIX_STRING_LENGTH", 256) PIPE_ACCESS_INBOUND = make_flag("PIPE_ACCESS_INBOUND", 0x00000001) PIPE_ACCESS_OUTBOUND = make_flag("PIPE_ACCESS_OUTBOUND", 0x00000002) PIPE_ACCESS_DUPLEX = make_flag("PIPE_ACCESS_DUPLEX", 0x00000003) diff --git a/windows/generated_def/winfuncs.py b/windows/generated_def/winfuncs.py index 6d6a1f2..661611c 100644 --- a/windows/generated_def/winfuncs.py +++ b/windows/generated_def/winfuncs.py @@ -330,6 +330,86 @@ CLSIDFromProgIDParams = ((1, 'lpszProgID'), (1, 'lpclsid')) CoTaskMemFreePrototype = WINFUNCTYPE(PVOID, LPVOID) CoTaskMemFreeParams = ((1, 'pv'),) +#def SafeArrayCreate(vt, cDims, rgsabound): +# return SafeArrayCreate.ctypes_function(vt, cDims, rgsabound) +SafeArrayCreatePrototype = WINFUNCTYPE(LPSAFEARRAY, VARTYPE, UINT, POINTER(SAFEARRAYBOUND)) +SafeArrayCreateParams = ((1, 'vt'), (1, 'cDims'), (1, 'rgsabound')) + +#def SafeArrayCreateVector(vt, lLbound, cElements): +# return SafeArrayCreateVector.ctypes_function(vt, lLbound, cElements) +SafeArrayCreateVectorPrototype = WINFUNCTYPE(LPSAFEARRAY, VARTYPE, LONG, ULONG) +SafeArrayCreateVectorParams = ((1, 'vt'), (1, 'lLbound'), (1, 'cElements')) + +#def SafeArrayDestroy(psa): +# return SafeArrayDestroy.ctypes_function(psa) +SafeArrayDestroyPrototype = WINFUNCTYPE(HRESULT, POINTER(SAFEARRAY)) +SafeArrayDestroyParams = ((1, 'psa'),) + +#def SafeArrayDestroyData(psa): +# return SafeArrayDestroyData.ctypes_function(psa) +SafeArrayDestroyDataPrototype = WINFUNCTYPE(HRESULT, POINTER(SAFEARRAY)) +SafeArrayDestroyDataParams = ((1, 'psa'),) + +#def SafeArrayGetElement(psa, rgIndices, pv): +# return SafeArrayGetElement.ctypes_function(psa, rgIndices, pv) +SafeArrayGetElementPrototype = WINFUNCTYPE(HRESULT, POINTER(SAFEARRAY), POINTER(LONG), PVOID) +SafeArrayGetElementParams = ((1, 'psa'), (1, 'rgIndices'), (1, 'pv')) + +#def SafeArrayGetElemsize(psa): +# return SafeArrayGetElemsize.ctypes_function(psa) +SafeArrayGetElemsizePrototype = WINFUNCTYPE(UINT, POINTER(SAFEARRAY)) +SafeArrayGetElemsizeParams = ((1, 'psa'),) + +#def SafeArrayGetLBound(psa, nDim, plLbound): +# return SafeArrayGetLBound.ctypes_function(psa, nDim, plLbound) +SafeArrayGetLBoundPrototype = WINFUNCTYPE(HRESULT, POINTER(SAFEARRAY), UINT, POINTER(LONG)) +SafeArrayGetLBoundParams = ((1, 'psa'), (1, 'nDim'), (1, 'plLbound')) + +#def SafeArrayGetUBound(psa, nDim, plUbound): +# return SafeArrayGetUBound.ctypes_function(psa, nDim, plUbound) +SafeArrayGetUBoundPrototype = WINFUNCTYPE(HRESULT, POINTER(SAFEARRAY), UINT, POINTER(LONG)) +SafeArrayGetUBoundParams = ((1, 'psa'), (1, 'nDim'), (1, 'plUbound')) + +#def SafeArrayGetDim(psa): +# return SafeArrayGetDim.ctypes_function(psa) +SafeArrayGetDimPrototype = WINFUNCTYPE(UINT, POINTER(SAFEARRAY)) +SafeArrayGetDimParams = ((1, 'psa'),) + +#def SafeArrayPutElement(psa, rgIndices, pv): +# return SafeArrayPutElement.ctypes_function(psa, rgIndices, pv) +SafeArrayPutElementPrototype = WINFUNCTYPE(HRESULT, POINTER(SAFEARRAY), POINTER(LONG), PVOID) +SafeArrayPutElementParams = ((1, 'psa'), (1, 'rgIndices'), (1, 'pv')) + +#def SafeArrayGetVartype(psa, pvt): +# return SafeArrayGetVartype.ctypes_function(psa, pvt) +SafeArrayGetVartypePrototype = WINFUNCTYPE(HRESULT, POINTER(SAFEARRAY), POINTER(VARTYPE)) +SafeArrayGetVartypeParams = ((1, 'psa'), (1, 'pvt')) + +#def SysFreeString(bstrString): +# return SysFreeString.ctypes_function(bstrString) +SysFreeStringPrototype = WINFUNCTYPE(VOID, BSTR) +SysFreeStringParams = ((1, 'bstrString'),) + +#def SafeArrayCopy(psa, ppsaOut): +# return SafeArrayCopy.ctypes_function(psa, ppsaOut) +SafeArrayCopyPrototype = WINFUNCTYPE(HRESULT, POINTER(SAFEARRAY), POINTER(LPSAFEARRAY)) +SafeArrayCopyParams = ((1, 'psa'), (1, 'ppsaOut')) + +#def SafeArrayCopyData(psaSource, psaTarget): +# return SafeArrayCopyData.ctypes_function(psaSource, psaTarget) +SafeArrayCopyDataPrototype = WINFUNCTYPE(HRESULT, POINTER(SAFEARRAY), POINTER(SAFEARRAY)) +SafeArrayCopyDataParams = ((1, 'psaSource'), (1, 'psaTarget')) + +#def SysAllocString(psz): +# return SysAllocString.ctypes_function(psz) +SysAllocStringPrototype = WINFUNCTYPE(PVOID, POINTER(OLECHAR)) +SysAllocStringParams = ((1, 'psz'),) + +#def SysFreeString(bstrString): +# return SysFreeString.ctypes_function(bstrString) +SysFreeStringPrototype = WINFUNCTYPE(VOID, BSTR) +SysFreeStringParams = ((1, 'bstrString'),) + #def CryptCATAdminCalcHashFromFileHandle(hFile, pcbHash, pbHash, dwFlags): # return CryptCATAdminCalcHashFromFileHandle.ctypes_function(hFile, pcbHash, pbHash, dwFlags) CryptCATAdminCalcHashFromFileHandlePrototype = WINFUNCTYPE(BOOL, HANDLE, POINTER(DWORD), POINTER(BYTE), DWORD) @@ -1345,6 +1425,16 @@ DnsQuery_WParams = ((1, 'pszName'), (1, 'wType'), (1, 'Options'), (1, 'pExtra'), DnsQueryExPrototype = WINFUNCTYPE(DNS_STATUS, PDNS_QUERY_REQUEST, PDNS_QUERY_RESULT, PDNS_QUERY_CANCEL) DnsQueryExParams = ((1, 'pQueryRequest'), (1, 'pQueryResults'), (1, 'pCancelHandle')) +#def GetAdaptersInfo(AdapterInfo, SizePointer): +# return GetAdaptersInfo.ctypes_function(AdapterInfo, SizePointer) +GetAdaptersInfoPrototype = WINFUNCTYPE(ULONG, PIP_ADAPTER_INFO, PULONG) +GetAdaptersInfoParams = ((1, 'AdapterInfo'), (1, 'SizePointer')) + +#def GetPerAdapterInfo(IfIndex, pPerAdapterInfo, pOutBufLen): +# return GetPerAdapterInfo.ctypes_function(IfIndex, pPerAdapterInfo, pOutBufLen) +GetPerAdapterInfoPrototype = WINFUNCTYPE(DWORD, ULONG, PIP_PER_ADAPTER_INFO, PULONG) +GetPerAdapterInfoParams = ((1, 'IfIndex'), (1, 'pPerAdapterInfo'), (1, 'pOutBufLen')) + #def CreateFileTransactedA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile, hTransaction, pusMiniVersion, pExtendedParameter): # return CreateFileTransactedA.ctypes_function(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile, hTransaction, pusMiniVersion, pExtendedParameter) CreateFileTransactedAPrototype = WINFUNCTYPE(HANDLE, LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE, HANDLE, PUSHORT, PVOID) @@ -2710,6 +2800,36 @@ GetComputerNameExAParams = ((1, 'NameType'), (1, 'lpBuffer'), (1, 'nSize')) GetComputerNameExWPrototype = WINFUNCTYPE(BOOL, COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD) GetComputerNameExWParams = ((1, 'NameType'), (1, 'lpBuffer'), (1, 'nSize')) +#def GetComputerNameA(lpBuffer, lpnSize): +# return GetComputerNameA.ctypes_function(lpBuffer, lpnSize) +GetComputerNameAPrototype = WINFUNCTYPE(BOOL, LPCSTR, LPDWORD) +GetComputerNameAParams = ((1, 'lpBuffer'), (1, 'lpnSize')) + +#def GetComputerNameW(lpBuffer, lpnSize): +# return GetComputerNameW.ctypes_function(lpBuffer, lpnSize) +GetComputerNameWPrototype = WINFUNCTYPE(BOOL, LPWSTR, LPDWORD) +GetComputerNameWParams = ((1, 'lpBuffer'), (1, 'lpnSize')) + +#def LookupAccountSidA(lpSystemName, lpSid, lpName, cchName, lpReferencedDomainName, cchReferencedDomainName, peUse): +# return LookupAccountSidA.ctypes_function(lpSystemName, lpSid, lpName, cchName, lpReferencedDomainName, cchReferencedDomainName, peUse) +LookupAccountSidAPrototype = WINFUNCTYPE(BOOL, LPCSTR, PSID, LPCSTR, LPDWORD, LPCSTR, LPDWORD, PSID_NAME_USE) +LookupAccountSidAParams = ((1, 'lpSystemName'), (1, 'lpSid'), (1, 'lpName'), (1, 'cchName'), (1, 'lpReferencedDomainName'), (1, 'cchReferencedDomainName'), (1, 'peUse')) + +#def LookupAccountSidW(lpSystemName, lpSid, lpName, cchName, lpReferencedDomainName, cchReferencedDomainName, peUse): +# return LookupAccountSidW.ctypes_function(lpSystemName, lpSid, lpName, cchName, lpReferencedDomainName, cchReferencedDomainName, peUse) +LookupAccountSidWPrototype = WINFUNCTYPE(BOOL, LPWSTR, PSID, LPWSTR, LPDWORD, LPWSTR, LPDWORD, PSID_NAME_USE) +LookupAccountSidWParams = ((1, 'lpSystemName'), (1, 'lpSid'), (1, 'lpName'), (1, 'cchName'), (1, 'lpReferencedDomainName'), (1, 'cchReferencedDomainName'), (1, 'peUse')) + +#def LookupAccountNameA(lpSystemName, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse): +# return LookupAccountNameA.ctypes_function(lpSystemName, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse) +LookupAccountNameAPrototype = WINFUNCTYPE(BOOL, LPCSTR, LPCSTR, PSID, LPDWORD, LPSTR, LPDWORD, PSID_NAME_USE) +LookupAccountNameAParams = ((1, 'lpSystemName'), (1, 'lpAccountName'), (1, 'Sid'), (1, 'cbSid'), (1, 'ReferencedDomainName'), (1, 'cchReferencedDomainName'), (1, 'peUse')) + +#def LookupAccountNameW(lpSystemName, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse): +# return LookupAccountNameW.ctypes_function(lpSystemName, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse) +LookupAccountNameWPrototype = WINFUNCTYPE(BOOL, LPCWSTR, LPCWSTR, PSID, LPDWORD, LPWSTR, LPDWORD, PSID_NAME_USE) +LookupAccountNameWParams = ((1, 'lpSystemName'), (1, 'lpAccountName'), (1, 'Sid'), (1, 'cbSid'), (1, 'ReferencedDomainName'), (1, 'cchReferencedDomainName'), (1, 'peUse')) + #def FileTimeToSystemTime(lpFileTime, lpSystemTime): # return FileTimeToSystemTime.ctypes_function(lpFileTime, lpSystemTime) FileTimeToSystemTimePrototype = WINFUNCTYPE(BOOL, POINTER(FILETIME), LPSYSTEMTIME) @@ -3695,36 +3815,6 @@ GetProcessImageFileNameWParams = ((1, 'hProcess'), (1, 'lpImageFileName'), (1, ' GetSystemMetricsPrototype = WINFUNCTYPE(INT, INT) GetSystemMetricsParams = ((1, 'nIndex'),) -#def GetComputerNameA(lpBuffer, lpnSize): -# return GetComputerNameA.ctypes_function(lpBuffer, lpnSize) -GetComputerNameAPrototype = WINFUNCTYPE(BOOL, LPCSTR, LPDWORD) -GetComputerNameAParams = ((1, 'lpBuffer'), (1, 'lpnSize')) - -#def GetComputerNameW(lpBuffer, lpnSize): -# return GetComputerNameW.ctypes_function(lpBuffer, lpnSize) -GetComputerNameWPrototype = WINFUNCTYPE(BOOL, LPWSTR, LPDWORD) -GetComputerNameWParams = ((1, 'lpBuffer'), (1, 'lpnSize')) - -#def LookupAccountSidA(lpSystemName, lpSid, lpName, cchName, lpReferencedDomainName, cchReferencedDomainName, peUse): -# return LookupAccountSidA.ctypes_function(lpSystemName, lpSid, lpName, cchName, lpReferencedDomainName, cchReferencedDomainName, peUse) -LookupAccountSidAPrototype = WINFUNCTYPE(BOOL, LPCSTR, PSID, LPCSTR, LPDWORD, LPCSTR, LPDWORD, PSID_NAME_USE) -LookupAccountSidAParams = ((1, 'lpSystemName'), (1, 'lpSid'), (1, 'lpName'), (1, 'cchName'), (1, 'lpReferencedDomainName'), (1, 'cchReferencedDomainName'), (1, 'peUse')) - -#def LookupAccountSidW(lpSystemName, lpSid, lpName, cchName, lpReferencedDomainName, cchReferencedDomainName, peUse): -# return LookupAccountSidW.ctypes_function(lpSystemName, lpSid, lpName, cchName, lpReferencedDomainName, cchReferencedDomainName, peUse) -LookupAccountSidWPrototype = WINFUNCTYPE(BOOL, LPWSTR, PSID, LPWSTR, LPDWORD, LPWSTR, LPDWORD, PSID_NAME_USE) -LookupAccountSidWParams = ((1, 'lpSystemName'), (1, 'lpSid'), (1, 'lpName'), (1, 'cchName'), (1, 'lpReferencedDomainName'), (1, 'cchReferencedDomainName'), (1, 'peUse')) - -#def LookupAccountNameA(lpSystemName, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse): -# return LookupAccountNameA.ctypes_function(lpSystemName, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse) -LookupAccountNameAPrototype = WINFUNCTYPE(BOOL, LPCSTR, LPCSTR, PSID, LPDWORD, LPSTR, LPDWORD, PSID_NAME_USE) -LookupAccountNameAParams = ((1, 'lpSystemName'), (1, 'lpAccountName'), (1, 'Sid'), (1, 'cbSid'), (1, 'ReferencedDomainName'), (1, 'cchReferencedDomainName'), (1, 'peUse')) - -#def LookupAccountNameW(lpSystemName, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse): -# return LookupAccountNameW.ctypes_function(lpSystemName, lpAccountName, Sid, cbSid, ReferencedDomainName, cchReferencedDomainName, peUse) -LookupAccountNameWPrototype = WINFUNCTYPE(BOOL, LPCWSTR, LPCWSTR, PSID, LPDWORD, LPWSTR, LPDWORD, PSID_NAME_USE) -LookupAccountNameWParams = ((1, 'lpSystemName'), (1, 'lpAccountName'), (1, 'Sid'), (1, 'cbSid'), (1, 'ReferencedDomainName'), (1, 'cchReferencedDomainName'), (1, 'peUse')) - #def GetInterfaceInfo(pIfTable, dwOutBufLen): # return GetInterfaceInfo.ctypes_function(pIfTable, dwOutBufLen) GetInterfaceInfoPrototype = WINFUNCTYPE(DWORD, PIP_INTERFACE_INFO, PULONG) diff --git a/windows/generated_def/winstructs.py b/windows/generated_def/winstructs.py index b39b973..4cccf41 100644 --- a/windows/generated_def/winstructs.py +++ b/windows/generated_def/winstructs.py @@ -960,6 +960,7 @@ class tagSAFEARRAY(Structure): ("rgsabound", SAFEARRAYBOUND * (1)), ] SAFEARRAY = tagSAFEARRAY +LPSAFEARRAY = POINTER(tagSAFEARRAY) class __tagBRECORD(Structure): _fields_ = [ @@ -2393,6 +2394,62 @@ class _DNS_QUERY_RESULT(Structure): DNS_QUERY_RESULT = _DNS_QUERY_RESULT PDNS_QUERY_RESULT = POINTER(_DNS_QUERY_RESULT) +class IP_ADDRESS_STRING(Structure): + _fields_ = [ + ("String", CHAR * (4 * 4)), + ] +IP_MASK_STRING = IP_ADDRESS_STRING +PIP_MASK_STRING = POINTER(IP_ADDRESS_STRING) +PIP_ADDRESS_STRING = POINTER(IP_ADDRESS_STRING) + +# Self referencing struct tricks +class _IP_ADDR_STRING(Structure): pass +PIP_ADDR_STRING = POINTER(_IP_ADDR_STRING) +IP_ADDR_STRING = _IP_ADDR_STRING +_IP_ADDR_STRING._fields_ = [ + ("Next", POINTER(_IP_ADDR_STRING)), + ("IpAddress", IP_ADDRESS_STRING), + ("IpMask", IP_MASK_STRING), + ("Context", DWORD), +] + +# Self referencing struct tricks +class _IP_ADAPTER_INFO(Structure): pass +IP_ADAPTER_INFO = _IP_ADAPTER_INFO +PIP_ADAPTER_INFO = POINTER(_IP_ADAPTER_INFO) +_IP_ADAPTER_INFO._fields_ = [ + ("Next", POINTER(_IP_ADAPTER_INFO)), + ("ComboIndex", DWORD), + ("AdapterName", CHAR * (MAX_ADAPTER_NAME_LENGTH + 4)), + ("Description", CHAR * (MAX_ADAPTER_DESCRIPTION_LENGTH + 4)), + ("AddressLength", UINT), + ("Address", BYTE * (MAX_ADAPTER_ADDRESS_LENGTH)), + ("Index", DWORD), + ("Type", UINT), + ("DhcpEnabled", UINT), + ("CurrentIpAddress", PIP_ADDR_STRING), + ("IpAddressList", IP_ADDR_STRING), + ("GatewayList", IP_ADDR_STRING), + ("DhcpServer", IP_ADDR_STRING), + ("HaveWins", BOOL), + ("PrimaryWinsServer", IP_ADDR_STRING), + ("SecondaryWinsServer", IP_ADDR_STRING), + ("LeaseObtained", ULONGLONG), + ("LeaseExpires", ULONGLONG), +] + +class _IP_PER_ADAPTER_INFO_W2KSP1(Structure): + _fields_ = [ + ("AutoconfigEnabled", UINT), + ("AutoconfigActive", UINT), + ("CurrentDnsServer", PIP_ADDR_STRING), + ("DnsServerList", IP_ADDR_STRING), + ] +PIP_PER_ADAPTER_INFO = POINTER(_IP_PER_ADAPTER_INFO_W2KSP1) +IP_PER_ADAPTER_INFO = _IP_PER_ADAPTER_INFO_W2KSP1 +PIP_PER_ADAPTER_INFO_W2KSP1 = POINTER(_IP_PER_ADAPTER_INFO_W2KSP1) +IP_PER_ADAPTER_INFO_W2KSP1 = _IP_PER_ADAPTER_INFO_W2KSP1 + KeyValueBasicInformation = EnumValue("_KEY_VALUE_INFORMATION_CLASS", "KeyValueBasicInformation", 0x0) KeyValueFullInformation = EnumValue("_KEY_VALUE_INFORMATION_CLASS", "KeyValueFullInformation", 0x1) KeyValuePartialInformation = EnumValue("_KEY_VALUE_INFORMATION_CLASS", "KeyValuePartialInformation", 0x2) @@ -8867,6 +8924,37 @@ class _FILE_NOTIFY_EXTENDED_INFORMATION(Structure): PFILE_NOTIFY_EXTENDED_INFORMATION = POINTER(_FILE_NOTIFY_EXTENDED_INFORMATION) FILE_NOTIFY_EXTENDED_INFORMATION = _FILE_NOTIFY_EXTENDED_INFORMATION +class _ANON__FILE_RENAME_INFORMATION_SUB_UNION_1(Union): + _fields_ = [ + ("ReplaceIfExists", BOOLEAN), + ("Flags", ULONG), + ] + +class _FILE_RENAME_INFORMATION(Structure): + _anonymous_ = ("__ANON_DUMMYUNIONNAME_FILE_RENAME_INFORMATION",) + _fields_ = [ + ("__ANON_DUMMYUNIONNAME_FILE_RENAME_INFORMATION", _ANON__FILE_RENAME_INFORMATION_SUB_UNION_1), + ("RootDirectory", HANDLE), + ("FileNameLength", ULONG), + ("FileName", WCHAR * (1)), + ] +FILE_RENAME_INFORMATION = _FILE_RENAME_INFORMATION +PFILE_RENAME_INFORMATION = POINTER(_FILE_RENAME_INFORMATION) + +INITIAL_FILE_RENAME_INFORMATION = _FILE_RENAME_INFORMATION + +class _FILE_RENAME_INFORMATION(INITIAL_FILE_RENAME_INFORMATION): + @property + def filename(self): + filename_addr = ctypes.addressof(self) + type(self).FileName.offset + if getattr(self, "_target", None) is not None: #remote ctypes :D -> TRICKS OF THE YEAR + raw_data = self._target.read_memory(filename_addr, self.FileNameLength) + return raw_data.decode("utf16") + size = int(self.FileNameLength / 2) + return (ctypes.c_wchar * size).from_address(filename_addr)[:] + +FILE_RENAME_INFORMATION = _FILE_RENAME_INFORMATION +PFILE_RENAME_INFORMATION = POINTER(_FILE_RENAME_INFORMATION) PolicyAuditLogInformation = EnumValue("_POLICY_INFORMATION_CLASS", "PolicyAuditLogInformation", 0x1) PolicyAuditEventsInformation = EnumValue("_POLICY_INFORMATION_CLASS", "PolicyAuditEventsInformation", 0x2) PolicyPrimaryDomainInformation = EnumValue("_POLICY_INFORMATION_CLASS", "PolicyPrimaryDomainInformation", 0x3) diff --git a/windows/winproxy/apis/__init__.py b/windows/winproxy/apis/__init__.py index 96914c6..86206da 100644 --- a/windows/winproxy/apis/__init__.py +++ b/windows/winproxy/apis/__init__.py @@ -9,6 +9,7 @@ from .kernel32 import * from .ktmw32 import * from .ntdll import * from .ole32 import * +from .oleaut32 import * from .oleacc import * from .psapi import * from .setupapi import * diff --git a/windows/winproxy/apis/iphlpapi.py b/windows/winproxy/apis/iphlpapi.py index ed192e0..1c6da15 100644 --- a/windows/winproxy/apis/iphlpapi.py +++ b/windows/winproxy/apis/iphlpapi.py @@ -36,4 +36,12 @@ def GetIpAddrTable(pIpAddrTable, pdwSize, bOrder=False): @IphlpapiProxy() def GetIpNetTable(IpNetTable, SizePointer, Order): - return GetIpNetTable.ctypes_function(IpNetTable, SizePointer, Order) \ No newline at end of file + return GetIpNetTable.ctypes_function(IpNetTable, SizePointer, Order) + +@IphlpapiProxy() +def GetAdaptersInfo(AdapterInfo, SizePointer): + return GetAdaptersInfo.ctypes_function(AdapterInfo, SizePointer) + +@IphlpapiProxy() +def GetPerAdapterInfo(IfIndex, pPerAdapterInfo, pOutBufLen): + return GetPerAdapterInfo.ctypes_function(IfIndex, pPerAdapterInfo, pOutBufLen) \ No newline at end of file diff --git a/windows/winproxy/apis/oleaut32.py b/windows/winproxy/apis/oleaut32.py new file mode 100644 index 0000000..e77733f --- /dev/null +++ b/windows/winproxy/apis/oleaut32.py @@ -0,0 +1,43 @@ +import ctypes +import windows.generated_def as gdef + +from ..apiproxy import ApiProxy, NeededParameter +from ..error import no_error_check, fail_on_zero, succeed_on_zero + +# IMPORTANT: +# Functions that returns HRESULT (like CoInitializeEx) will raise if HRESULT is an error +# even if there is no error check on the return value + +class Ole32Proxy(ApiProxy): + APIDLL = "oleaut32" + default_error_check = staticmethod(no_error_check) + + +@Ole32Proxy() +def SysAllocString(psz): + return SysAllocString.ctypes_function(psz) + + +@Ole32Proxy() +def SysFreeString(bstrString): + return SysFreeString.ctypes_function(bstrString) + +@Ole32Proxy(error_check=fail_on_zero) +def SafeArrayCreate(vt, cDims, rgsabound): + return SafeArrayCreate.ctypes_function(vt, cDims, rgsabound) + + +@Ole32Proxy(error_check=succeed_on_zero) +def SafeArrayDestroy(psa): + return SafeArrayDestroy.ctypes_function(psa) + + +@Ole32Proxy(error_check=succeed_on_zero) +def SafeArrayPutElement(psa, rgIndices, pv): + return SafeArrayPutElement.ctypes_function(psa, rgIndices, pv) + + +@Ole32Proxy(error_check=succeed_on_zero) +def SafeArrayGetElement(psa, rgIndices, pv): + return SafeArrayGetElement.ctypes_function(psa, rgIndices, pv) +