windows-nt/Source/XPSP1/NT/inetsrv/iis/inc/smalprox.h

133 lines
3.3 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/**********************************************************************/
/** 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_