diff --git a/ctypes_generation/definitions/defines/file.txt b/ctypes_generation/definitions/defines/file.txt new file mode 100644 index 0000000..5b3c75d --- /dev/null +++ b/ctypes_generation/definitions/defines/file.txt @@ -0,0 +1,72 @@ +#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 // winnt +#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 // winnt +#define FILE_NOTIFY_CHANGE_NAME 0x00000003 +#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 // winnt +#define FILE_NOTIFY_CHANGE_SIZE 0x00000008 // winnt +#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 // winnt +#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 // winnt +#define FILE_NOTIFY_CHANGE_CREATION 0x00000040 // winnt +#define FILE_NOTIFY_CHANGE_EA 0x00000080 +#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 // winnt +#define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200 +#define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400 +#define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800 +#define FILE_NOTIFY_VALID_MASK 0x00000fff + + + +#define FILE_ACTION_ADDED 0x00000001 // winnt +#define FILE_ACTION_REMOVED 0x00000002 // winnt +#define FILE_ACTION_MODIFIED 0x00000003 // winnt +#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 // winnt +#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 // winnt +#define FILE_ACTION_ADDED_STREAM 0x00000006 +#define FILE_ACTION_REMOVED_STREAM 0x00000007 +#define FILE_ACTION_MODIFIED_STREAM 0x00000008 +#define FILE_ACTION_REMOVED_BY_DELETE 0x00000009 +#define FILE_ACTION_ID_NOT_TUNNELLED 0x0000000A +#define FILE_ACTION_TUNNELLED_ID_COLLISION 0x0000000B + + +#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 +#define FILE_CASE_PRESERVED_NAMES 0x00000002 +#define FILE_UNICODE_ON_DISK 0x00000004 +#define FILE_PERSISTENT_ACLS 0x00000008 +#define FILE_FILE_COMPRESSION 0x00000010 +#define FILE_VOLUME_QUOTAS 0x00000020 +#define FILE_SUPPORTS_SPARSE_FILES 0x00000040 +#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 +#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 +#define FILE_VOLUME_IS_COMPRESSED 0x00008000 +#define FILE_SUPPORTS_OBJECT_IDS 0x00010000 +#define FILE_SUPPORTS_ENCRYPTION 0x00020000 +#define FILE_NAMED_STREAMS 0x00040000 +#define FILE_READ_ONLY_VOLUME 0x00080000 +#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 +#define FILE_SUPPORTS_TRANSACTIONS 0x00200000 +#define FILE_SUPPORTS_HARD_LINKS 0x00400000 +#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 +#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 +#define FILE_SUPPORTS_USN_JOURNAL 0x02000000 + + +#define FILE_SHARE_READ 0x00000001 +#define FILE_SHARE_WRITE 0x00000002 +#define FILE_SHARE_DELETE 0x00000004 + + +#define FILE_ATTRIBUTE_READONLY 0x00000001 +#define FILE_ATTRIBUTE_HIDDEN 0x00000002 +#define FILE_ATTRIBUTE_SYSTEM 0x00000004 +#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 +#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 +#define FILE_ATTRIBUTE_DEVICE 0x00000040 +#define FILE_ATTRIBUTE_NORMAL 0x00000080 +#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 +#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 +#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 +#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 +#define FILE_ATTRIBUTE_OFFLINE 0x00001000 +#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 +#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 +#define FILE_ATTRIBUTE_VIRTUAL 0x00010000 \ No newline at end of file diff --git a/ctypes_generation/definitions/defines/network.txt b/ctypes_generation/definitions/defines/network.txt index d14151f..cd1daf6 100644 --- a/ctypes_generation/definitions/defines/network.txt +++ b/ctypes_generation/definitions/defines/network.txt @@ -8,6 +8,8 @@ #define DNS_ATMA_MAX_ADDR_LENGTH ATM_ADDR_SIZE +#define DNS_ADDR_MAX_SOCKADDR_LENGTH (32) + #define DNS_TYPE_ZERO 0x0000 // RFC 1034/1035 diff --git a/ctypes_generation/definitions/defines/windef.txt b/ctypes_generation/definitions/defines/windef.txt index 6f67f40..c57187f 100644 --- a/ctypes_generation/definitions/defines/windef.txt +++ b/ctypes_generation/definitions/defines/windef.txt @@ -263,59 +263,11 @@ #define TRUNCATE_EXISTING 5 -#define FILE_SHARE_READ 0x00000001 -#define FILE_SHARE_WRITE 0x00000002 -#define FILE_SHARE_DELETE 0x00000004 -#define FILE_ATTRIBUTE_READONLY 0x00000001 -#define FILE_ATTRIBUTE_HIDDEN 0x00000002 -#define FILE_ATTRIBUTE_SYSTEM 0x00000004 -#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 -#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 -#define FILE_ATTRIBUTE_DEVICE 0x00000040 -#define FILE_ATTRIBUTE_NORMAL 0x00000080 -#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 -#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 -#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 -#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 -#define FILE_ATTRIBUTE_OFFLINE 0x00001000 -#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 -#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 -#define FILE_ATTRIBUTE_VIRTUAL 0x00010000 -#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 -#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 -#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 -#define FILE_NOTIFY_CHANGE_SIZE 0x00000008 -#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 -#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 -#define FILE_NOTIFY_CHANGE_CREATION 0x00000040 -#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 -#define FILE_ACTION_ADDED 0x00000001 -#define FILE_ACTION_REMOVED 0x00000002 -#define FILE_ACTION_MODIFIED 0x00000003 -#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 -#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 + + #define MAILSLOT_NO_MESSAGE (-1) #define MAILSLOT_WAIT_FOREVER (-1) -#define FILE_CASE_SENSITIVE_SEARCH 0x00000001 -#define FILE_CASE_PRESERVED_NAMES 0x00000002 -#define FILE_UNICODE_ON_DISK 0x00000004 -#define FILE_PERSISTENT_ACLS 0x00000008 -#define FILE_FILE_COMPRESSION 0x00000010 -#define FILE_VOLUME_QUOTAS 0x00000020 -#define FILE_SUPPORTS_SPARSE_FILES 0x00000040 -#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 -#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 -#define FILE_VOLUME_IS_COMPRESSED 0x00008000 -#define FILE_SUPPORTS_OBJECT_IDS 0x00010000 -#define FILE_SUPPORTS_ENCRYPTION 0x00020000 -#define FILE_NAMED_STREAMS 0x00040000 -#define FILE_READ_ONLY_VOLUME 0x00080000 -#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000 -#define FILE_SUPPORTS_TRANSACTIONS 0x00200000 -#define FILE_SUPPORTS_HARD_LINKS 0x00400000 -#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000 -#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000 -#define FILE_SUPPORTS_USN_JOURNAL 0x02000000 + #define RRF_RT_REG_NONE 0x00000001 diff --git a/ctypes_generation/definitions/functions/file.txt b/ctypes_generation/definitions/functions/file.txt index 33f7a85..5ef391c 100644 --- a/ctypes_generation/definitions/functions/file.txt +++ b/ctypes_generation/definitions/functions/file.txt @@ -23,4 +23,51 @@ BOOL FindNextFileW( BOOL FindClose( HANDLE hFindFile +); + +HANDLE FindFirstChangeNotificationA( + LPCSTR lpPathName, + BOOL bWatchSubtree, + DWORD dwNotifyFilter +); + +HANDLE FindFirstChangeNotificationW( + LPCWSTR lpPathName, + BOOL bWatchSubtree, + DWORD dwNotifyFilter +); + +BOOL FindNextChangeNotification( + HANDLE hChangeHandle +); + +BOOL FindCloseChangeNotification( + HANDLE hChangeHandle +); + +BOOL FindNextChangeNotification( + HANDLE hChangeHandle +); + +BOOL ReadDirectoryChangesW( + HANDLE hDirectory, + LPVOID lpBuffer, + DWORD nBufferLength, + BOOL bWatchSubtree, + DWORD dwNotifyFilter, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped, + LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine +); + +BOOL ReadDirectoryChangesExW( + HANDLE hDirectory, + LPVOID lpBuffer, + DWORD nBufferLength, + BOOL bWatchSubtree, + DWORD dwNotifyFilter, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped, + LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine, + READ_DIRECTORY_NOTIFY_INFORMATION_CLASS ReadDirectoryNotifyInformationClass ); \ No newline at end of file diff --git a/ctypes_generation/definitions/functions/internet.txt b/ctypes_generation/definitions/functions/internet.txt index a4ac2cd..2865a6f 100644 --- a/ctypes_generation/definitions/functions/internet.txt +++ b/ctypes_generation/definitions/functions/internet.txt @@ -172,4 +172,82 @@ BOOL HttpSendRequestW( DWORD dwHeadersLength, LPVOID lpOptional, DWORD dwOptionalLength -); \ No newline at end of file +); + + +/// WinHTTP + +HINTERNET WinHttpOpen( + LPCWSTR pszAgentW, + DWORD dwAccessType, + LPCWSTR pszProxyW, + LPCWSTR pszProxyBypassW, + DWORD dwFlags +); + +BOOL WinHttpCloseHandle( + HINTERNET hInternet +); + + +HINTERNET WinHttpConnect( + HINTERNET hSession, + LPCWSTR pswzServerName, + INTERNET_PORT nServerPort, + DWORD dwReserved +); + + +BOOL WinHttpQueryDataAvailable( + HINTERNET hRequest, + LPDWORD lpdwNumberOfBytesAvailable +); + +BOOL WinHttpReadData( + HINTERNET hRequest, + LPVOID lpBuffer, + DWORD dwNumberOfBytesToRead, + LPDWORD lpdwNumberOfBytesRead +); + +HINTERNET WinHttpOpenRequest( + HINTERNET hConnect, + LPCWSTR pwszVerb, + LPCWSTR pwszObjectName, + LPCWSTR pwszVersion, + LPCWSTR pwszReferrer, + LPCWSTR *ppwszAcceptTypes, + DWORD dwFlags +); + + +BOOL WinHttpSendRequest( + HINTERNET hRequest, + LPCWSTR lpszHeaders, + DWORD dwHeadersLength, + LPVOID lpOptional, + DWORD dwOptionalLength, + DWORD dwTotalLength, + DWORD_PTR dwContext +); + +BOOL WinHttpReceiveResponse( + HINTERNET hRequest, + LPVOID lpReserved +); + +BOOL WinHttpAddRequestHeaders( + HINTERNET hRequest, + LPCWSTR lpszHeaders, + DWORD dwHeadersLength, + DWORD dwModifiers +); + +BOOL WinHttpQueryHeaders( + HINTERNET hRequest, + DWORD dwInfoLevel, + LPCWSTR pwszName, + LPVOID lpBuffer, + LPDWORD lpdwBufferLength, + LPDWORD lpdwIndex +); diff --git a/ctypes_generation/definitions/functions/network.txt b/ctypes_generation/definitions/functions/network.txt index 49a0fe5..c4d6abd 100644 --- a/ctypes_generation/definitions/functions/network.txt +++ b/ctypes_generation/definitions/functions/network.txt @@ -59,4 +59,11 @@ DNS_STATUS DnsQuery_W( // PVOID pExtra, // PDNS_RECORD *ppQueryResults, // PVOID *pReserved -// ); \ No newline at end of file +// ); + + +DNS_STATUS DnsQueryEx( + PDNS_QUERY_REQUEST pQueryRequest, + PDNS_QUERY_RESULT pQueryResults, + PDNS_QUERY_CANCEL pCancelHandle +); \ No newline at end of file diff --git a/ctypes_generation/definitions/simple_types.txt b/ctypes_generation/definitions/simple_types.txt index 3ff6bd4..5ccd494 100644 --- a/ctypes_generation/definitions/simple_types.txt +++ b/ctypes_generation/definitions/simple_types.txt @@ -238,6 +238,8 @@ ENUMRESTYPEPROCA = PVOID # Resources ENUMRESTYPEPROCW = PVOID # Resources LPSERVICE_MAIN_FUNCTIONA = PVOID LPSERVICE_MAIN_FUNCTIONW = PVOID +LPOVERLAPPED_COMPLETION_ROUTINE = PVOID +PDNS_QUERY_COMPLETION_ROUTINE = PVOID // Will be changed at import time diff --git a/ctypes_generation/definitions/structures/file_info.txt b/ctypes_generation/definitions/structures/file_info.txt index 01bd110..a12d984 100644 --- a/ctypes_generation/definitions/structures/file_info.txt +++ b/ctypes_generation/definitions/structures/file_info.txt @@ -253,4 +253,34 @@ typedef struct _WIN32_FIND_DATAW { DWORD dwFileType; DWORD dwCreatorType; WORD wFinderFlags; -} WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW; \ No newline at end of file +} WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW; + + +typedef enum _READ_DIRECTORY_NOTIFY_INFORMATION_CLASS { + ReadDirectoryNotifyInformation, + ReadDirectoryNotifyExtendedInformation +} READ_DIRECTORY_NOTIFY_INFORMATION_CLASS, *PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS; + +typedef struct _FILE_NOTIFY_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + DWORD FileNameLength; + WCHAR FileName[1]; +} FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION; + +typedef struct _FILE_NOTIFY_EXTENDED_INFORMATION { + DWORD NextEntryOffset; + DWORD Action; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastModificationTime; + LARGE_INTEGER LastChangeTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER AllocatedLength; + LARGE_INTEGER FileSize; + DWORD FileAttributes; + DWORD ReparsePointTag; + LARGE_INTEGER FileId; + LARGE_INTEGER ParentFileId; + DWORD FileNameLength; + WCHAR FileName[1]; +} FILE_NOTIFY_EXTENDED_INFORMATION, *PFILE_NOTIFY_EXTENDED_INFORMATION; diff --git a/ctypes_generation/definitions/structures/internet.txt b/ctypes_generation/definitions/structures/internet.txt index b356f39..0db2c4a 100644 --- a/ctypes_generation/definitions/structures/internet.txt +++ b/ctypes_generation/definitions/structures/internet.txt @@ -22,4 +22,5 @@ typedef struct _INTERNET_BUFFERSW { DWORD dwBufferTotal; DWORD dwOffsetLow; DWORD dwOffsetHigh; -} INTERNET_BUFFERSW, *LPINTERNET_BUFFERSW; \ No newline at end of file +} INTERNET_BUFFERSW, *LPINTERNET_BUFFERSW; + diff --git a/ctypes_generation/definitions/structures/network.txt b/ctypes_generation/definitions/structures/network.txt index f746276..fad9bac 100644 --- a/ctypes_generation/definitions/structures/network.txt +++ b/ctypes_generation/definitions/structures/network.txt @@ -818,4 +818,56 @@ typedef struct _DnsRecordW { DNS_UNKNOWN_DATA Unknown; PBYTE pDataPtr; } Data; -} DNS_RECORDW, *PDNS_RECORDW; \ No newline at end of file +} DNS_RECORDW, *PDNS_RECORDW; + + +typedef struct _DnsAddr +{ + CHAR MaxSa[ DNS_ADDR_MAX_SOCKADDR_LENGTH ]; + DWORD DnsAddrUserDword[ 8 ]; +} +DNS_ADDR, *PDNS_ADDR; + +typedef struct _DnsAddrArray +{ + DWORD MaxCount; + DWORD AddrCount; + DWORD Tag; + WORD Family; + WORD WordReserved; + DWORD Flags; + DWORD MatchFlag; + DWORD Reserved1; + DWORD Reserved2; + DNS_ADDR AddrArray[ANY_SIZE]; +} +DNS_ADDR_ARRAY, *PDNS_ADDR_ARRAY; + + +typedef struct _DNS_QUERY_REQUEST +{ + ULONG Version; + PCWSTR QueryName; + WORD QueryType; + ULONG64 QueryOptions; + PDNS_ADDR_ARRAY pDnsServerList; + ULONG InterfaceIndex; + PDNS_QUERY_COMPLETION_ROUTINE pQueryCompletionCallback; + PVOID pQueryContext; +} DNS_QUERY_REQUEST, *PDNS_QUERY_REQUEST; + +typedef struct _DNS_QUERY_CANCEL +{ + CHAR Reserved[32]; +} DNS_QUERY_CANCEL, *PDNS_QUERY_CANCEL; + + +typedef struct _DNS_QUERY_RESULT +{ + ULONG Version; + DNS_STATUS QueryStatus; + ULONG64 QueryOptions; + // 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 diff --git a/windows/generated_def/meta.py b/windows/generated_def/meta.py index 5b8a44e..cc3eeaa 100644 --- a/windows/generated_def/meta.py +++ b/windows/generated_def/meta.py @@ -833,6 +833,7 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'DIRECTORY_CREATE_SUBDIRECTORY', 'DIRECTORY_QUERY', 'DIRECTORY_TRAVERSE', + 'DNS_ADDR_MAX_SOCKADDR_LENGTH', 'DNS_ATMA_FORMAT_AESA', 'DNS_ATMA_FORMAT_E164', 'DNS_ATMA_MAX_ADDR_LENGTH', @@ -1164,10 +1165,16 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'FC_POINTER_DEREF', 'FC_SIMPLE_POINTER', 'FILE_ACTION_ADDED', + 'FILE_ACTION_ADDED_STREAM', + 'FILE_ACTION_ID_NOT_TUNNELLED', 'FILE_ACTION_MODIFIED', + 'FILE_ACTION_MODIFIED_STREAM', 'FILE_ACTION_REMOVED', + 'FILE_ACTION_REMOVED_BY_DELETE', + 'FILE_ACTION_REMOVED_STREAM', 'FILE_ACTION_RENAMED_NEW_NAME', 'FILE_ACTION_RENAMED_OLD_NAME', + 'FILE_ACTION_TUNNELLED_ID_COLLISION', 'FILE_ADD_FILE', 'FILE_ADD_SUBDIRECTORY', 'FILE_ALL_ACCESS', @@ -1285,11 +1292,17 @@ windef = set(['ABOVE_NORMAL_PRIORITY_CLASS', 'FILE_NOTIFY_CHANGE_ATTRIBUTES', 'FILE_NOTIFY_CHANGE_CREATION', 'FILE_NOTIFY_CHANGE_DIR_NAME', + 'FILE_NOTIFY_CHANGE_EA', 'FILE_NOTIFY_CHANGE_FILE_NAME', 'FILE_NOTIFY_CHANGE_LAST_ACCESS', 'FILE_NOTIFY_CHANGE_LAST_WRITE', + 'FILE_NOTIFY_CHANGE_NAME', 'FILE_NOTIFY_CHANGE_SECURITY', 'FILE_NOTIFY_CHANGE_SIZE', + 'FILE_NOTIFY_CHANGE_STREAM_NAME', + 'FILE_NOTIFY_CHANGE_STREAM_SIZE', + 'FILE_NOTIFY_CHANGE_STREAM_WRITE', + 'FILE_NOTIFY_VALID_MASK', 'FILE_NO_COMPRESSION', 'FILE_NO_EA_KNOWLEDGE', 'FILE_NO_INTERMEDIATE_BUFFERING', @@ -11620,6 +11633,8 @@ structs = set(['ACCESS_ALLOWED_ACE', 'DMA_Range_s', 'DMA_Resource_s', 'DNS_AAAA_DATA', + 'DNS_ADDR', + 'DNS_ADDR_ARRAY', 'DNS_ATMA_DATA', 'DNS_A_DATA', 'DNS_CACHE_ENTRY', @@ -11644,6 +11659,9 @@ structs = set(['ACCESS_ALLOWED_ACE', 'DNS_OPT_DATA', 'DNS_PTR_DATAA', 'DNS_PTR_DATAW', + 'DNS_QUERY_CANCEL', + 'DNS_QUERY_REQUEST', + 'DNS_QUERY_RESULT', 'DNS_RECORDA', 'DNS_RECORDW', 'DNS_RECORD_FLAGS', @@ -11727,6 +11745,8 @@ structs = set(['ACCESS_ALLOWED_ACE', 'FILE_MODE_INFORMATION', 'FILE_NAME_INFORMATION', 'FILE_NETWORK_OPEN_INFORMATION', + 'FILE_NOTIFY_EXTENDED_INFORMATION', + 'FILE_NOTIFY_INFORMATION', 'FILE_POSITION_INFORMATION', 'FILE_STANDARD_INFORMATION', 'FILE_STREAM_INFORMATION', @@ -12111,6 +12131,8 @@ structs = set(['ACCESS_ALLOWED_ACE', 'PDMA_RANGE', 'PDMA_RESOURCE', 'PDNS_AAAA_DATA', + 'PDNS_ADDR', + 'PDNS_ADDR_ARRAY', 'PDNS_ATMA_DATA', 'PDNS_A_DATA', 'PDNS_CACHE_ENTRY', @@ -12135,6 +12157,9 @@ structs = set(['ACCESS_ALLOWED_ACE', 'PDNS_OPT_DATA', 'PDNS_PTR_DATAA', 'PDNS_PTR_DATAW', + 'PDNS_QUERY_CANCEL', + 'PDNS_QUERY_REQUEST', + 'PDNS_QUERY_RESULT', 'PDNS_RECORDA', 'PDNS_RECORDW', 'PDNS_RRSIG_DATAA', @@ -12208,6 +12233,8 @@ structs = set(['ACCESS_ALLOWED_ACE', 'PFILE_MODE_INFORMATION', 'PFILE_NAME_INFORMATION', 'PFILE_NETWORK_OPEN_INFORMATION', + 'PFILE_NOTIFY_EXTENDED_INFORMATION', + 'PFILE_NOTIFY_INFORMATION', 'PFILE_POSITION_INFORMATION', 'PFILE_STANDARD_INFORMATION', 'PFILE_STREAM_INFORMATION', @@ -12827,6 +12854,11 @@ structs = set(['ACCESS_ALLOWED_ACE', '_DEBUG_VALUE_TMP_SUBSTRUCT3', '_DEBUG_VALUE_TMP_UNION', '_DNS_CACHE_ENTRY', + '_DNS_QUERY_CANCEL', + '_DNS_QUERY_REQUEST', + '_DNS_QUERY_RESULT', + '_DnsAddr', + '_DnsAddrArray', '_DnsRecordA', '_DnsRecordFlags', '_DnsRecordW', @@ -12887,6 +12919,8 @@ structs = set(['ACCESS_ALLOWED_ACE', '_FILE_MODE_INFORMATION', '_FILE_NAME_INFORMATION', '_FILE_NETWORK_OPEN_INFORMATION', + '_FILE_NOTIFY_EXTENDED_INFORMATION', + '_FILE_NOTIFY_INFORMATION', '_FILE_POSITION_INFORMATION', '_FILE_STANDARD_INFORMATION', '_FILE_STREAM_INFORMATION', @@ -13273,6 +13307,7 @@ enums = set(['ACCESS_MODE', 'PPOLICY_INFORMATION_CLASS', 'PPOLICY_LSA_SERVER_ROLE', 'PPROCESS_MITIGATION_POLICY', + 'PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS', 'PROCESSINFOCLASS', 'PROCESS_MITIGATION_POLICY', 'PSECURITY_IMPERSONATION_LEVEL', @@ -13281,6 +13316,7 @@ enums = set(['ACCESS_MODE', 'PTOKEN_ELEVATION_TYPE', 'PTOKEN_INFORMATION_CLASS', 'PTOKEN_TYPE', + 'READ_DIRECTORY_NOTIFY_INFORMATION_CLASS', 'RTL_PATH_TYPE', 'SC_ENUM_TYPE', 'SC_STATUS_TYPE', @@ -13377,6 +13413,7 @@ enums = set(['ACCESS_MODE', '_POLICY_LSA_SERVER_ROLE', '_PROCESSINFOCLASS', '_PROCESS_MITIGATION_POLICY', + '_READ_DIRECTORY_NOTIFY_INFORMATION_CLASS', '_RTL_PATH_TYPE', '_SC_ENUM_TYPE', '_SC_STATUS_TYPE', @@ -13617,6 +13654,7 @@ functions = set(['AccessCheck', 'DeviceIoControl', 'DnsFree', 'DnsGetCacheDataTable', + 'DnsQueryEx', 'DnsQuery_A', 'DnsQuery_W', 'DuplicateHandle', @@ -13666,10 +13704,14 @@ functions = set(['AccessCheck', 'ExitThread', 'FileTimeToSystemTime', 'FindClose', + 'FindCloseChangeNotification', + 'FindFirstChangeNotificationA', + 'FindFirstChangeNotificationW', 'FindFirstFileA', 'FindFirstFileW', 'FindFirstVolumeA', 'FindFirstVolumeW', + 'FindNextChangeNotification', 'FindNextFileA', 'FindNextFileW', 'FindNextVolumeA', @@ -13974,6 +14016,8 @@ functions = set(['AccessCheck', 'QueryServiceStatusEx', 'QueryWorkingSet', 'QueryWorkingSetEx', + 'ReadDirectoryChangesExW', + 'ReadDirectoryChangesW', 'ReadEventLogA', 'ReadEventLogW', 'ReadFile', @@ -14158,6 +14202,16 @@ functions = set(['AccessCheck', 'VirtualQueryEx', 'WaitForDebugEvent', 'WaitForSingleObject', + 'WinHttpAddRequestHeaders', + 'WinHttpCloseHandle', + 'WinHttpConnect', + 'WinHttpOpen', + 'WinHttpOpenRequest', + 'WinHttpQueryDataAvailable', + 'WinHttpQueryHeaders', + 'WinHttpReadData', + 'WinHttpReceiveResponse', + 'WinHttpSendRequest', 'WinVerifyTrust', 'WindowFromPoint', 'Wow64DisableWow64FsRedirection', diff --git a/windows/generated_def/windef.py b/windows/generated_def/windef.py index f09376a..c96ae58 100644 --- a/windows/generated_def/windef.py +++ b/windows/generated_def/windef.py @@ -548,6 +548,69 @@ EVENT_TRACE_FLAG_NETWORK_TCPIP = make_flag("EVENT_TRACE_FLAG_NETWORK_TCPIP", 0x0 EVENT_TRACE_FLAG_REGISTRY = make_flag("EVENT_TRACE_FLAG_REGISTRY", 0x00020000) EVENT_TRACE_FLAG_DBGPRINT = make_flag("EVENT_TRACE_FLAG_DBGPRINT", 0x00040000) EVENT_TRACE_FLAG_VOLMGR = make_flag("EVENT_TRACE_FLAG_VOLMGR", 0x00200000) +FILE_NOTIFY_CHANGE_FILE_NAME = make_flag("FILE_NOTIFY_CHANGE_FILE_NAME", 0x00000001) +FILE_NOTIFY_CHANGE_DIR_NAME = make_flag("FILE_NOTIFY_CHANGE_DIR_NAME", 0x00000002) +FILE_NOTIFY_CHANGE_NAME = make_flag("FILE_NOTIFY_CHANGE_NAME", 0x00000003) +FILE_NOTIFY_CHANGE_ATTRIBUTES = make_flag("FILE_NOTIFY_CHANGE_ATTRIBUTES", 0x00000004) +FILE_NOTIFY_CHANGE_SIZE = make_flag("FILE_NOTIFY_CHANGE_SIZE", 0x00000008) +FILE_NOTIFY_CHANGE_LAST_WRITE = make_flag("FILE_NOTIFY_CHANGE_LAST_WRITE", 0x00000010) +FILE_NOTIFY_CHANGE_LAST_ACCESS = make_flag("FILE_NOTIFY_CHANGE_LAST_ACCESS", 0x00000020) +FILE_NOTIFY_CHANGE_CREATION = make_flag("FILE_NOTIFY_CHANGE_CREATION", 0x00000040) +FILE_NOTIFY_CHANGE_EA = make_flag("FILE_NOTIFY_CHANGE_EA", 0x00000080) +FILE_NOTIFY_CHANGE_SECURITY = make_flag("FILE_NOTIFY_CHANGE_SECURITY", 0x00000100) +FILE_NOTIFY_CHANGE_STREAM_NAME = make_flag("FILE_NOTIFY_CHANGE_STREAM_NAME", 0x00000200) +FILE_NOTIFY_CHANGE_STREAM_SIZE = make_flag("FILE_NOTIFY_CHANGE_STREAM_SIZE", 0x00000400) +FILE_NOTIFY_CHANGE_STREAM_WRITE = make_flag("FILE_NOTIFY_CHANGE_STREAM_WRITE", 0x00000800) +FILE_NOTIFY_VALID_MASK = make_flag("FILE_NOTIFY_VALID_MASK", 0x00000fff) +FILE_ACTION_ADDED = make_flag("FILE_ACTION_ADDED", 0x00000001) +FILE_ACTION_REMOVED = make_flag("FILE_ACTION_REMOVED", 0x00000002) +FILE_ACTION_MODIFIED = make_flag("FILE_ACTION_MODIFIED", 0x00000003) +FILE_ACTION_RENAMED_OLD_NAME = make_flag("FILE_ACTION_RENAMED_OLD_NAME", 0x00000004) +FILE_ACTION_RENAMED_NEW_NAME = make_flag("FILE_ACTION_RENAMED_NEW_NAME", 0x00000005) +FILE_ACTION_ADDED_STREAM = make_flag("FILE_ACTION_ADDED_STREAM", 0x00000006) +FILE_ACTION_REMOVED_STREAM = make_flag("FILE_ACTION_REMOVED_STREAM", 0x00000007) +FILE_ACTION_MODIFIED_STREAM = make_flag("FILE_ACTION_MODIFIED_STREAM", 0x00000008) +FILE_ACTION_REMOVED_BY_DELETE = make_flag("FILE_ACTION_REMOVED_BY_DELETE", 0x00000009) +FILE_ACTION_ID_NOT_TUNNELLED = make_flag("FILE_ACTION_ID_NOT_TUNNELLED", 0x0000000A) +FILE_ACTION_TUNNELLED_ID_COLLISION = make_flag("FILE_ACTION_TUNNELLED_ID_COLLISION", 0x0000000B) +FILE_CASE_SENSITIVE_SEARCH = make_flag("FILE_CASE_SENSITIVE_SEARCH", 0x00000001) +FILE_CASE_PRESERVED_NAMES = make_flag("FILE_CASE_PRESERVED_NAMES", 0x00000002) +FILE_UNICODE_ON_DISK = make_flag("FILE_UNICODE_ON_DISK", 0x00000004) +FILE_PERSISTENT_ACLS = make_flag("FILE_PERSISTENT_ACLS", 0x00000008) +FILE_FILE_COMPRESSION = make_flag("FILE_FILE_COMPRESSION", 0x00000010) +FILE_VOLUME_QUOTAS = make_flag("FILE_VOLUME_QUOTAS", 0x00000020) +FILE_SUPPORTS_SPARSE_FILES = make_flag("FILE_SUPPORTS_SPARSE_FILES", 0x00000040) +FILE_SUPPORTS_REPARSE_POINTS = make_flag("FILE_SUPPORTS_REPARSE_POINTS", 0x00000080) +FILE_SUPPORTS_REMOTE_STORAGE = make_flag("FILE_SUPPORTS_REMOTE_STORAGE", 0x00000100) +FILE_VOLUME_IS_COMPRESSED = make_flag("FILE_VOLUME_IS_COMPRESSED", 0x00008000) +FILE_SUPPORTS_OBJECT_IDS = make_flag("FILE_SUPPORTS_OBJECT_IDS", 0x00010000) +FILE_SUPPORTS_ENCRYPTION = make_flag("FILE_SUPPORTS_ENCRYPTION", 0x00020000) +FILE_NAMED_STREAMS = make_flag("FILE_NAMED_STREAMS", 0x00040000) +FILE_READ_ONLY_VOLUME = make_flag("FILE_READ_ONLY_VOLUME", 0x00080000) +FILE_SEQUENTIAL_WRITE_ONCE = make_flag("FILE_SEQUENTIAL_WRITE_ONCE", 0x00100000) +FILE_SUPPORTS_TRANSACTIONS = make_flag("FILE_SUPPORTS_TRANSACTIONS", 0x00200000) +FILE_SUPPORTS_HARD_LINKS = make_flag("FILE_SUPPORTS_HARD_LINKS", 0x00400000) +FILE_SUPPORTS_EXTENDED_ATTRIBUTES = make_flag("FILE_SUPPORTS_EXTENDED_ATTRIBUTES", 0x00800000) +FILE_SUPPORTS_OPEN_BY_FILE_ID = make_flag("FILE_SUPPORTS_OPEN_BY_FILE_ID", 0x01000000) +FILE_SUPPORTS_USN_JOURNAL = make_flag("FILE_SUPPORTS_USN_JOURNAL", 0x02000000) +FILE_SHARE_READ = make_flag("FILE_SHARE_READ", 0x00000001) +FILE_SHARE_WRITE = make_flag("FILE_SHARE_WRITE", 0x00000002) +FILE_SHARE_DELETE = make_flag("FILE_SHARE_DELETE", 0x00000004) +FILE_ATTRIBUTE_READONLY = make_flag("FILE_ATTRIBUTE_READONLY", 0x00000001) +FILE_ATTRIBUTE_HIDDEN = make_flag("FILE_ATTRIBUTE_HIDDEN", 0x00000002) +FILE_ATTRIBUTE_SYSTEM = make_flag("FILE_ATTRIBUTE_SYSTEM", 0x00000004) +FILE_ATTRIBUTE_DIRECTORY = make_flag("FILE_ATTRIBUTE_DIRECTORY", 0x00000010) +FILE_ATTRIBUTE_ARCHIVE = make_flag("FILE_ATTRIBUTE_ARCHIVE", 0x00000020) +FILE_ATTRIBUTE_DEVICE = make_flag("FILE_ATTRIBUTE_DEVICE", 0x00000040) +FILE_ATTRIBUTE_NORMAL = make_flag("FILE_ATTRIBUTE_NORMAL", 0x00000080) +FILE_ATTRIBUTE_TEMPORARY = make_flag("FILE_ATTRIBUTE_TEMPORARY", 0x00000100) +FILE_ATTRIBUTE_SPARSE_FILE = make_flag("FILE_ATTRIBUTE_SPARSE_FILE", 0x00000200) +FILE_ATTRIBUTE_REPARSE_POINT = make_flag("FILE_ATTRIBUTE_REPARSE_POINT", 0x00000400) +FILE_ATTRIBUTE_COMPRESSED = make_flag("FILE_ATTRIBUTE_COMPRESSED", 0x00000800) +FILE_ATTRIBUTE_OFFLINE = make_flag("FILE_ATTRIBUTE_OFFLINE", 0x00001000) +FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = make_flag("FILE_ATTRIBUTE_NOT_CONTENT_INDEXED", 0x00002000) +FILE_ATTRIBUTE_ENCRYPTED = make_flag("FILE_ATTRIBUTE_ENCRYPTED", 0x00004000) +FILE_ATTRIBUTE_VIRTUAL = make_flag("FILE_ATTRIBUTE_VIRTUAL", 0x00010000) X86_KGDT_NULL = make_flag("X86_KGDT_NULL", 0) X86_KGDT_R0_CODE = make_flag("X86_KGDT_R0_CODE", 8) X86_KGDT_R0_DATA = make_flag("X86_KGDT_R0_DATA", 16) @@ -589,6 +652,7 @@ ATM_ADDR_SIZE = make_flag("ATM_ADDR_SIZE", 20) DNS_ATMA_FORMAT_E164 = make_flag("DNS_ATMA_FORMAT_E164", ATM_E164) DNS_ATMA_FORMAT_AESA = make_flag("DNS_ATMA_FORMAT_AESA", ATM_AESA) DNS_ATMA_MAX_ADDR_LENGTH = make_flag("DNS_ATMA_MAX_ADDR_LENGTH", ATM_ADDR_SIZE) +DNS_ADDR_MAX_SOCKADDR_LENGTH = make_flag("DNS_ADDR_MAX_SOCKADDR_LENGTH", ( 32 )) DNS_TYPE_ZERO = make_flag("DNS_TYPE_ZERO", 0x0000) DNS_TYPE_A = make_flag("DNS_TYPE_A", 0x0001) DNS_TYPE_NS = make_flag("DNS_TYPE_NS", 0x0002) @@ -1534,59 +1598,8 @@ CREATE_ALWAYS = make_flag("CREATE_ALWAYS", 2) OPEN_EXISTING = make_flag("OPEN_EXISTING", 3) OPEN_ALWAYS = make_flag("OPEN_ALWAYS", 4) TRUNCATE_EXISTING = make_flag("TRUNCATE_EXISTING", 5) -FILE_SHARE_READ = make_flag("FILE_SHARE_READ", 0x00000001) -FILE_SHARE_WRITE = make_flag("FILE_SHARE_WRITE", 0x00000002) -FILE_SHARE_DELETE = make_flag("FILE_SHARE_DELETE", 0x00000004) -FILE_ATTRIBUTE_READONLY = make_flag("FILE_ATTRIBUTE_READONLY", 0x00000001) -FILE_ATTRIBUTE_HIDDEN = make_flag("FILE_ATTRIBUTE_HIDDEN", 0x00000002) -FILE_ATTRIBUTE_SYSTEM = make_flag("FILE_ATTRIBUTE_SYSTEM", 0x00000004) -FILE_ATTRIBUTE_DIRECTORY = make_flag("FILE_ATTRIBUTE_DIRECTORY", 0x00000010) -FILE_ATTRIBUTE_ARCHIVE = make_flag("FILE_ATTRIBUTE_ARCHIVE", 0x00000020) -FILE_ATTRIBUTE_DEVICE = make_flag("FILE_ATTRIBUTE_DEVICE", 0x00000040) -FILE_ATTRIBUTE_NORMAL = make_flag("FILE_ATTRIBUTE_NORMAL", 0x00000080) -FILE_ATTRIBUTE_TEMPORARY = make_flag("FILE_ATTRIBUTE_TEMPORARY", 0x00000100) -FILE_ATTRIBUTE_SPARSE_FILE = make_flag("FILE_ATTRIBUTE_SPARSE_FILE", 0x00000200) -FILE_ATTRIBUTE_REPARSE_POINT = make_flag("FILE_ATTRIBUTE_REPARSE_POINT", 0x00000400) -FILE_ATTRIBUTE_COMPRESSED = make_flag("FILE_ATTRIBUTE_COMPRESSED", 0x00000800) -FILE_ATTRIBUTE_OFFLINE = make_flag("FILE_ATTRIBUTE_OFFLINE", 0x00001000) -FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = make_flag("FILE_ATTRIBUTE_NOT_CONTENT_INDEXED", 0x00002000) -FILE_ATTRIBUTE_ENCRYPTED = make_flag("FILE_ATTRIBUTE_ENCRYPTED", 0x00004000) -FILE_ATTRIBUTE_VIRTUAL = make_flag("FILE_ATTRIBUTE_VIRTUAL", 0x00010000) -FILE_NOTIFY_CHANGE_FILE_NAME = make_flag("FILE_NOTIFY_CHANGE_FILE_NAME", 0x00000001) -FILE_NOTIFY_CHANGE_DIR_NAME = make_flag("FILE_NOTIFY_CHANGE_DIR_NAME", 0x00000002) -FILE_NOTIFY_CHANGE_ATTRIBUTES = make_flag("FILE_NOTIFY_CHANGE_ATTRIBUTES", 0x00000004) -FILE_NOTIFY_CHANGE_SIZE = make_flag("FILE_NOTIFY_CHANGE_SIZE", 0x00000008) -FILE_NOTIFY_CHANGE_LAST_WRITE = make_flag("FILE_NOTIFY_CHANGE_LAST_WRITE", 0x00000010) -FILE_NOTIFY_CHANGE_LAST_ACCESS = make_flag("FILE_NOTIFY_CHANGE_LAST_ACCESS", 0x00000020) -FILE_NOTIFY_CHANGE_CREATION = make_flag("FILE_NOTIFY_CHANGE_CREATION", 0x00000040) -FILE_NOTIFY_CHANGE_SECURITY = make_flag("FILE_NOTIFY_CHANGE_SECURITY", 0x00000100) -FILE_ACTION_ADDED = make_flag("FILE_ACTION_ADDED", 0x00000001) -FILE_ACTION_REMOVED = make_flag("FILE_ACTION_REMOVED", 0x00000002) -FILE_ACTION_MODIFIED = make_flag("FILE_ACTION_MODIFIED", 0x00000003) -FILE_ACTION_RENAMED_OLD_NAME = make_flag("FILE_ACTION_RENAMED_OLD_NAME", 0x00000004) -FILE_ACTION_RENAMED_NEW_NAME = make_flag("FILE_ACTION_RENAMED_NEW_NAME", 0x00000005) MAILSLOT_NO_MESSAGE = make_flag("MAILSLOT_NO_MESSAGE", ( -1 )) MAILSLOT_WAIT_FOREVER = make_flag("MAILSLOT_WAIT_FOREVER", ( -1 )) -FILE_CASE_SENSITIVE_SEARCH = make_flag("FILE_CASE_SENSITIVE_SEARCH", 0x00000001) -FILE_CASE_PRESERVED_NAMES = make_flag("FILE_CASE_PRESERVED_NAMES", 0x00000002) -FILE_UNICODE_ON_DISK = make_flag("FILE_UNICODE_ON_DISK", 0x00000004) -FILE_PERSISTENT_ACLS = make_flag("FILE_PERSISTENT_ACLS", 0x00000008) -FILE_FILE_COMPRESSION = make_flag("FILE_FILE_COMPRESSION", 0x00000010) -FILE_VOLUME_QUOTAS = make_flag("FILE_VOLUME_QUOTAS", 0x00000020) -FILE_SUPPORTS_SPARSE_FILES = make_flag("FILE_SUPPORTS_SPARSE_FILES", 0x00000040) -FILE_SUPPORTS_REPARSE_POINTS = make_flag("FILE_SUPPORTS_REPARSE_POINTS", 0x00000080) -FILE_SUPPORTS_REMOTE_STORAGE = make_flag("FILE_SUPPORTS_REMOTE_STORAGE", 0x00000100) -FILE_VOLUME_IS_COMPRESSED = make_flag("FILE_VOLUME_IS_COMPRESSED", 0x00008000) -FILE_SUPPORTS_OBJECT_IDS = make_flag("FILE_SUPPORTS_OBJECT_IDS", 0x00010000) -FILE_SUPPORTS_ENCRYPTION = make_flag("FILE_SUPPORTS_ENCRYPTION", 0x00020000) -FILE_NAMED_STREAMS = make_flag("FILE_NAMED_STREAMS", 0x00040000) -FILE_READ_ONLY_VOLUME = make_flag("FILE_READ_ONLY_VOLUME", 0x00080000) -FILE_SEQUENTIAL_WRITE_ONCE = make_flag("FILE_SEQUENTIAL_WRITE_ONCE", 0x00100000) -FILE_SUPPORTS_TRANSACTIONS = make_flag("FILE_SUPPORTS_TRANSACTIONS", 0x00200000) -FILE_SUPPORTS_HARD_LINKS = make_flag("FILE_SUPPORTS_HARD_LINKS", 0x00400000) -FILE_SUPPORTS_EXTENDED_ATTRIBUTES = make_flag("FILE_SUPPORTS_EXTENDED_ATTRIBUTES", 0x00800000) -FILE_SUPPORTS_OPEN_BY_FILE_ID = make_flag("FILE_SUPPORTS_OPEN_BY_FILE_ID", 0x01000000) -FILE_SUPPORTS_USN_JOURNAL = make_flag("FILE_SUPPORTS_USN_JOURNAL", 0x02000000) RRF_RT_REG_NONE = make_flag("RRF_RT_REG_NONE", 0x00000001) RRF_RT_REG_SZ = make_flag("RRF_RT_REG_SZ", 0x00000002) RRF_RT_REG_EXPAND_SZ = make_flag("RRF_RT_REG_EXPAND_SZ", 0x00000004) diff --git a/windows/generated_def/winfuncs.py b/windows/generated_def/winfuncs.py index 85a36ee..180971f 100644 --- a/windows/generated_def/winfuncs.py +++ b/windows/generated_def/winfuncs.py @@ -1050,6 +1050,41 @@ FindNextFileWParams = ((1, 'hFindFile'), (1, 'lpFindFileData')) FindClosePrototype = WINFUNCTYPE(BOOL, HANDLE) FindCloseParams = ((1, 'hFindFile'),) +#def FindFirstChangeNotificationA(lpPathName, bWatchSubtree, dwNotifyFilter): +# return FindFirstChangeNotificationA.ctypes_function(lpPathName, bWatchSubtree, dwNotifyFilter) +FindFirstChangeNotificationAPrototype = WINFUNCTYPE(HANDLE, LPCSTR, BOOL, DWORD) +FindFirstChangeNotificationAParams = ((1, 'lpPathName'), (1, 'bWatchSubtree'), (1, 'dwNotifyFilter')) + +#def FindFirstChangeNotificationW(lpPathName, bWatchSubtree, dwNotifyFilter): +# return FindFirstChangeNotificationW.ctypes_function(lpPathName, bWatchSubtree, dwNotifyFilter) +FindFirstChangeNotificationWPrototype = WINFUNCTYPE(HANDLE, LPCWSTR, BOOL, DWORD) +FindFirstChangeNotificationWParams = ((1, 'lpPathName'), (1, 'bWatchSubtree'), (1, 'dwNotifyFilter')) + +#def FindNextChangeNotification(hChangeHandle): +# return FindNextChangeNotification.ctypes_function(hChangeHandle) +FindNextChangeNotificationPrototype = WINFUNCTYPE(BOOL, HANDLE) +FindNextChangeNotificationParams = ((1, 'hChangeHandle'),) + +#def FindCloseChangeNotification(hChangeHandle): +# return FindCloseChangeNotification.ctypes_function(hChangeHandle) +FindCloseChangeNotificationPrototype = WINFUNCTYPE(BOOL, HANDLE) +FindCloseChangeNotificationParams = ((1, 'hChangeHandle'),) + +#def FindNextChangeNotification(hChangeHandle): +# return FindNextChangeNotification.ctypes_function(hChangeHandle) +FindNextChangeNotificationPrototype = WINFUNCTYPE(BOOL, HANDLE) +FindNextChangeNotificationParams = ((1, 'hChangeHandle'),) + +#def ReadDirectoryChangesW(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine): +# return ReadDirectoryChangesW.ctypes_function(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine) +ReadDirectoryChangesWPrototype = WINFUNCTYPE(BOOL, HANDLE, LPVOID, DWORD, BOOL, DWORD, LPDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE) +ReadDirectoryChangesWParams = ((1, 'hDirectory'), (1, 'lpBuffer'), (1, 'nBufferLength'), (1, 'bWatchSubtree'), (1, 'dwNotifyFilter'), (1, 'lpBytesReturned'), (1, 'lpOverlapped'), (1, 'lpCompletionRoutine')) + +#def ReadDirectoryChangesExW(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine, ReadDirectoryNotifyInformationClass): +# return ReadDirectoryChangesExW.ctypes_function(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine, ReadDirectoryNotifyInformationClass) +ReadDirectoryChangesExWPrototype = WINFUNCTYPE(BOOL, HANDLE, LPVOID, DWORD, BOOL, DWORD, LPDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE, READ_DIRECTORY_NOTIFY_INFORMATION_CLASS) +ReadDirectoryChangesExWParams = ((1, 'hDirectory'), (1, 'lpBuffer'), (1, 'nBufferLength'), (1, 'bWatchSubtree'), (1, 'dwNotifyFilter'), (1, 'lpBytesReturned'), (1, 'lpOverlapped'), (1, 'lpCompletionRoutine'), (1, 'ReadDirectoryNotifyInformationClass')) + #def HeapAlloc(hHeap, dwFlags, dwBytes): # return HeapAlloc.ctypes_function(hHeap, dwFlags, dwBytes) HeapAllocPrototype = WINFUNCTYPE(LPVOID, HANDLE, DWORD, SIZE_T) @@ -1160,6 +1195,56 @@ HttpSendRequestAParams = ((1, 'hRequest'), (1, 'lpszHeaders'), (1, 'dwHeadersLen HttpSendRequestWPrototype = WINFUNCTYPE(BOOL, HINTERNET, LPCWSTR, DWORD, LPVOID, DWORD) HttpSendRequestWParams = ((1, 'hRequest'), (1, 'lpszHeaders'), (1, 'dwHeadersLength'), (1, 'lpOptional'), (1, 'dwOptionalLength')) +#def WinHttpOpen(pszAgentW, dwAccessType, pszProxyW, pszProxyBypassW, dwFlags): +# return WinHttpOpen.ctypes_function(pszAgentW, dwAccessType, pszProxyW, pszProxyBypassW, dwFlags) +WinHttpOpenPrototype = WINFUNCTYPE(HINTERNET, LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD) +WinHttpOpenParams = ((1, 'pszAgentW'), (1, 'dwAccessType'), (1, 'pszProxyW'), (1, 'pszProxyBypassW'), (1, 'dwFlags')) + +#def WinHttpCloseHandle(hInternet): +# return WinHttpCloseHandle.ctypes_function(hInternet) +WinHttpCloseHandlePrototype = WINFUNCTYPE(BOOL, HINTERNET) +WinHttpCloseHandleParams = ((1, 'hInternet'),) + +#def WinHttpConnect(hSession, pswzServerName, nServerPort, dwReserved): +# return WinHttpConnect.ctypes_function(hSession, pswzServerName, nServerPort, dwReserved) +WinHttpConnectPrototype = WINFUNCTYPE(HINTERNET, HINTERNET, LPCWSTR, INTERNET_PORT, DWORD) +WinHttpConnectParams = ((1, 'hSession'), (1, 'pswzServerName'), (1, 'nServerPort'), (1, 'dwReserved')) + +#def WinHttpQueryDataAvailable(hRequest, lpdwNumberOfBytesAvailable): +# return WinHttpQueryDataAvailable.ctypes_function(hRequest, lpdwNumberOfBytesAvailable) +WinHttpQueryDataAvailablePrototype = WINFUNCTYPE(BOOL, HINTERNET, LPDWORD) +WinHttpQueryDataAvailableParams = ((1, 'hRequest'), (1, 'lpdwNumberOfBytesAvailable')) + +#def WinHttpReadData(hRequest, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead): +# return WinHttpReadData.ctypes_function(hRequest, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead) +WinHttpReadDataPrototype = WINFUNCTYPE(BOOL, HINTERNET, LPVOID, DWORD, LPDWORD) +WinHttpReadDataParams = ((1, 'hRequest'), (1, 'lpBuffer'), (1, 'dwNumberOfBytesToRead'), (1, 'lpdwNumberOfBytesRead')) + +#def WinHttpOpenRequest(hConnect, pwszVerb, pwszObjectName, pwszVersion, pwszReferrer, ppwszAcceptTypes, dwFlags): +# return WinHttpOpenRequest.ctypes_function(hConnect, pwszVerb, pwszObjectName, pwszVersion, pwszReferrer, ppwszAcceptTypes, dwFlags) +WinHttpOpenRequestPrototype = WINFUNCTYPE(HINTERNET, HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, POINTER(LPCWSTR), DWORD) +WinHttpOpenRequestParams = ((1, 'hConnect'), (1, 'pwszVerb'), (1, 'pwszObjectName'), (1, 'pwszVersion'), (1, 'pwszReferrer'), (1, 'ppwszAcceptTypes'), (1, 'dwFlags')) + +#def WinHttpSendRequest(hRequest, lpszHeaders, dwHeadersLength, lpOptional, dwOptionalLength, dwTotalLength, dwContext): +# return WinHttpSendRequest.ctypes_function(hRequest, lpszHeaders, dwHeadersLength, lpOptional, dwOptionalLength, dwTotalLength, dwContext) +WinHttpSendRequestPrototype = WINFUNCTYPE(BOOL, HINTERNET, LPCWSTR, DWORD, LPVOID, DWORD, DWORD, DWORD_PTR) +WinHttpSendRequestParams = ((1, 'hRequest'), (1, 'lpszHeaders'), (1, 'dwHeadersLength'), (1, 'lpOptional'), (1, 'dwOptionalLength'), (1, 'dwTotalLength'), (1, 'dwContext')) + +#def WinHttpReceiveResponse(hRequest, lpReserved): +# return WinHttpReceiveResponse.ctypes_function(hRequest, lpReserved) +WinHttpReceiveResponsePrototype = WINFUNCTYPE(BOOL, HINTERNET, LPVOID) +WinHttpReceiveResponseParams = ((1, 'hRequest'), (1, 'lpReserved')) + +#def WinHttpAddRequestHeaders(hRequest, lpszHeaders, dwHeadersLength, dwModifiers): +# return WinHttpAddRequestHeaders.ctypes_function(hRequest, lpszHeaders, dwHeadersLength, dwModifiers) +WinHttpAddRequestHeadersPrototype = WINFUNCTYPE(BOOL, HINTERNET, LPCWSTR, DWORD, DWORD) +WinHttpAddRequestHeadersParams = ((1, 'hRequest'), (1, 'lpszHeaders'), (1, 'dwHeadersLength'), (1, 'dwModifiers')) + +#def WinHttpQueryHeaders(hRequest, dwInfoLevel, pwszName, lpBuffer, lpdwBufferLength, lpdwIndex): +# return WinHttpQueryHeaders.ctypes_function(hRequest, dwInfoLevel, pwszName, lpBuffer, lpdwBufferLength, lpdwIndex) +WinHttpQueryHeadersPrototype = WINFUNCTYPE(BOOL, HINTERNET, DWORD, LPCWSTR, LPVOID, LPDWORD, LPDWORD) +WinHttpQueryHeadersParams = ((1, 'hRequest'), (1, 'dwInfoLevel'), (1, 'pwszName'), (1, 'lpBuffer'), (1, 'lpdwBufferLength'), (1, 'lpdwIndex')) + #def LsaOpenPolicy(SystemName, ObjectAttributes, DesiredAccess, PolicyHandle): # return LsaOpenPolicy.ctypes_function(SystemName, ObjectAttributes, DesiredAccess, PolicyHandle) LsaOpenPolicyPrototype = WINFUNCTYPE(NTSTATUS, PLSA_UNICODE_STRING, PLSA_OBJECT_ATTRIBUTES, ACCESS_MASK, PLSA_HANDLE) @@ -1255,6 +1340,11 @@ DnsQuery_AParams = ((1, 'pszName'), (1, 'wType'), (1, 'Options'), (1, 'pExtra'), DnsQuery_WPrototype = WINFUNCTYPE(DNS_STATUS, PCWSTR, WORD, DWORD, PVOID, POINTER(PDNS_RECORDW), POINTER(PVOID)) DnsQuery_WParams = ((1, 'pszName'), (1, 'wType'), (1, 'Options'), (1, 'pExtra'), (1, 'ppQueryResults'), (1, 'pReserved')) +#def DnsQueryEx(pQueryRequest, pQueryResults, pCancelHandle): +# return DnsQueryEx.ctypes_function(pQueryRequest, pQueryResults, pCancelHandle) +DnsQueryExPrototype = WINFUNCTYPE(DNS_STATUS, PDNS_QUERY_REQUEST, PDNS_QUERY_RESULT, PDNS_QUERY_CANCEL) +DnsQueryExParams = ((1, 'pQueryRequest'), (1, 'pQueryResults'), (1, 'pCancelHandle')) + #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) diff --git a/windows/generated_def/winstructs.py b/windows/generated_def/winstructs.py index 55117a7..98b53c6 100644 --- a/windows/generated_def/winstructs.py +++ b/windows/generated_def/winstructs.py @@ -286,6 +286,8 @@ ENUMRESTYPEPROCA = PVOID#Resources ENUMRESTYPEPROCW = PVOID#Resources LPSERVICE_MAIN_FUNCTIONA = PVOID LPSERVICE_MAIN_FUNCTIONW = PVOID +LPOVERLAPPED_COMPLETION_ROUTINE = PVOID +PDNS_QUERY_COMPLETION_ROUTINE = PVOID LPCONTEXT = PVOID HCERTSTORE = PVOID HCRYPTMSG = PVOID @@ -2335,6 +2337,62 @@ _DnsRecordW._fields_ = [ ("Data", _ANON__DNSRECORDW_SUB_UNION_2), ] +class _DnsAddr(Structure): + _fields_ = [ + ("MaxSa", CHAR * (DNS_ADDR_MAX_SOCKADDR_LENGTH)), + ("DnsAddrUserDword", DWORD * (8)), + ] +PDNS_ADDR = POINTER(_DnsAddr) +DNS_ADDR = _DnsAddr + +class _DnsAddrArray(Structure): + _fields_ = [ + ("MaxCount", DWORD), + ("AddrCount", DWORD), + ("Tag", DWORD), + ("Family", WORD), + ("WordReserved", WORD), + ("Flags", DWORD), + ("MatchFlag", DWORD), + ("Reserved1", DWORD), + ("Reserved2", DWORD), + ("AddrArray", DNS_ADDR * (ANY_SIZE)), + ] +PDNS_ADDR_ARRAY = POINTER(_DnsAddrArray) +DNS_ADDR_ARRAY = _DnsAddrArray + +class _DNS_QUERY_REQUEST(Structure): + _fields_ = [ + ("Version", ULONG), + ("QueryName", PCWSTR), + ("QueryType", WORD), + ("QueryOptions", ULONG64), + ("pDnsServerList", PDNS_ADDR_ARRAY), + ("InterfaceIndex", ULONG), + ("pQueryCompletionCallback", PDNS_QUERY_COMPLETION_ROUTINE), + ("pQueryContext", PVOID), + ] +PDNS_QUERY_REQUEST = POINTER(_DNS_QUERY_REQUEST) +DNS_QUERY_REQUEST = _DNS_QUERY_REQUEST + +class _DNS_QUERY_CANCEL(Structure): + _fields_ = [ + ("Reserved", CHAR * (32)), + ] +PDNS_QUERY_CANCEL = POINTER(_DNS_QUERY_CANCEL) +DNS_QUERY_CANCEL = _DNS_QUERY_CANCEL + +class _DNS_QUERY_RESULT(Structure): + _fields_ = [ + ("Version", ULONG), + ("QueryStatus", DNS_STATUS), + ("QueryOptions", ULONG64), + ("pQueryRecords", PVOID), + ("Reserved", PVOID), + ] +DNS_QUERY_RESULT = _DNS_QUERY_RESULT +PDNS_QUERY_RESULT = POINTER(_DNS_QUERY_RESULT) + KeyValueBasicInformation = EnumValue("_KEY_VALUE_INFORMATION_CLASS", "KeyValueBasicInformation", 0x0) KeyValueFullInformation = EnumValue("_KEY_VALUE_INFORMATION_CLASS", "KeyValueFullInformation", 0x1) KeyValuePartialInformation = EnumValue("_KEY_VALUE_INFORMATION_CLASS", "KeyValuePartialInformation", 0x2) @@ -8535,6 +8593,15 @@ class _IO_PRIORITY_HINT(EnumType): IO_PRIORITY_HINT = _IO_PRIORITY_HINT +ReadDirectoryNotifyInformation = EnumValue("_READ_DIRECTORY_NOTIFY_INFORMATION_CLASS", "ReadDirectoryNotifyInformation", 0x0) +ReadDirectoryNotifyExtendedInformation = EnumValue("_READ_DIRECTORY_NOTIFY_INFORMATION_CLASS", "ReadDirectoryNotifyExtendedInformation", 0x1) +class _READ_DIRECTORY_NOTIFY_INFORMATION_CLASS(EnumType): + values = [ReadDirectoryNotifyInformation, ReadDirectoryNotifyExtendedInformation] + mapper = FlagMapper(*values) +PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS = POINTER(_READ_DIRECTORY_NOTIFY_INFORMATION_CLASS) +READ_DIRECTORY_NOTIFY_INFORMATION_CLASS = _READ_DIRECTORY_NOTIFY_INFORMATION_CLASS + + class _FILE_INTERNAL_INFORMATION(Structure): _fields_ = [ ("IndexNumber", LARGE_INTEGER), @@ -8770,6 +8837,36 @@ PWIN32_FIND_DATAW = POINTER(_WIN32_FIND_DATAW) WIN32_FIND_DATAW = _WIN32_FIND_DATAW LPWIN32_FIND_DATAW = POINTER(_WIN32_FIND_DATAW) +class _FILE_NOTIFY_INFORMATION(Structure): + _fields_ = [ + ("NextEntryOffset", DWORD), + ("Action", DWORD), + ("FileNameLength", DWORD), + ("FileName", WCHAR * (1)), + ] +FILE_NOTIFY_INFORMATION = _FILE_NOTIFY_INFORMATION +PFILE_NOTIFY_INFORMATION = POINTER(_FILE_NOTIFY_INFORMATION) + +class _FILE_NOTIFY_EXTENDED_INFORMATION(Structure): + _fields_ = [ + ("NextEntryOffset", DWORD), + ("Action", DWORD), + ("CreationTime", LARGE_INTEGER), + ("LastModificationTime", LARGE_INTEGER), + ("LastChangeTime", LARGE_INTEGER), + ("LastAccessTime", LARGE_INTEGER), + ("AllocatedLength", LARGE_INTEGER), + ("FileSize", LARGE_INTEGER), + ("FileAttributes", DWORD), + ("ReparsePointTag", DWORD), + ("FileId", LARGE_INTEGER), + ("ParentFileId", LARGE_INTEGER), + ("FileNameLength", DWORD), + ("FileName", WCHAR * (1)), + ] +PFILE_NOTIFY_EXTENDED_INFORMATION = POINTER(_FILE_NOTIFY_EXTENDED_INFORMATION) +FILE_NOTIFY_EXTENDED_INFORMATION = _FILE_NOTIFY_EXTENDED_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 a218ce7..96914c6 100644 --- a/windows/winproxy/apis/__init__.py +++ b/windows/winproxy/apis/__init__.py @@ -19,5 +19,6 @@ from .user32 import * from .version import * from .virtdisk import * from .wevtapi import * +from .winhttp import * from .wininet import * from .wintrust import * \ No newline at end of file diff --git a/windows/winproxy/apis/dnsapi.py b/windows/winproxy/apis/dnsapi.py index ac0c0c5..92f6529 100644 --- a/windows/winproxy/apis/dnsapi.py +++ b/windows/winproxy/apis/dnsapi.py @@ -23,6 +23,10 @@ def DnsQuery_A(pszName, wType, Options, pExtra, ppQueryResults, pReserved): def DnsQuery_W(pszName, wType, Options, pExtra, ppQueryResults, pReserved): return DnsQuery_W.ctypes_function(pszName, wType, Options, pExtra, ppQueryResults, pReserved) +@DNSapiProxy(error_check=result_is_error_code) +def DnsQueryEx(pQueryRequest, pQueryResults, pCancelHandle): + return DnsQueryEx.ctypes_function(pQueryRequest, pQueryResults, pCancelHandle) + @DNSapiProxy(error_check=no_error_check) def DnsFree(pData, FreeType): return DnsFree.ctypes_function(pData, FreeType) diff --git a/windows/winproxy/apis/kernel32.py b/windows/winproxy/apis/kernel32.py index bc9e790..6c97407 100644 --- a/windows/winproxy/apis/kernel32.py +++ b/windows/winproxy/apis/kernel32.py @@ -461,7 +461,7 @@ def CreateFileA(lpFileName, dwDesiredAccess=gdef.GENERIC_READ, dwShareMode=0, lp @Kernel32Proxy(error_check=result_is_handle) def CreateFileW(lpFileName, dwDesiredAccess=gdef.GENERIC_READ, dwShareMode=0, lpSecurityAttributes=None, dwCreationDisposition=gdef.OPEN_EXISTING, dwFlagsAndAttributes=gdef.FILE_ATTRIBUTE_NORMAL, hTemplateFile=None): - return CreateFileA.ctypes_function(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile) + return CreateFileW.ctypes_function(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile) @Kernel32Proxy(error_check=result_is_handle) def CreateFileTransactedA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile, hTransaction, pusMiniVersion, pExtendedParameter): @@ -538,6 +538,36 @@ def FindNextFileW(hFindFile, lpFindFileData): def FindClose(hFindFile): return FindClose.ctypes_function(hFindFile) +@Kernel32Proxy() +def FindFirstChangeNotificationA(lpPathName, bWatchSubtree, dwNotifyFilter): + return FindFirstChangeNotificationA.ctypes_function(lpPathName, bWatchSubtree, dwNotifyFilter) + +@Kernel32Proxy() +def FindFirstChangeNotificationW(lpPathName, bWatchSubtree, dwNotifyFilter): + return FindFirstChangeNotificationW.ctypes_function(lpPathName, bWatchSubtree, dwNotifyFilter) + +@Kernel32Proxy() +def FindNextChangeNotification(hChangeHandle): + return FindNextChangeNotification.ctypes_function(hChangeHandle) + +@Kernel32Proxy() +def FindCloseChangeNotification(hChangeHandle): + return FindCloseChange + Notification.ctypes_function(hChangeHandle) + +@Kernel32Proxy() +def FindNextChangeNotification(hChangeHandle): + return FindNextChangeNotification.ctypes_function(hChangeHandle) + +@Kernel32Proxy() +def ReadDirectoryChangesW(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine): + return ReadDirectoryChangesW.ctypes_function(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine) + +@Kernel32Proxy() +def ReadDirectoryChangesExW(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine, ReadDirectoryNotifyInformationClass): + return ReadDirectoryChangesExW.ctypes_function(hDirectory, lpBuffer, nBufferLength, bWatchSubtree, dwNotifyFilter, lpBytesReturned, lpOverlapped, lpCompletionRoutine, ReadDirectoryNotifyInformationClass) + + ## Tlhelp (snapshoot) diff --git a/windows/winproxy/apis/winhttp.py b/windows/winproxy/apis/winhttp.py new file mode 100644 index 0000000..90b2eda --- /dev/null +++ b/windows/winproxy/apis/winhttp.py @@ -0,0 +1,51 @@ +import ctypes +import windows.generated_def as gdef + +from ..apiproxy import ApiProxy, NeededParameter + +from ..error import (fail_on_zero) + + +class WinHTTPProxy(ApiProxy): + APIDLL = "winhttp" + default_error_check = staticmethod(fail_on_zero) + +@WinHTTPProxy() +def WinHttpOpen(pszAgentW, dwAccessType, pszProxyW, pszProxyBypassW, dwFlags): + return WinHttpOpen.ctypes_function(pszAgentW, dwAccessType, pszProxyW, pszProxyBypassW, dwFlags) + +@WinHTTPProxy() +def WinHttpCloseHandle(hInternet): + return WinHttpCloseHandle.ctypes_function(hInternet) + +@WinHTTPProxy() +def WinHttpConnect(hSession, pswzServerName, nServerPort, dwReserved): + return WinHttpConnect.ctypes_function(hSession, pswzServerName, nServerPort, dwReserved) + +@WinHTTPProxy() +def WinHttpQueryDataAvailable(hRequest, lpdwNumberOfBytesAvailable): + return WinHttpQueryDataAvailable.ctypes_function(hRequest, lpdwNumberOfBytesAvailable) + +@WinHTTPProxy() +def WinHttpReadData(hRequest, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead): + return WinHttpReadData.ctypes_function(hRequest, lpBuffer, dwNumberOfBytesToRead, lpdwNumberOfBytesRead) + +@WinHTTPProxy() +def WinHttpOpenRequest(hConnect, pwszVerb, pwszObjectName, pwszVersion, pwszReferrer, ppwszAcceptTypes, dwFlags): + return WinHttpOpenRequest.ctypes_function(hConnect, pwszVerb, pwszObjectName, pwszVersion, pwszReferrer, ppwszAcceptTypes, dwFlags) + +@WinHTTPProxy() +def WinHttpSendRequest(hRequest, lpszHeaders, dwHeadersLength, lpOptional, dwOptionalLength, dwTotalLength, dwContext): + return WinHttpSendRequest.ctypes_function(hRequest, lpszHeaders, dwHeadersLength, lpOptional, dwOptionalLength, dwTotalLength, dwContext) + +@WinHTTPProxy() +def WinHttpReceiveResponse(hRequest, lpReserved): + return WinHttpReceiveResponse.ctypes_function(hRequest, lpReserved) + +@WinHTTPProxy() +def WinHttpAddRequestHeaders(hRequest, lpszHeaders, dwHeadersLength, dwModifiers): + return WinHttpAddRequestHeaders.ctypes_function(hRequest, lpszHeaders, dwHeadersLength, dwModifiers) + +@WinHTTPProxy() +def WinHttpQueryHeaders(hRequest, dwInfoLevel, pwszName, lpBuffer, lpdwBufferLength, lpdwIndex): + return WinHttpQueryHeaders.ctypes_function(hRequest, dwInfoLevel, pwszName, lpBuffer, lpdwBufferLength, lpdwIndex)