diff --git a/ctypes_generation/definitions/defines/windef.txt b/ctypes_generation/definitions/defines/windef.txt index c57187f..37252c1 100644 --- a/ctypes_generation/definitions/defines/windef.txt +++ b/ctypes_generation/definitions/defines/windef.txt @@ -198,38 +198,6 @@ #define SPECIFIC_RIGHTS_ALL (0x0000FFFFL) -#define AF_UNSPEC 0 -#define AF_UNIX 1 -#define AF_INET 2 -#define AF_IMPLINK 3 -#define AF_PUP 4 -#define AF_CHAOS 5 -#define AF_NS 6 -#define AF_IPX AF_NS -#define AF_ISO 7 -#define AF_OSI AF_ISO -#define AF_ECMA 8 -#define AF_DATAKIT 9 -#define AF_CCITT 10 -#define AF_SNA 11 -#define AF_DECnet 12 -#define AF_DLI 13 -#define AF_LAT 14 -#define AF_HYLINK 15 -#define AF_APPLETALK 16 -#define AF_NETBIOS 17 -#define AF_VOICEVIEW 18 -#define AF_FIREFOX 19 -#define AF_UNKNOWN1 20 -#define AF_BAN 21 -#define AF_ATM 22 -#define AF_INET6 23 -#define AF_CLUSTER 24 -#define AF_12844 25 -#define AF_IRDA 26 -#define AF_NETDES 28 - - #define EXCEPTION_NONCONTINUABLE 0x1 #define EXCEPTION_MAXIMUM_PARAMETERS 15 diff --git a/ctypes_generation/definitions/defines/wsocket.txt b/ctypes_generation/definitions/defines/wsocket.txt new file mode 100644 index 0000000..6d95109 --- /dev/null +++ b/ctypes_generation/definitions/defines/wsocket.txt @@ -0,0 +1,93 @@ +#define WSADESCRIPTION_LEN 256 +#define WSASYS_STATUS_LEN 128 +#define WSAPROTOCOL_LEN 255 +#define MAX_PROTOCOL_CHAIN 7 +#define BASE_PROTOCOL 1 +#define LAYERED_PROTOCOL 0 + + +// INVALID_SOCKET (SOCKET)(~0) // will change in 32 & 64 bits.. +#define INVALID_SOCKET32 (0xffffffff) +#define INVALID_SOCKET64 (0xffffffffffffffff) + +#define SOCKET_ERROR (-1) + + +/* + * Constants and structures defined by the internet system, + * Per RFC 790, September 1981, taken from the BSD file netinet/in.h. + */ + + +/* + * Types + */ +#define SOCK_STREAM 1 /* stream socket */ +#define SOCK_DGRAM 2 /* datagram socket */ +#define SOCK_RAW 3 /* raw-protocol interface */ +#define SOCK_RDM 4 /* reliably-delivered message */ +#define SOCK_SEQPACKET 5 /* sequenced packet stream */ + +/* + * Protocols + */ +#define IPPROTO_IP 0 /* dummy for IP */ +#define IPPROTO_ICMP 1 /* control message protocol */ +#define IPPROTO_IGMP 2 /* group management protocol */ +#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */ +#define IPPROTO_TCP 6 /* tcp */ +#define IPPROTO_PUP 12 /* pup */ +#define IPPROTO_UDP 17 /* user datagram protocol */ +#define IPPROTO_IDP 22 /* xns idp */ +#define IPPROTO_ND 77 /* UNOFFICIAL net disk proto */ + +#define IPPROTO_RAW 255 /* raw IP packet */ +#define IPPROTO_MAX 256 + + +/* + * Port/socket numbers: network standard functions + */ +#define IPPORT_ECHO 7 +#define IPPORT_DISCARD 9 +#define IPPORT_SYSTAT 11 +#define IPPORT_DAYTIME 13 +#define IPPORT_NETSTAT 15 +#define IPPORT_FTP 21 +#define IPPORT_TELNET 23 +#define IPPORT_SMTP 25 +#define IPPORT_TIMESERVER 37 +#define IPPORT_NAMESERVER 42 +#define IPPORT_WHOIS 43 +#define IPPORT_MTP 57 + + +/* + * Address families. + */ +#define AF_UNSPEC 0 /* unspecified */ +#define AF_UNIX 1 /* local to host (pipes, portals) */ +#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ +#define AF_IMPLINK 3 /* arpanet imp addresses */ +#define AF_PUP 4 /* pup protocols: e.g. BSP */ +#define AF_CHAOS 5 /* mit CHAOS protocols */ +#define AF_IPX 6 /* IPX and SPX */ +#define AF_NS 6 /* XEROX NS protocols */ +#define AF_ISO 7 /* ISO protocols */ +#define AF_OSI AF_ISO /* OSI is ISO */ +#define AF_ECMA 8 /* european computer manufacturers */ +#define AF_DATAKIT 9 /* datakit protocols */ +#define AF_CCITT 10 /* CCITT protocols, X.25 etc */ +#define AF_SNA 11 /* IBM SNA */ +#define AF_DECnet 12 /* DECnet */ +#define AF_DLI 13 /* Direct data link interface */ +#define AF_LAT 14 /* LAT */ +#define AF_HYLINK 15 /* NSC Hyperchannel */ +#define AF_APPLETALK 16 /* AppleTalk */ +#define AF_NETBIOS 17 /* NetBios-style addresses */ +#define AF_VOICEVIEW 18 /* VoiceView */ +#define AF_FIREFOX 19 /* FireFox */ +#define AF_UNKNOWN1 20 /* Somebody is using this! */ +#define AF_BAN 21 /* Banyan */ + +#define AF_MAX 22 \ No newline at end of file diff --git a/ctypes_generation/definitions/functions/winfunc.txt b/ctypes_generation/definitions/functions/winfunc.txt index fecd119..a7bc93c 100644 --- a/ctypes_generation/definitions/functions/winfunc.txt +++ b/ctypes_generation/definitions/functions/winfunc.txt @@ -776,6 +776,12 @@ NTSTATUS RtlGetCompressionWorkSpaceSize( ); +VOID WINAPI RtlMoveMemory( + _Out_ PVOID Destination, + _In_ PVOID Source, + _In_ SIZE_T Length +); + INT WINAPI lstrcmpA( __in LPCSTR lpString1, __in LPCSTR lpString2 diff --git a/ctypes_generation/definitions/functions/wsocket.txt b/ctypes_generation/definitions/functions/wsocket.txt new file mode 100644 index 0000000..f3af1d1 --- /dev/null +++ b/ctypes_generation/definitions/functions/wsocket.txt @@ -0,0 +1,81 @@ +INT WSAStartup( + [in] WORD wVersionRequested, + [out] LPWSADATA lpWSAData // structure depends on 32 / 64 bits.. +); + + +INT WSACleanup(); +INT WSAGetLastError(); + + +INT getaddrinfo( + [in, optional] PCSTR pNodeName, + [in, optional] PCSTR pServiceName, + [in, optional] ADDRINFOA *pHints, + [out] PADDRINFOA *ppResult +); + + +INT GetAddrInfoW( + [in, optional] PCWSTR pNodeName, + [in, optional] PCWSTR pServiceName, + [in, optional] ADDRINFOW *pHints, + [out] PADDRINFOW *ppResult +); + + +SOCKET WSASocketA( + [in] INT af, + [in] INT type, + [in] INT protocol, + [in] LPWSAPROTOCOL_INFOA lpProtocolInfo, + [in] GROUP g, + [in] DWORD dwFlags +); + + +SOCKET WSASocketW( + [in] INT af, + [in] INT type, + [in] INT protocol, + [in] LPWSAPROTOCOL_INFOW lpProtocolInfo, + [in] GROUP g, + [in] DWORD dwFlags +); + + +SOCKET socket( + [in] INT af, + [in] INT type, + [in] INT protocol +); + +INT connect( + [in] SOCKET s, + [in] sockaddr *name, + [in] INT namelen +); + + +INT send( + [in] SOCKET s, + [in] CHAR *buf, + [in] INT len, + [in] INT flags +); + +INT recv( + [in] SOCKET s, + [out] CHAR *buf, + [in] INT len, + [in] INT flags +); + +INT shutdown( + [in] SOCKET s, + [in] INT how +); + +INT closesocket( + [in] SOCKET s +); \ No newline at end of file diff --git a/ctypes_generation/definitions/simple_types.txt b/ctypes_generation/definitions/simple_types.txt index 5ccd494..b8490c4 100644 --- a/ctypes_generation/definitions/simple_types.txt +++ b/ctypes_generation/definitions/simple_types.txt @@ -202,6 +202,11 @@ RPCOLEDATAREP = ULONG HREFTYPE = DWORD SFGAOF = ULONG +/* SOCKET STUFF */ + +GROUP = UINT +SOCKET = HANDLE + /* Function PTR */ WNDPROC = PVOID @@ -248,4 +253,5 @@ LPCONTEXT = PVOID HCERTSTORE = PVOID HCRYPTMSG = PVOID PALPC_PORT_ATTRIBUTES = PVOID -PPORT_MESSAGE = PVOID \ No newline at end of file +PPORT_MESSAGE = PVOID +LPWSADATA = PVOID \ No newline at end of file diff --git a/ctypes_generation/definitions/structures/wsocket.txt b/ctypes_generation/definitions/structures/wsocket.txt new file mode 100644 index 0000000..04d5b99 --- /dev/null +++ b/ctypes_generation/definitions/structures/wsocket.txt @@ -0,0 +1,122 @@ +typedef struct WSAData64 { + WORD wVersion; + WORD wHighVersion; + USHORT iMaxSockets; + USHORT iMaxUdpDg; + CHAR * lpVendorInfo; + CHAR szDescription[WSADESCRIPTION_LEN+1]; + CHAR szSystemStatus[WSASYS_STATUS_LEN+1]; +} WSADATA64, *LPWSADATA64; + +typedef struct WSAData32 { + WORD wVersion; + WORD wHighVersion; + CHAR szDescription[WSADESCRIPTION_LEN+1]; + CHAR szSystemStatus[WSASYS_STATUS_LEN+1]; + USHORT iMaxSockets; + USHORT iMaxUdpDg; + CHAR * lpVendorInfo; +} WSADATA32, *LPWSADATA32; + +struct in_addr { + union { + struct { + UCHAR s_b1; + UCHAR s_b2; + UCHAR s_b3; + UCHAR s_b4; + } S_un_b; + struct { + USHORT s_w1; + USHORT s_w2; + } S_un_w; + ULONG S_addr; + } S_un; +}; + +struct sockaddr { + USHORT sa_family; + CHAR sa_data[14]; +}; + +struct sockaddr_in { + SHORT sin_family; + USHORT sin_port; + struct in_addr sin_addr; + CHAR sin_zero[8]; +}; + + +typedef struct addrinfoW { + INT ai_flags; + INT ai_family; + INT ai_socktype; + INT ai_protocol; + SIZE_T ai_addrlen; + PWSTR ai_canonname; + struct sockaddr *ai_addr; + struct addrinfoW *ai_next; +} ADDRINFOW, *PADDRINFOW; + +typedef struct _WSAPROTOCOLCHAIN { + INT ChainLen; + DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; +} WSAPROTOCOLCHAIN, *LPWSAPROTOCOLCHAIN; + +typedef struct _WSAPROTOCOL_INFOA { + DWORD dwServiceFlags1; + DWORD dwServiceFlags2; + DWORD dwServiceFlags3; + DWORD dwServiceFlags4; + DWORD dwProviderFlags; + GUID ProviderId; + DWORD dwCatalogEntryId; + WSAPROTOCOLCHAIN ProtocolChain; + INT iVersion; + INT iAddressFamily; + INT iMaxSockAddr; + INT iMinSockAddr; + INT iSocketType; + INT iProtocol; + INT iProtocolMaxOffset; + INT iNetworkByteOrder; + INT iSecurityScheme; + DWORD dwMessageSize; + DWORD dwProviderReserved; + CHAR szProtocol[WSAPROTOCOL_LEN + 1]; +} WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA; + +typedef struct _WSAPROTOCOL_INFOW { + DWORD dwServiceFlags1; + DWORD dwServiceFlags2; + DWORD dwServiceFlags3; + DWORD dwServiceFlags4; + DWORD dwProviderFlags; + GUID ProviderId; + DWORD dwCatalogEntryId; + WSAPROTOCOLCHAIN ProtocolChain; + INT iVersion; + INT iAddressFamily; + INT iMaxSockAddr; + INT iMinSockAddr; + INT iSocketType; + INT iProtocol; + INT iProtocolMaxOffset; + INT iNetworkByteOrder; + INT iSecurityScheme; + DWORD dwMessageSize; + DWORD dwProviderReserved; + WCHAR szProtocol[WSAPROTOCOL_LEN + 1]; +} WSAPROTOCOL_INFOW, *LPWSAPROTOCOL_INFOW; + + +typedef struct addrinfo { + INT ai_flags; + INT ai_family; + INT ai_socktype; + INT ai_protocol; + SIZE_T ai_addrlen; + CHAR *ai_canonname; + struct sockaddr *ai_addr; + struct addrinfo *ai_next; +} ADDRINFOA, *PADDRINFOA; \ No newline at end of file diff --git a/docs/source/windef_generated.rst b/docs/source/windef_generated.rst index fed44eb..6764074 100644 --- a/docs/source/windef_generated.rst +++ b/docs/source/windef_generated.rst @@ -1548,36 +1548,6 @@ WinDef .. autodata:: STANDARD_RIGHTS_EXECUTE .. autodata:: STANDARD_RIGHTS_ALL .. autodata:: SPECIFIC_RIGHTS_ALL -.. autodata:: AF_UNSPEC -.. autodata:: AF_UNIX -.. autodata:: AF_INET -.. autodata:: AF_IMPLINK -.. autodata:: AF_PUP -.. autodata:: AF_CHAOS -.. autodata:: AF_NS -.. autodata:: AF_IPX -.. autodata:: AF_ISO -.. autodata:: AF_OSI -.. autodata:: AF_ECMA -.. autodata:: AF_DATAKIT -.. autodata:: AF_CCITT -.. autodata:: AF_SNA -.. autodata:: AF_DECnet -.. autodata:: AF_DLI -.. autodata:: AF_LAT -.. autodata:: AF_HYLINK -.. autodata:: AF_APPLETALK -.. autodata:: AF_NETBIOS -.. autodata:: AF_VOICEVIEW -.. autodata:: AF_FIREFOX -.. autodata:: AF_UNKNOWN1 -.. autodata:: AF_BAN -.. autodata:: AF_ATM -.. autodata:: AF_INET6 -.. autodata:: AF_CLUSTER -.. autodata:: AF_12844 -.. autodata:: AF_IRDA -.. autodata:: AF_NETDES .. autodata:: EXCEPTION_NONCONTINUABLE .. autodata:: EXCEPTION_MAXIMUM_PARAMETERS .. autodata:: EXCEPTION_EXECUTE_HANDLER @@ -2754,3 +2724,65 @@ WinDef .. autodata:: CMSG_CTRL_VERIFY_SIGNATURE_EX .. autodata:: CMSG_CTRL_ADD_CMS_SIGNER_INFO .. autodata:: CMSG_CTRL_ENABLE_STRONG_SIGNATURE +.. autodata:: WSADESCRIPTION_LEN +.. autodata:: WSASYS_STATUS_LEN +.. autodata:: WSAPROTOCOL_LEN +.. autodata:: MAX_PROTOCOL_CHAIN +.. autodata:: BASE_PROTOCOL +.. autodata:: LAYERED_PROTOCOL +.. autodata:: INVALID_SOCKET32 +.. autodata:: INVALID_SOCKET64 +.. autodata:: SOCKET_ERROR +.. autodata:: SOCK_STREAM +.. autodata:: SOCK_DGRAM +.. autodata:: SOCK_RAW +.. autodata:: SOCK_RDM +.. autodata:: SOCK_SEQPACKET +.. autodata:: IPPROTO_IP +.. autodata:: IPPROTO_ICMP +.. autodata:: IPPROTO_IGMP +.. autodata:: IPPROTO_GGP +.. autodata:: IPPROTO_TCP +.. autodata:: IPPROTO_PUP +.. autodata:: IPPROTO_UDP +.. autodata:: IPPROTO_IDP +.. autodata:: IPPROTO_ND +.. autodata:: IPPROTO_RAW +.. autodata:: IPPROTO_MAX +.. autodata:: IPPORT_ECHO +.. autodata:: IPPORT_DISCARD +.. autodata:: IPPORT_SYSTAT +.. autodata:: IPPORT_DAYTIME +.. autodata:: IPPORT_NETSTAT +.. autodata:: IPPORT_FTP +.. autodata:: IPPORT_TELNET +.. autodata:: IPPORT_SMTP +.. autodata:: IPPORT_TIMESERVER +.. autodata:: IPPORT_NAMESERVER +.. autodata:: IPPORT_WHOIS +.. autodata:: IPPORT_MTP +.. autodata:: AF_UNSPEC +.. autodata:: AF_UNIX +.. autodata:: AF_INET +.. autodata:: AF_IMPLINK +.. autodata:: AF_PUP +.. autodata:: AF_CHAOS +.. autodata:: AF_IPX +.. autodata:: AF_NS +.. autodata:: AF_ISO +.. autodata:: AF_OSI +.. autodata:: AF_ECMA +.. autodata:: AF_DATAKIT +.. autodata:: AF_CCITT +.. autodata:: AF_SNA +.. autodata:: AF_DECnet +.. autodata:: AF_DLI +.. autodata:: AF_LAT +.. autodata:: AF_HYLINK +.. autodata:: AF_APPLETALK +.. autodata:: AF_NETBIOS +.. autodata:: AF_VOICEVIEW +.. autodata:: AF_FIREFOX +.. autodata:: AF_UNKNOWN1 +.. autodata:: AF_BAN +.. autodata:: AF_MAX diff --git a/docs/source/winstructs_generated.rst b/docs/source/winstructs_generated.rst index 2d6acc4..381f136 100644 --- a/docs/source/winstructs_generated.rst +++ b/docs/source/winstructs_generated.rst @@ -23596,6 +23596,487 @@ _BG_JOB_TIMES :class:`FILETIME` +WSAData64 +''''''''' +.. class:: WSADATA64 + + Alias for :class:`WSAData64` + +.. class:: LPWSADATA64 + + Pointer to :class:`WSAData64` + +.. class:: WSAData64 + + .. attribute:: wVersion + + :class:`WORD` + + + .. attribute:: wHighVersion + + :class:`WORD` + + + .. attribute:: iMaxSockets + + :class:`USHORT` + + + .. attribute:: iMaxUdpDg + + :class:`USHORT` + + + .. attribute:: lpVendorInfo + + :class:`CHAR` + + + .. attribute:: szDescription + + :class:`CHAR` ``[WSADESCRIPTION_LEN + 1]`` + + + .. attribute:: szSystemStatus + + :class:`CHAR` ``[WSASYS_STATUS_LEN + 1]`` + +WSAData32 +''''''''' +.. class:: LPWSADATA32 + + Pointer to :class:`WSAData32` + +.. class:: WSADATA32 + + Alias for :class:`WSAData32` + +.. class:: WSAData32 + + .. attribute:: wVersion + + :class:`WORD` + + + .. attribute:: wHighVersion + + :class:`WORD` + + + .. attribute:: szDescription + + :class:`CHAR` ``[WSADESCRIPTION_LEN + 1]`` + + + .. attribute:: szSystemStatus + + :class:`CHAR` ``[WSASYS_STATUS_LEN + 1]`` + + + .. attribute:: iMaxSockets + + :class:`USHORT` + + + .. attribute:: iMaxUdpDg + + :class:`USHORT` + + + .. attribute:: lpVendorInfo + + :class:`CHAR` + +in_addr +''''''' +.. class:: in_addr + + .. attribute:: S_un + + :class:`_ANON_IN_ADDR_SUB_UNION_1` + +sockaddr +'''''''' +.. class:: sockaddr + + .. attribute:: sa_family + + :class:`USHORT` + + + .. attribute:: sa_data + + :class:`CHAR` ``[14]`` + +sockaddr_in +''''''''''' +.. class:: sockaddr_in + + .. attribute:: sin_family + + :class:`SHORT` + + + .. attribute:: sin_port + + :class:`USHORT` + + + .. attribute:: sin_addr + + :class:`in_addr` + + + .. attribute:: sin_zero + + :class:`CHAR` ``[8]`` + +addrinfoW +''''''''' +.. class:: ADDRINFOW + + Alias for :class:`addrinfoW` + +.. class:: PADDRINFOW + + Pointer to :class:`addrinfoW` + +.. class:: addrinfoW + + .. attribute:: ai_flags + + :class:`INT` + + + .. attribute:: ai_family + + :class:`INT` + + + .. attribute:: ai_socktype + + :class:`INT` + + + .. attribute:: ai_protocol + + :class:`INT` + + + .. attribute:: ai_addrlen + + :class:`SIZE_T` + + + .. attribute:: ai_canonname + + :class:`PWSTR` + + + .. attribute:: ai_addr + + :class:`sockaddr` + + + .. attribute:: ai_next + + :class:`addrinfoW` + +_WSAPROTOCOLCHAIN +''''''''''''''''' +.. class:: LPWSAPROTOCOLCHAIN + + Pointer to :class:`_WSAPROTOCOLCHAIN` + +.. class:: WSAPROTOCOLCHAIN + + Alias for :class:`_WSAPROTOCOLCHAIN` + +.. class:: _WSAPROTOCOLCHAIN + + .. attribute:: ChainLen + + :class:`INT` + + + .. attribute:: ChainEntries + + :class:`DWORD` ``[MAX_PROTOCOL_CHAIN]`` + +_WSAPROTOCOL_INFOA +'''''''''''''''''' +.. class:: WSAPROTOCOL_INFOA + + Alias for :class:`_WSAPROTOCOL_INFOA` + +.. class:: LPWSAPROTOCOL_INFOA + + Pointer to :class:`_WSAPROTOCOL_INFOA` + +.. class:: _WSAPROTOCOL_INFOA + + .. attribute:: dwServiceFlags1 + + :class:`DWORD` + + + .. attribute:: dwServiceFlags2 + + :class:`DWORD` + + + .. attribute:: dwServiceFlags3 + + :class:`DWORD` + + + .. attribute:: dwServiceFlags4 + + :class:`DWORD` + + + .. attribute:: dwProviderFlags + + :class:`DWORD` + + + .. attribute:: ProviderId + + :class:`GUID` + + + .. attribute:: dwCatalogEntryId + + :class:`DWORD` + + + .. attribute:: ProtocolChain + + :class:`WSAPROTOCOLCHAIN` + + + .. attribute:: iVersion + + :class:`INT` + + + .. attribute:: iAddressFamily + + :class:`INT` + + + .. attribute:: iMaxSockAddr + + :class:`INT` + + + .. attribute:: iMinSockAddr + + :class:`INT` + + + .. attribute:: iSocketType + + :class:`INT` + + + .. attribute:: iProtocol + + :class:`INT` + + + .. attribute:: iProtocolMaxOffset + + :class:`INT` + + + .. attribute:: iNetworkByteOrder + + :class:`INT` + + + .. attribute:: iSecurityScheme + + :class:`INT` + + + .. attribute:: dwMessageSize + + :class:`DWORD` + + + .. attribute:: dwProviderReserved + + :class:`DWORD` + + + .. attribute:: szProtocol + + :class:`CHAR` ``[WSAPROTOCOL_LEN + 1]`` + +_WSAPROTOCOL_INFOW +'''''''''''''''''' +.. class:: LPWSAPROTOCOL_INFOW + + Pointer to :class:`_WSAPROTOCOL_INFOW` + +.. class:: WSAPROTOCOL_INFOW + + Alias for :class:`_WSAPROTOCOL_INFOW` + +.. class:: _WSAPROTOCOL_INFOW + + .. attribute:: dwServiceFlags1 + + :class:`DWORD` + + + .. attribute:: dwServiceFlags2 + + :class:`DWORD` + + + .. attribute:: dwServiceFlags3 + + :class:`DWORD` + + + .. attribute:: dwServiceFlags4 + + :class:`DWORD` + + + .. attribute:: dwProviderFlags + + :class:`DWORD` + + + .. attribute:: ProviderId + + :class:`GUID` + + + .. attribute:: dwCatalogEntryId + + :class:`DWORD` + + + .. attribute:: ProtocolChain + + :class:`WSAPROTOCOLCHAIN` + + + .. attribute:: iVersion + + :class:`INT` + + + .. attribute:: iAddressFamily + + :class:`INT` + + + .. attribute:: iMaxSockAddr + + :class:`INT` + + + .. attribute:: iMinSockAddr + + :class:`INT` + + + .. attribute:: iSocketType + + :class:`INT` + + + .. attribute:: iProtocol + + :class:`INT` + + + .. attribute:: iProtocolMaxOffset + + :class:`INT` + + + .. attribute:: iNetworkByteOrder + + :class:`INT` + + + .. attribute:: iSecurityScheme + + :class:`INT` + + + .. attribute:: dwMessageSize + + :class:`DWORD` + + + .. attribute:: dwProviderReserved + + :class:`DWORD` + + + .. attribute:: szProtocol + + :class:`WCHAR` ``[WSAPROTOCOL_LEN + 1]`` + +addrinfo +'''''''' +.. class:: PADDRINFOA + + Pointer to :class:`addrinfo` + +.. class:: ADDRINFOA + + Alias for :class:`addrinfo` + +.. class:: addrinfo + + .. attribute:: ai_flags + + :class:`INT` + + + .. attribute:: ai_family + + :class:`INT` + + + .. attribute:: ai_socktype + + :class:`INT` + + + .. attribute:: ai_protocol + + :class:`INT` + + + .. attribute:: ai_addrlen + + :class:`SIZE_T` + + + .. attribute:: ai_canonname + + :class:`CHAR` + + + .. attribute:: ai_addr + + :class:`sockaddr` + + + .. attribute:: ai_next + + :class:`addrinfo` + Simple types '''''''''''' .. autoclass:: VOID @@ -23978,6 +24459,10 @@ Simple types .. autoclass:: SFGAOF +.. autoclass:: GROUP + +.. autoclass:: SOCKET + .. autoclass:: WNDPROC .. autoclass:: LPPROC_THREAD_ATTRIBUTE_LIST @@ -24060,6 +24545,8 @@ Simple types .. autoclass:: PPORT_MESSAGE +.. autoclass:: LPWSADATA + WinEnums -------- _ALPC_PORT_INFORMATION_CLASS diff --git a/windows/generated_def/__init__.py b/windows/generated_def/__init__.py index 4f3daaa..3b49b2e 100644 --- a/windows/generated_def/__init__.py +++ b/windows/generated_def/__init__.py @@ -1,3 +1,4 @@ +from . import windef from . import winstructs def bitness(): @@ -27,6 +28,10 @@ if bitness() == 32: # CFGMGR32 winstructs.IRQ_RESOURCE = winstructs.IRQ_RESOURCE_32 + # Socket + windef.INVALID_SOCKET = windef.INVALID_SOCKET32 + + else: winstructs.CONTEXT = winstructs.CONTEXT64 winstructs.PCONTEXT = winstructs.PCONTEXT64 @@ -47,6 +52,9 @@ else: # CFGMGR32 winstructs.IRQ_RESOURCE = winstructs.IRQ_RESOURCE_64 + # Socket + windef.INVALID_SOCKET = windef.INVALID_SOCKET64 + from . import winfuncs from . import windef from . import interfaces diff --git a/windows/generated_def/meta.py b/windows/generated_def/meta.py index 698a5ae..f1fcbf3 100644 --- a/windows/generated_def/meta.py +++ b/windows/generated_def/meta.py @@ -38,13 +38,10 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'ADS_RIGHT_SYNCHRONIZE', 'ADS_RIGHT_WRITE_DAC', 'ADS_RIGHT_WRITE_OWNER', - 'AF_12844', 'AF_APPLETALK', - 'AF_ATM', 'AF_BAN', 'AF_CCITT', 'AF_CHAOS', - 'AF_CLUSTER', 'AF_DATAKIT', 'AF_DECnet', 'AF_DLI', @@ -53,13 +50,11 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'AF_HYLINK', 'AF_IMPLINK', 'AF_INET', - 'AF_INET6', 'AF_IPX', - 'AF_IRDA', 'AF_ISO', 'AF_LAT', + 'AF_MAX', 'AF_NETBIOS', - 'AF_NETDES', 'AF_NS', 'AF_OSI', 'AF_PUP', @@ -200,6 +195,7 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'AT_KEYEXCHANGE', 'AT_SIGNATURE', 'BACKUP_SECURITY_INFORMATION', + 'BASE_PROTOCOL', 'BASIC_LOG_CONF', 'BELOW_NORMAL_PRIORITY_CLASS', 'BG_JOB_ENUM_ALL_USERS', @@ -1551,9 +1547,34 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'INHERIT_ONLY_ACE', 'INHERIT_PARENT_AFFINITY', 'INVALID_HANDLE_VALUE', + 'INVALID_SOCKET32', + 'INVALID_SOCKET64', 'IO_COMPLETION_ALL_ACCESS', 'IO_COMPLETION_MODIFY_STATE', 'IO_COMPLETION_QUERY_STATE', + 'IPPORT_DAYTIME', + 'IPPORT_DISCARD', + 'IPPORT_ECHO', + 'IPPORT_FTP', + 'IPPORT_MTP', + 'IPPORT_NAMESERVER', + 'IPPORT_NETSTAT', + 'IPPORT_SMTP', + 'IPPORT_SYSTAT', + 'IPPORT_TELNET', + 'IPPORT_TIMESERVER', + 'IPPORT_WHOIS', + 'IPPROTO_GGP', + 'IPPROTO_ICMP', + 'IPPROTO_IDP', + 'IPPROTO_IGMP', + 'IPPROTO_IP', + 'IPPROTO_MAX', + 'IPPROTO_ND', + 'IPPROTO_PUP', + 'IPPROTO_RAW', + 'IPPROTO_TCP', + 'IPPROTO_UDP', 'JOB_OBJECT_ALL_ACCESS', 'JOB_OBJECT_ASSIGN_PROCESS', 'JOB_OBJECT_QUERY', @@ -1574,6 +1595,7 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'KEY_WOW64_RES', 'KEY_WRITE', 'LABEL_SECURITY_INFORMATION', + 'LAYERED_PROTOCOL', 'LOAD_DLL_DEBUG_EVENT', 'LOG_CONF_BITS', 'LPC_CLIENT_DIED', @@ -1612,6 +1634,7 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'MAX_MEM_REGISTERS', 'MAX_PATH', 'MAX_PROFILE_LEN', + 'MAX_PROTOCOL_CHAIN', 'MAX_SCOPE_ID_LEN', 'MEM_4MB_PAGES', 'MEM_COMMIT', @@ -2265,6 +2288,12 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'SM_TABLETPC', 'SM_XVIRTUALSCREEN', 'SM_YVIRTUALSCREEN', + 'SOCKET_ERROR', + 'SOCK_DGRAM', + 'SOCK_RAW', + 'SOCK_RDM', + 'SOCK_SEQPACKET', + 'SOCK_STREAM', 'SPC_CAB_DATA_OBJID', 'SPC_CERT_EXTENSIONS_OBJID', 'SPC_COMMERCIAL_SP_KEY_PURPOSE_OBJID', @@ -2525,6 +2554,9 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'WRITE_DAC', 'WRITE_OWNER', 'WRITE_WATCH_FLAG_RESET', + 'WSADESCRIPTION_LEN', + 'WSAPROTOCOL_LEN', + 'WSASYS_STATUS_LEN', 'WTD_CHOICE_BLOB', 'WTD_CHOICE_CATALOG', 'WTD_CHOICE_CERT', @@ -11443,6 +11475,8 @@ structs = set(['ACCESS_ALLOWED_ACE', 'ACL_SIZE_INFORMATION', 'ADDRESS', 'ADDRESS64', + 'ADDRINFOA', + 'ADDRINFOW', 'ALPC_CONTEXT_ATTR', 'ALPC_CONTEXT_ATTR32', 'ALPC_CONTEXT_ATTR64', @@ -11909,6 +11943,11 @@ structs = set(['ACCESS_ALLOWED_ACE', 'LPWIN32_FIND_DATAW', 'LPWNDCLASSEXA', 'LPWNDCLASSEXW', + 'LPWSADATA32', + 'LPWSADATA64', + 'LPWSAPROTOCOLCHAIN', + 'LPWSAPROTOCOL_INFOA', + 'LPWSAPROTOCOL_INFOW', 'LSA_OBJECT_ATTRIBUTES', 'LSA_REFERENCED_DOMAIN_LIST', 'LSA_TRANSLATED_NAME', @@ -11985,6 +12024,8 @@ structs = set(['ACCESS_ALLOWED_ACE', 'PACL', 'PACL_REVISION_INFORMATION', 'PACL_SIZE_INFORMATION', + 'PADDRINFOA', + 'PADDRINFOW', 'PALPC_CONTEXT_ATTR', 'PALPC_CONTEXT_ATTR32', 'PALPC_CONTEXT_ATTR64', @@ -12711,6 +12752,13 @@ structs = set(['ACCESS_ALLOWED_ACE', 'WNODE_HEADER', 'WOW64_CONTEXT', 'WOW64_FLOATING_SAVE_AREA', + 'WSADATA32', + 'WSADATA64', + 'WSAData32', + 'WSAData64', + 'WSAPROTOCOLCHAIN', + 'WSAPROTOCOL_INFOA', + 'WSAPROTOCOL_INFOW', 'XSAVE_FORMAT_32', 'XSAVE_FORMAT_64', '_ACCESS_ALLOWED_ACE', @@ -13204,6 +13252,9 @@ structs = set(['ACCESS_ALLOWED_ACE', '_WNODE_HEADER', '_WOW64_CONTEXT', '_WOW64_FLOATING_SAVE_AREA', + '_WSAPROTOCOLCHAIN', + '_WSAPROTOCOL_INFOA', + '_WSAPROTOCOL_INFOW', '_XSAVE_FORMAT_32', '_XSAVE_FORMAT_64', '__MIDL_IBackgroundCopyJob2_0003', @@ -13220,6 +13271,11 @@ structs = set(['ACCESS_ALLOWED_ACE', '_tagSTACKFRAME_EX', '_tagVARIANT', '_tagpropertykey', + 'addrinfo', + 'addrinfoW', + 'in_addr', + 'sockaddr', + 'sockaddr_in', 'tagARRAYDESC', 'tagBINDPTR', 'tagBIND_OPTS', @@ -13758,6 +13814,7 @@ functions = set(['AccessCheck', 'GetAce', 'GetAclInformation', 'GetAdaptersInfo', + 'GetAddrInfoW', 'GetClassInfoExA', 'GetClassInfoExW', 'GetClassNameA', @@ -14112,6 +14169,7 @@ functions = set(['AccessCheck', 'RtlGetUnloadEventTraceEx', 'RtlInitString', 'RtlInitUnicodeString', + 'RtlMoveMemory', 'SHFileOperationA', 'SHGetPathFromIDListA', 'SHGetPathFromIDListW', @@ -14257,6 +14315,11 @@ functions = set(['AccessCheck', 'VirtualProtectEx', 'VirtualQuery', 'VirtualQueryEx', + 'WSACleanup', + 'WSAGetLastError', + 'WSASocketA', + 'WSASocketW', + 'WSAStartup', 'WaitForDebugEvent', 'WaitForSingleObject', 'WinHttpAddRequestHeaders', @@ -14279,8 +14342,15 @@ functions = set(['AccessCheck', 'WriteFile', 'WriteProcessMemory', 'ZwDuplicateObject', + 'closesocket', + 'connect', + 'getaddrinfo', 'lstrcmpA', - 'lstrcmpW']) + 'lstrcmpW', + 'recv', + 'send', + 'shutdown', + 'socket']) interfaces = set(['IAction', 'IActionCollection', 'IApplicationActivationManager', diff --git a/windows/generated_def/windef.py b/windows/generated_def/windef.py index db396c4..09f70a7 100644 --- a/windows/generated_def/windef.py +++ b/windows/generated_def/windef.py @@ -1553,36 +1553,6 @@ STANDARD_RIGHTS_WRITE = make_flag("STANDARD_RIGHTS_WRITE", ( READ_CONTROL )) STANDARD_RIGHTS_EXECUTE = make_flag("STANDARD_RIGHTS_EXECUTE", ( READ_CONTROL )) STANDARD_RIGHTS_ALL = make_flag("STANDARD_RIGHTS_ALL", ( 0x001F0000 )) SPECIFIC_RIGHTS_ALL = make_flag("SPECIFIC_RIGHTS_ALL", ( 0x0000FFFF )) -AF_UNSPEC = make_flag("AF_UNSPEC", 0) -AF_UNIX = make_flag("AF_UNIX", 1) -AF_INET = make_flag("AF_INET", 2) -AF_IMPLINK = make_flag("AF_IMPLINK", 3) -AF_PUP = make_flag("AF_PUP", 4) -AF_CHAOS = make_flag("AF_CHAOS", 5) -AF_NS = make_flag("AF_NS", 6) -AF_IPX = make_flag("AF_IPX", AF_NS) -AF_ISO = make_flag("AF_ISO", 7) -AF_OSI = make_flag("AF_OSI", AF_ISO) -AF_ECMA = make_flag("AF_ECMA", 8) -AF_DATAKIT = make_flag("AF_DATAKIT", 9) -AF_CCITT = make_flag("AF_CCITT", 10) -AF_SNA = make_flag("AF_SNA", 11) -AF_DECnet = make_flag("AF_DECnet", 12) -AF_DLI = make_flag("AF_DLI", 13) -AF_LAT = make_flag("AF_LAT", 14) -AF_HYLINK = make_flag("AF_HYLINK", 15) -AF_APPLETALK = make_flag("AF_APPLETALK", 16) -AF_NETBIOS = make_flag("AF_NETBIOS", 17) -AF_VOICEVIEW = make_flag("AF_VOICEVIEW", 18) -AF_FIREFOX = make_flag("AF_FIREFOX", 19) -AF_UNKNOWN1 = make_flag("AF_UNKNOWN1", 20) -AF_BAN = make_flag("AF_BAN", 21) -AF_ATM = make_flag("AF_ATM", 22) -AF_INET6 = make_flag("AF_INET6", 23) -AF_CLUSTER = make_flag("AF_CLUSTER", 24) -AF_12844 = make_flag("AF_12844", 25) -AF_IRDA = make_flag("AF_IRDA", 26) -AF_NETDES = make_flag("AF_NETDES", 28) EXCEPTION_NONCONTINUABLE = make_flag("EXCEPTION_NONCONTINUABLE", 0x1) EXCEPTION_MAXIMUM_PARAMETERS = make_flag("EXCEPTION_MAXIMUM_PARAMETERS", 15) EXCEPTION_EXECUTE_HANDLER = make_flag("EXCEPTION_EXECUTE_HANDLER", 1) @@ -2759,3 +2729,65 @@ CMSG_CTRL_MAIL_LIST_DECRYPT = make_flag("CMSG_CTRL_MAIL_LIST_DECRYPT", 18) CMSG_CTRL_VERIFY_SIGNATURE_EX = make_flag("CMSG_CTRL_VERIFY_SIGNATURE_EX", 19) CMSG_CTRL_ADD_CMS_SIGNER_INFO = make_flag("CMSG_CTRL_ADD_CMS_SIGNER_INFO", 20) CMSG_CTRL_ENABLE_STRONG_SIGNATURE = make_flag("CMSG_CTRL_ENABLE_STRONG_SIGNATURE", 21) +WSADESCRIPTION_LEN = make_flag("WSADESCRIPTION_LEN", 256) +WSASYS_STATUS_LEN = make_flag("WSASYS_STATUS_LEN", 128) +WSAPROTOCOL_LEN = make_flag("WSAPROTOCOL_LEN", 255) +MAX_PROTOCOL_CHAIN = make_flag("MAX_PROTOCOL_CHAIN", 7) +BASE_PROTOCOL = make_flag("BASE_PROTOCOL", 1) +LAYERED_PROTOCOL = make_flag("LAYERED_PROTOCOL", 0) +INVALID_SOCKET32 = make_flag("INVALID_SOCKET32", ( 0xffffffff )) +INVALID_SOCKET64 = make_flag("INVALID_SOCKET64", ( 0xffffffffffffffff )) +SOCKET_ERROR = make_flag("SOCKET_ERROR", ( -1 )) +SOCK_STREAM = make_flag("SOCK_STREAM", 1) +SOCK_DGRAM = make_flag("SOCK_DGRAM", 2) +SOCK_RAW = make_flag("SOCK_RAW", 3) +SOCK_RDM = make_flag("SOCK_RDM", 4) +SOCK_SEQPACKET = make_flag("SOCK_SEQPACKET", 5) +IPPROTO_IP = make_flag("IPPROTO_IP", 0) +IPPROTO_ICMP = make_flag("IPPROTO_ICMP", 1) +IPPROTO_IGMP = make_flag("IPPROTO_IGMP", 2) +IPPROTO_GGP = make_flag("IPPROTO_GGP", 3) +IPPROTO_TCP = make_flag("IPPROTO_TCP", 6) +IPPROTO_PUP = make_flag("IPPROTO_PUP", 12) +IPPROTO_UDP = make_flag("IPPROTO_UDP", 17) +IPPROTO_IDP = make_flag("IPPROTO_IDP", 22) +IPPROTO_ND = make_flag("IPPROTO_ND", 77) +IPPROTO_RAW = make_flag("IPPROTO_RAW", 255) +IPPROTO_MAX = make_flag("IPPROTO_MAX", 256) +IPPORT_ECHO = make_flag("IPPORT_ECHO", 7) +IPPORT_DISCARD = make_flag("IPPORT_DISCARD", 9) +IPPORT_SYSTAT = make_flag("IPPORT_SYSTAT", 11) +IPPORT_DAYTIME = make_flag("IPPORT_DAYTIME", 13) +IPPORT_NETSTAT = make_flag("IPPORT_NETSTAT", 15) +IPPORT_FTP = make_flag("IPPORT_FTP", 21) +IPPORT_TELNET = make_flag("IPPORT_TELNET", 23) +IPPORT_SMTP = make_flag("IPPORT_SMTP", 25) +IPPORT_TIMESERVER = make_flag("IPPORT_TIMESERVER", 37) +IPPORT_NAMESERVER = make_flag("IPPORT_NAMESERVER", 42) +IPPORT_WHOIS = make_flag("IPPORT_WHOIS", 43) +IPPORT_MTP = make_flag("IPPORT_MTP", 57) +AF_UNSPEC = make_flag("AF_UNSPEC", 0) +AF_UNIX = make_flag("AF_UNIX", 1) +AF_INET = make_flag("AF_INET", 2) +AF_IMPLINK = make_flag("AF_IMPLINK", 3) +AF_PUP = make_flag("AF_PUP", 4) +AF_CHAOS = make_flag("AF_CHAOS", 5) +AF_IPX = make_flag("AF_IPX", 6) +AF_NS = make_flag("AF_NS", 6) +AF_ISO = make_flag("AF_ISO", 7) +AF_OSI = make_flag("AF_OSI", AF_ISO) +AF_ECMA = make_flag("AF_ECMA", 8) +AF_DATAKIT = make_flag("AF_DATAKIT", 9) +AF_CCITT = make_flag("AF_CCITT", 10) +AF_SNA = make_flag("AF_SNA", 11) +AF_DECnet = make_flag("AF_DECnet", 12) +AF_DLI = make_flag("AF_DLI", 13) +AF_LAT = make_flag("AF_LAT", 14) +AF_HYLINK = make_flag("AF_HYLINK", 15) +AF_APPLETALK = make_flag("AF_APPLETALK", 16) +AF_NETBIOS = make_flag("AF_NETBIOS", 17) +AF_VOICEVIEW = make_flag("AF_VOICEVIEW", 18) +AF_FIREFOX = make_flag("AF_FIREFOX", 19) +AF_UNKNOWN1 = make_flag("AF_UNKNOWN1", 20) +AF_BAN = make_flag("AF_BAN", 21) +AF_MAX = make_flag("AF_MAX", 22) diff --git a/windows/generated_def/winfuncs.py b/windows/generated_def/winfuncs.py index 661611c..74bc1d6 100644 --- a/windows/generated_def/winfuncs.py +++ b/windows/generated_def/winfuncs.py @@ -3685,6 +3685,11 @@ RtlDecompressBufferExParams = ((1, 'CompressionFormat'), (1, 'UncompressedBuffer RtlGetCompressionWorkSpaceSizePrototype = WINFUNCTYPE(NTSTATUS, USHORT, PULONG, PULONG) RtlGetCompressionWorkSpaceSizeParams = ((1, 'CompressionFormatAndEngine'), (1, 'CompressBufferWorkSpaceSize'), (1, 'CompressFragmentWorkSpaceSize')) +#def RtlMoveMemory(Destination, Source, Length): +# return RtlMoveMemory.ctypes_function(Destination, Source, Length) +RtlMoveMemoryPrototype = WINFUNCTYPE(VOID, PVOID, PVOID, SIZE_T) +RtlMoveMemoryParams = ((1, 'Destination'), (1, 'Source'), (1, 'Length')) + #def lstrcmpA(lpString1, lpString2): # return lstrcmpA.ctypes_function(lpString1, lpString2) lstrcmpAPrototype = WINFUNCTYPE(INT, LPCSTR, LPCSTR) @@ -4005,3 +4010,68 @@ GetFirmwareEnvironmentVariableExWParams = ((1, 'lpName'), (1, 'lpGuid'), (1, 'pB IsDebuggerPresentPrototype = WINFUNCTYPE(BOOL) IsDebuggerPresentParams = () +#def WSAStartup(wVersionRequested, lpWSAData): +# return WSAStartup.ctypes_function(wVersionRequested, lpWSAData) +WSAStartupPrototype = WINFUNCTYPE(INT, WORD, LPWSADATA) +WSAStartupParams = ((1, 'wVersionRequested'), (1, 'lpWSAData')) + +#def WSACleanup(): +# return WSACleanup.ctypes_function() +WSACleanupPrototype = WINFUNCTYPE(INT) +WSACleanupParams = () + +#def WSAGetLastError(): +# return WSAGetLastError.ctypes_function() +WSAGetLastErrorPrototype = WINFUNCTYPE(INT) +WSAGetLastErrorParams = () + +#def getaddrinfo(pNodeName, pServiceName, pHints, ppResult): +# return getaddrinfo.ctypes_function(pNodeName, pServiceName, pHints, ppResult) +getaddrinfoPrototype = WINFUNCTYPE(INT, PCSTR, PCSTR, POINTER(ADDRINFOA), POINTER(PADDRINFOA)) +getaddrinfoParams = ((1, 'pNodeName'), (1, 'pServiceName'), (1, 'pHints'), (1, 'ppResult')) + +#def GetAddrInfoW(pNodeName, pServiceName, pHints, ppResult): +# return GetAddrInfoW.ctypes_function(pNodeName, pServiceName, pHints, ppResult) +GetAddrInfoWPrototype = WINFUNCTYPE(INT, PCWSTR, PCWSTR, POINTER(ADDRINFOW), POINTER(PADDRINFOW)) +GetAddrInfoWParams = ((1, 'pNodeName'), (1, 'pServiceName'), (1, 'pHints'), (1, 'ppResult')) + +#def WSASocketA(af, type, protocol, lpProtocolInfo, g, dwFlags): +# return WSASocketA.ctypes_function(af, type, protocol, lpProtocolInfo, g, dwFlags) +WSASocketAPrototype = WINFUNCTYPE(SOCKET, INT, INT, INT, LPWSAPROTOCOL_INFOA, GROUP, DWORD) +WSASocketAParams = ((1, 'af'), (1, 'type'), (1, 'protocol'), (1, 'lpProtocolInfo'), (1, 'g'), (1, 'dwFlags')) + +#def WSASocketW(af, type, protocol, lpProtocolInfo, g, dwFlags): +# return WSASocketW.ctypes_function(af, type, protocol, lpProtocolInfo, g, dwFlags) +WSASocketWPrototype = WINFUNCTYPE(SOCKET, INT, INT, INT, LPWSAPROTOCOL_INFOW, GROUP, DWORD) +WSASocketWParams = ((1, 'af'), (1, 'type'), (1, 'protocol'), (1, 'lpProtocolInfo'), (1, 'g'), (1, 'dwFlags')) + +#def socket(af, type, protocol): +# return socket.ctypes_function(af, type, protocol) +socketPrototype = WINFUNCTYPE(SOCKET, INT, INT, INT) +socketParams = ((1, 'af'), (1, 'type'), (1, 'protocol')) + +#def connect(s, name, namelen): +# return connect.ctypes_function(s, name, namelen) +connectPrototype = WINFUNCTYPE(INT, SOCKET, POINTER(sockaddr), INT) +connectParams = ((1, 's'), (1, 'name'), (1, 'namelen')) + +#def send(s, buf, len, flags): +# return send.ctypes_function(s, buf, len, flags) +sendPrototype = WINFUNCTYPE(INT, SOCKET, POINTER(CHAR), INT, INT) +sendParams = ((1, 's'), (1, 'buf'), (1, 'len'), (1, 'flags')) + +#def recv(s, buf, len, flags): +# return recv.ctypes_function(s, buf, len, flags) +recvPrototype = WINFUNCTYPE(INT, SOCKET, POINTER(CHAR), INT, INT) +recvParams = ((1, 's'), (1, 'buf'), (1, 'len'), (1, 'flags')) + +#def shutdown(s, how): +# return shutdown.ctypes_function(s, how) +shutdownPrototype = WINFUNCTYPE(INT, SOCKET, INT) +shutdownParams = ((1, 's'), (1, 'how')) + +#def closesocket(s): +# return closesocket.ctypes_function(s) +closesocketPrototype = WINFUNCTYPE(INT, SOCKET) +closesocketParams = ((1, 's'),) + diff --git a/windows/generated_def/winstructs.py b/windows/generated_def/winstructs.py index 4cccf41..00447e7 100644 --- a/windows/generated_def/winstructs.py +++ b/windows/generated_def/winstructs.py @@ -252,6 +252,8 @@ DEVINSTID_W = LPWSTR RPCOLEDATAREP = ULONG HREFTYPE = DWORD SFGAOF = ULONG +GROUP = UINT +SOCKET = HANDLE WNDPROC = PVOID LPPROC_THREAD_ATTRIBUTE_LIST = PVOID PPS_POST_PROCESS_INIT_ROUTINE = PVOID @@ -293,6 +295,7 @@ HCERTSTORE = PVOID HCRYPTMSG = PVOID PALPC_PORT_ATTRIBUTES = PVOID PPORT_MESSAGE = PVOID +LPWSADATA = PVOID FC_ZERO = EnumValue("NDR_FORMAT_CHARACTER", "FC_ZERO", 0x0) FC_BYTE = EnumValue("NDR_FORMAT_CHARACTER", "FC_BYTE", 0x1) FC_CHAR = EnumValue("NDR_FORMAT_CHARACTER", "FC_CHAR", 0x2) @@ -10962,3 +10965,165 @@ class WMIDPREQUESTCODE(EnumType): mapper = FlagMapper(*values) +class WSAData64(Structure): + _fields_ = [ + ("wVersion", WORD), + ("wHighVersion", WORD), + ("iMaxSockets", USHORT), + ("iMaxUdpDg", USHORT), + ("lpVendorInfo", POINTER(CHAR)), + ("szDescription", CHAR * (WSADESCRIPTION_LEN + 1)), + ("szSystemStatus", CHAR * (WSASYS_STATUS_LEN + 1)), + ] +WSADATA64 = WSAData64 +LPWSADATA64 = POINTER(WSAData64) + +class WSAData32(Structure): + _fields_ = [ + ("wVersion", WORD), + ("wHighVersion", WORD), + ("szDescription", CHAR * (WSADESCRIPTION_LEN + 1)), + ("szSystemStatus", CHAR * (WSASYS_STATUS_LEN + 1)), + ("iMaxSockets", USHORT), + ("iMaxUdpDg", USHORT), + ("lpVendorInfo", POINTER(CHAR)), + ] +LPWSADATA32 = POINTER(WSAData32) +WSADATA32 = WSAData32 + +class _ANON__ANON_IN_ADDR_SUB_UNION_1_SUB_STRUCTURE_1(Structure): + _fields_ = [ + ("s_b1", UCHAR), + ("s_b2", UCHAR), + ("s_b3", UCHAR), + ("s_b4", UCHAR), + ] + + +class _ANON__ANON_IN_ADDR_SUB_UNION_1_SUB_STRUCTURE_2(Structure): + _fields_ = [ + ("s_w1", USHORT), + ("s_w2", USHORT), + ] + +class _ANON_IN_ADDR_SUB_UNION_1(Union): + _anonymous_ = ("S_un_b","S_un_w") + _fields_ = [ + ("S_un_b", _ANON__ANON_IN_ADDR_SUB_UNION_1_SUB_STRUCTURE_1), + ("S_un_w", _ANON__ANON_IN_ADDR_SUB_UNION_1_SUB_STRUCTURE_2), + ("S_addr", ULONG), + ] + +class in_addr(Structure): + _anonymous_ = ("S_un",) + _fields_ = [ + ("S_un", _ANON_IN_ADDR_SUB_UNION_1), + ] + + +class sockaddr(Structure): + _fields_ = [ + ("sa_family", USHORT), + ("sa_data", CHAR * (14)), + ] + + +class sockaddr_in(Structure): + _fields_ = [ + ("sin_family", SHORT), + ("sin_port", USHORT), + ("sin_addr", in_addr), + ("sin_zero", CHAR * (8)), + ] + + +# Self referencing struct tricks +class addrinfoW(Structure): pass +ADDRINFOW = addrinfoW +PADDRINFOW = POINTER(addrinfoW) +addrinfoW._fields_ = [ + ("ai_flags", INT), + ("ai_family", INT), + ("ai_socktype", INT), + ("ai_protocol", INT), + ("ai_addrlen", SIZE_T), + ("ai_canonname", PWSTR), + ("ai_addr", POINTER(sockaddr)), + ("ai_next", POINTER(addrinfoW)), +] + +class _WSAPROTOCOLCHAIN(Structure): + _fields_ = [ + ("ChainLen", INT), + ("ChainEntries", DWORD * (MAX_PROTOCOL_CHAIN)), + ] +LPWSAPROTOCOLCHAIN = POINTER(_WSAPROTOCOLCHAIN) +WSAPROTOCOLCHAIN = _WSAPROTOCOLCHAIN + +class _WSAPROTOCOL_INFOA(Structure): + _fields_ = [ + ("dwServiceFlags1", DWORD), + ("dwServiceFlags2", DWORD), + ("dwServiceFlags3", DWORD), + ("dwServiceFlags4", DWORD), + ("dwProviderFlags", DWORD), + ("ProviderId", GUID), + ("dwCatalogEntryId", DWORD), + ("ProtocolChain", WSAPROTOCOLCHAIN), + ("iVersion", INT), + ("iAddressFamily", INT), + ("iMaxSockAddr", INT), + ("iMinSockAddr", INT), + ("iSocketType", INT), + ("iProtocol", INT), + ("iProtocolMaxOffset", INT), + ("iNetworkByteOrder", INT), + ("iSecurityScheme", INT), + ("dwMessageSize", DWORD), + ("dwProviderReserved", DWORD), + ("szProtocol", CHAR * (WSAPROTOCOL_LEN + 1)), + ] +WSAPROTOCOL_INFOA = _WSAPROTOCOL_INFOA +LPWSAPROTOCOL_INFOA = POINTER(_WSAPROTOCOL_INFOA) + +class _WSAPROTOCOL_INFOW(Structure): + _fields_ = [ + ("dwServiceFlags1", DWORD), + ("dwServiceFlags2", DWORD), + ("dwServiceFlags3", DWORD), + ("dwServiceFlags4", DWORD), + ("dwProviderFlags", DWORD), + ("ProviderId", GUID), + ("dwCatalogEntryId", DWORD), + ("ProtocolChain", WSAPROTOCOLCHAIN), + ("iVersion", INT), + ("iAddressFamily", INT), + ("iMaxSockAddr", INT), + ("iMinSockAddr", INT), + ("iSocketType", INT), + ("iProtocol", INT), + ("iProtocolMaxOffset", INT), + ("iNetworkByteOrder", INT), + ("iSecurityScheme", INT), + ("dwMessageSize", DWORD), + ("dwProviderReserved", DWORD), + ("szProtocol", WCHAR * (WSAPROTOCOL_LEN + 1)), + ] +LPWSAPROTOCOL_INFOW = POINTER(_WSAPROTOCOL_INFOW) +WSAPROTOCOL_INFOW = _WSAPROTOCOL_INFOW + +# Self referencing struct tricks +class addrinfo(Structure): pass +PADDRINFOA = POINTER(addrinfo) +ADDRINFOA = addrinfo +addrinfo._fields_ = [ + ("ai_flags", INT), + ("ai_family", INT), + ("ai_socktype", INT), + ("ai_protocol", INT), + ("ai_addrlen", SIZE_T), + ("ai_canonname", POINTER(CHAR)), + ("ai_addr", POINTER(sockaddr)), + ("ai_next", POINTER(addrinfo)), +] + diff --git a/windows/winproxy/apis/__init__.py b/windows/winproxy/apis/__init__.py index 86206da..b666668 100644 --- a/windows/winproxy/apis/__init__.py +++ b/windows/winproxy/apis/__init__.py @@ -22,4 +22,5 @@ from .virtdisk import * from .wevtapi import * from .winhttp import * from .wininet import * -from .wintrust import * \ No newline at end of file +from .wintrust import * +from .ws2_32 import * \ No newline at end of file diff --git a/windows/winproxy/apis/ws2_32.py b/windows/winproxy/apis/ws2_32.py new file mode 100644 index 0000000..b4d8f63 --- /dev/null +++ b/windows/winproxy/apis/ws2_32.py @@ -0,0 +1,74 @@ +import ctypes +import windows.generated_def as gdef + +from ..apiproxy import ApiProxy, NeededParameter + +from ..error import WinproxyError, succeed_on_zero, no_error_check, fail_on_minus_one + +len_ = len + +class Ws2_32Proxy(ApiProxy): + APIDLL = "ws2_32" + default_error_check = staticmethod(succeed_on_zero) + +def check_invalid_socket(func_name, result, func, args): + if result == gdef.INVALID_SOCKET: + raise WinproxyError(func_name, error_code=WSAGetLastError()) + return args + +@Ws2_32Proxy() +def WSAStartup(wVersionRequested, lpWSAData): + return WSAStartup.ctypes_function(wVersionRequested, lpWSAData) + + +@Ws2_32Proxy() +def WSACleanup(): + return WSACleanup.ctypes_function() + +@Ws2_32Proxy(error_check=no_error_check) +def WSAGetLastError(): + return WSAGetLastError.ctypes_function() + +@Ws2_32Proxy() +def getaddrinfo(pNodeName, pServiceName, pHints, ppResult): + return getaddrinfo.ctypes_function(pNodeName, pServiceName, pHints, ppResult) + +@Ws2_32Proxy() +def GetAddrInfoW(pNodeName, pServiceName, pHints, ppResult): + return GetAddrInfoW.ctypes_function(pNodeName, pServiceName, pHints, ppResult) + +@Ws2_32Proxy(error_check=check_invalid_socket) +def WSASocketA(af, type, protocol, lpProtocolInfo, g, dwFlags): + return WSASocketA.ctypes_function(af, type, protocol, lpProtocolInfo, g, dwFlags) + +@Ws2_32Proxy(error_check=check_invalid_socket) +def WSASocketW(af, type, protocol, lpProtocolInfo, g, dwFlags): + return WSASocketW.ctypes_function(af, type, protocol, lpProtocolInfo, g, dwFlags) + +@Ws2_32Proxy(error_check=check_invalid_socket) +def socket(af, type, protocol): + return socket.ctypes_function(af, type, protocol) + +@Ws2_32Proxy(error_check=fail_on_minus_one) # SOCKET_ERROR +def connect(s, name, namelen): + return connect.ctypes_function(s, name, namelen) + +@Ws2_32Proxy(error_check=fail_on_minus_one) # SOCKET_ERROR +def send(s, buf, len=None, flags=0): + if len is None: + len = len_(buf) + return send.ctypes_function(s, buf, len, flags) + +@Ws2_32Proxy(error_check=fail_on_minus_one) # SOCKET_ERROR +def recv(s, buf, len=None, flags=0): + if len is None: + len = len_(buf) + return recv.ctypes_function(s, buf, len, flags) + +@Ws2_32Proxy(error_check=fail_on_minus_one) # SOCKET_ERROR +def shutdown(s, how): + return shutdown.ctypes_function(s, how) + +@Ws2_32Proxy(error_check=fail_on_minus_one) # SOCKET_ERROR +def closesocket(s): + return closesocket.ctypes_function(s)