mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
3.3 KiB
133 lines
3.3 KiB
/**********************************************************************/
|
|
/** Microsoft Windows NT **/
|
|
/** Copyright(c) Microsoft Corp., 1995 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
smalprox.h
|
|
|
|
This module contains the small proxy common code
|
|
|
|
FILE HISTORY:
|
|
Johnl 04-Apr-1995 Created
|
|
|
|
*/
|
|
|
|
#ifndef _SMALPROX_H_
|
|
#define _SMALPROX_H_
|
|
|
|
#include <urlutil.h>
|
|
#include <dirlist.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef BOOL (*PFN_INTERNET_PROTOCOL)(
|
|
IN struct _INET_DATA_CONTEXT * pIC,
|
|
OUT VOID * pBuffer,
|
|
IN DWORD cbBuffer,
|
|
OUT DWORD * pcbWritten
|
|
);
|
|
|
|
#define INET_STATE_UNINITIALIZED 0
|
|
#define INET_STATE_OPENNED 1
|
|
#define INET_STATE_DONE 2
|
|
|
|
typedef struct _INET_DATA_CONTEXT
|
|
{
|
|
HINTERNET hServer; // InternetConnect handle
|
|
HINTERNET hRequest; // Protocol request handle
|
|
PFN_INTERNET_PROTOCOL pfnProtocol;
|
|
DWORD dwServiceType; // Protocol Type
|
|
DWORD dwState;
|
|
|
|
URL_DESCRIPTOR UrlDesc; // Various URL bits and pieces
|
|
CHAR * pszUrlData; // Allocated buffer for UrlDesc
|
|
|
|
//
|
|
// If an error occurred on open, dwLastError records the error
|
|
// so we can feed back a nice error during InternetReadFile
|
|
//
|
|
// pszErrAPI will point to the API which generated the error
|
|
//
|
|
|
|
DWORD dwLastError;
|
|
|
|
//
|
|
// When ftp or gopher return extended errors, we store the text here.
|
|
// It's inline because we're not guaranteed a CloseInternetData will
|
|
// happen after an error
|
|
//
|
|
|
|
CHAR achExtError[1024];
|
|
DWORD dwErrorTextLength;
|
|
DWORD dwErrorTextLeft;
|
|
DWORD dwErrorCategory;
|
|
|
|
#if DBG
|
|
CHAR * pszErrAPI;
|
|
#endif
|
|
|
|
} INET_DATA_CONTEXT, *LPINET_DATA_CONTEXT;
|
|
|
|
//
|
|
// Macro for conditionally setting the error API string
|
|
//
|
|
|
|
#if DBG
|
|
#define RECORD_ERROR_API( pIC, API ) (pIC)->pszErrAPI = (#API)
|
|
#else
|
|
#define RECORD_ERROR_API( pIC, API )
|
|
#endif
|
|
|
|
BOOL
|
|
OpenInternetData(
|
|
IN HINTERNET hInternet,
|
|
IN OUT CHAR * pszHttpProxyReq,
|
|
IN DWORD cbHttpProxyReq,
|
|
IN VOID * pvOptionalData,
|
|
IN DWORD cbOptionalData,
|
|
IN OUT INET_DATA_CONTEXT * pIC,
|
|
IN BOOL fCheckHeaders
|
|
);
|
|
|
|
BOOL
|
|
ReadInternetData(
|
|
IN INET_DATA_CONTEXT * pInetContext,
|
|
OUT VOID * pBuffer,
|
|
IN DWORD cbBuffer,
|
|
OUT DWORD * pcbRead
|
|
);
|
|
|
|
#if 0
|
|
BOOL
|
|
WriteInternetData(
|
|
IN INET_DATA_CONTEXT * pInetContext,
|
|
IN VOID * pBuffer,
|
|
IN DWORD cbBuffer,
|
|
OUT DWORD * pcbWritten
|
|
);
|
|
#endif
|
|
|
|
BOOL
|
|
CloseInternetData(
|
|
IN INET_DATA_CONTEXT * pInetContext
|
|
);
|
|
|
|
BOOL
|
|
FormatInternetError(
|
|
IN DWORD dwWin32Error,
|
|
IN CHAR * pszErrorAPI OPTIONAL,
|
|
OUT VOID * pBuffer,
|
|
IN DWORD cbBuffer,
|
|
OUT DWORD * pcbRead,
|
|
IN const CHAR * pszErrorMessage OPTIONAL
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //_SMALPROX_H_
|
|
|