forked from EgeBalci/Zeus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwininet.h
203 lines (157 loc) · 7.02 KB
/
wininet.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#pragma once
/*
Èíñòðóìåíòû äëÿ ðàáîòû ñ Wininet.
*/
//The maximum amount of data allocated for skachvanie in memory.
#define WININET_MAXBYTES_TO_MEM (10 * 1024 * 1024)
#include "mem.h"
namespace Wininet
{
//Structure for CallURL.
typedef struct
{
bool bAutoProxy; //Make attempts to connect with WICF_USE_IE_PROXY, then without it, for each attempt.
BYTE bTryCount; //The number of attempts, at a minimum should be 1.
DWORD dwRetryDelay; //Delay Mezhuyev connections.
HANDLE hStopEvent; //Signal priryvaniya.
LPSTR pstrUserAgent; //UserAgent.
LPSTR pstrURL; //URL.
DWORD Connect_dwFlags; //Flags WICF_ *.
LPSTR SendRequest_pstrReferer; //Referel
void *SendRequest_pPostData; //Post-data.
DWORD SendRequest_dwPostDataSize; //The size of the settlement data.
DWORD SendRequest_dwFlags; //Flags WISRF_ *.
DWORD DownloadData_dwSizeLimit; //Limit on downloaded data.
LPWSTR DownloadData_pstrFileName; //If not NULL, then the downloading of data occurs in this file.
}CALLURLDATA;
//Flags for _Connect.
enum
{
WICF_USE_IE_PROXY = 0x1 //Whether to use when connecting from the proxy settings IE.
};
//Flags for SendRequest.
enum
{
WISRF_METHOD_GET = 0x0, //Use the method GET. (DEFAULT)
WISRF_METHOD_POST = 0x1, //Use the method POST.
WISRF_KEEP_CONNECTION = 0x2, //Maintain the connection after vypoleneniya request. This option is not
//guarantees the preservation of the connection, it depends on the server.
WISRF_IS_HTTPS = 0x4 //This query is performed over HTTPS protocol.
};
/*
Èíèöèàëèçàöèÿ.
*/
void Init(void);
/*
Äåèíèöèàëèçàöèÿ.
*/
void Uninit(void);
/*
Ïîäêëþ÷åíèå ê ñåðâåðó ïî HTTP/HTTPS ïðîòîêîëó.
IN pstrUserAgent - User-Agent, åñëè NULL, òî èñïîëüçóþåòñÿ çíà÷åíèå ïî óìîë÷àíèþ.
IN pstrHost - àäðåñ ñåðâåðà, IP èëè äîìåí.
IN wPort - ïîðò ñåðâåðà.
IN dwFlags - ôëàãè WICF_*.
Return - õýíäë ñîåäèíåíèÿ èëè NULL.
*/
HINTERNET _Connect(LPSTR pstrUserAgent, LPSTR pstrHost, WORD wPort, DWORD dwFlags);
/*
Çàêðûòèå ñîåäèíåíèÿ, îòêðûòîãî ïðè ïîìîùè _Connect.
IN hConnect - õýíäë ñîåäèíåíèÿ.
*/
void _CloseConnection(HINTERNET hConnect);
/*
Çàêðûòèå õýíäëà, è âñåõ åãî ðîäèòåëåé.
IN OUT handle - õýíäë.
*/
void _closeWithParents(HINTERNET handle);
/*
Âûçîâ InternetStatusCallback.
... - ñîãëàñíî InternetStatusCallback.
Return - true - ôóíêöèÿ âûçâàíà,
false - ôóíêöèÿ íå âûçâàíà.
*/
bool callCallback(HINTERNET handle, DWORD_PTR context, DWORD internetStatus, LPVOID statusInformation, DWORD statusInformationLength);
/*
Îòïðàâêà çàïðîñà.
IN hConnect - õýíäë ñîåäèíåíèÿ.
IN pstrURI - çàïðàøàâàåìûé îáúåêò.
IN pstrReferer - ðåôåðåë èëè NULL.
IN pPostData - ïîñò äàííûå èëè NULL.
IN dwPostDataSize - ðàçìåð pPostData.
IN dwFlags - Flags WISRF_ *.
Return - â ñëó÷àè óñïåõà õýíëî ïîëó÷åíûé îò HttpOpenRequest, èëè NULL â ñëó÷àè îøèáêè.
*/
HINTERNET _SendRequest(HINTERNET hConnect, LPSTR pstrURI, LPSTR pstrReferer, void *pPostData, DWORD dwPostDataSize, DWORD dwFlags);
/*
Ñêà÷èâàíèå äàííûõ.
IN hRequest - õýíäë çàïðîñà.
OUT pBuf - áóôôåð äëÿ äàííûõ, ïîñëå èñïîëüçîâàíèå íåîáõîäèìî óäàëèòü ÷åðåç Mem. Ìîæåò
áûòü NULL.
IN dwSizeLimit - ëèìèò ñêà÷èâàåìûõ áàéò, åñëè ðàâíî 0 èëè áîëüøå WININET_MAXBYTES_TO_MEM, òî
dwSizeLimit = WININET_MAXBYTES_TO_MEM;
IN hStopEvent - õýíäë ñîáûòèÿ äëÿ ïðåðûâàíèÿ ñêà÷èâàíèÿ èëè NULL.
Return - true - â ñëó÷àè óñïåõà,
false - â ñëó÷àè îøèáêè, â òîì ÷èñëå ñðàáàòûâàåíèè hStopEvent è ïðèâûøåíèÿ
dwSizeLimit. Åñëè âîçíèêëà îøèáêà, òî ñîåäèíåíèå íåîáõîäèìî çàêðûòü.
*/
bool _DownloadData(HINTERNET hRequest, MEMDATA *pBuf, DWORD dwSizeLimit, HANDLE hStopEvent);
/*
Ñêà÷èâàíèå äàííûõ â ôàéë.
IN hRequest - õýíäë çàïðîñà.
IN pstrFileName - èìÿ ôàéëà, â êîòîðûé áóäóò ñîõðàíåíû äàííûå.
IN dwSizeLimit - ëèìèò ñêà÷èâàåìûõ áàéò, åñëè ðàâíî 0, òî îãðàíè÷åíèÿ íåò.
IN hStopEvent - õýíäë ñîáûòèÿ äëÿ ïðåðûâàíèÿ ñêà÷èâàíèÿ èëè NULL.
Return - true - â ñëó÷àè óñïåõà,
false - â ñëó÷àè îøèáêè, â òîì ÷èñëå ñðàáàòûâàåíèè hStopEvent èëè ïðèâûøåíèÿ
dwSizeLimit. Åñëè âîçíèêëà îøèáêà, òî ñîåäèíåíèå íåîáõîäèìî çàêðûòü.
*/
bool _DownloadDataToFile(HINTERNET hRequest, LPWSTR pstrFileName, DWORD dwSizeLimit, HANDLE hStopEvent);
/*
Îáîëî÷êà äëÿ _Connect + _SendRequest + _DownloadData(ToFile).
IN pcud - ïàðàìåòðû URL;
OUT pBuf - áóôôåð äëÿ äàííûõ, ïîñëå èñïîëüçîâàíèå íåîáõîäèìî óäàëèòü ÷åðåç Mem. Ìîæåò áûòü NULL.
Ïðè pcud->DownloadData_pstrFileName != NULL íå èìååò ñìûñëà.
Return - true - â ñëó÷àè óñïåõà,
false - â ñëó÷àè îøèáêè.
*/
bool _CallURL(CALLURLDATA *pcud, MEMDATA *pBuf);
/*
Ïîëó÷åíèå User-Agent îò Internet Explorer.
Return - User-Agent, èëè NULL â ñëó÷àè îèøáêè. Ïàìÿòü äîëæíà áûòü îñâîáîæäåíà ÷åðåç Mem.
*/
LPSTR _GetIEUserAgent(void);
/*
Òåñò ñîêðîñòè çàãðóçêè URL.
IN url - URL.
IN stopEvent - ñîáûòèå îñòàíîâêè èëè NULL.
Return - çàòðà÷åíîå âðåìÿ â ms, èëè 0 - â ñëó÷àè îøèáêè.
*/
DWORD _testDownloadDelay(LPSTR url, HANDLE stopEvent);
/*
Íàñòðîéêà íàä InternetQueryOptionA ñ àâòîâûëåäåíèåì ïàìÿòè.
IN internet - õýíäë.
IN option - îïöèÿ.
OUT lenght - ðàçìåð äàííûõ. Åñëè ýòî ñòðîêà, ðàçìåð áóäåò âîçðàøåí áåç íóëåîâîãî ñèìâîëà.
Return - äàííûå (íóæíî îñâîáîäèòü ÷åðåç Mem), åñëè ýòî ñòðîêà, òî îí áóäåò ñ îêîí÷àíèåì íà
íóëåâîé ñèìâîë. Èëè NULL â ñëó÷àè îøèáêè.
*/
void *_queryOptionExA(HINTERNET internet, DWORD option, LPDWORD lenght);
/*
Íàñòðîéêà íàä InternetQueryOptionW ñ àâòîâûëåäåíèåì ïàìÿòè.
IN internet - õýíäë.
IN option - îïöèÿ.
OUT lenght - ðàçìåð äàííûõ â ÁÀÉÒÀÕ. Åñëè ýòî ñòðîêà, ðàçìåð áóäåò âîçðàøåí áåç íóëåîâîãî ñèìâîëà.
Return - äàííûå (íóæíî îñâîáîäèòü ÷åðåç Mem), åñëè ýòî ñòðîêà, òî îí áóäåò ñ îêîí÷àíèåì íà
íóëåâîé ñèìâîë. Èëè NULL â ñëó÷àè îøèáêè.
*/
void *_queryOptionExW(HINTERNET internet, DWORD option, LPDWORD lenght);
/*Â Â Â Â Customize over HttpQueryInfoA with avtovyledeniem memory.
    IN internet - the handle.
    IN infoLevel - flags indicating data to get.
    OUT lenght - the size of a string without the null character.
    Return - string ending in a null character (must be freed by Mem),
                  or NULL in case of error.
  */
LPSTR _queryInfoExA(HINTERNET request, DWORD infoLevel, LPDWORD lenght, LPDWORD index);
};