/*****************************************************************************\ * MODULE: inetpp.h * * Header file for the INETPP provider routines. * * * Copyright (C) 1996-1997 Microsoft Corporation * Copyright (C) 1996-1997 Hewlett Packard * * History: * 07-Oct-1996 HWP-Guys Initiated port from win95 to winNT * \*****************************************************************************/ #ifndef _INETPP_H #define _INETPP_H // Buffer sizes/Constants. // #define MAX_INET_BUFFER 256 #define MIN_DISK_SPACE 8192 #define MAX_IPP_BUFFER 1024 #define MAX_INET_RETRY 3 // 3 times for internet-connect. // Error return codes for Request-Auth-Sends. // #define RET_SUCESS 0 #define RET_FAILURE 1 // Return value for the customized authentication dialog // #define AUTHDLG_OK 1 #define AUTHDLG_CANCEL 2 #define AUTHDLG_TIMEOUT 3 #define AUTHDLG_ERROR 4 // Flags. // #define INETPP_REQ_FLAGS (INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RELOAD) // Offsets into structure. Used for the PORT_INFO fields in obtaining // port-information. // #ifdef offsetof #undef offsetof #endif #define offsetof(type, identifier) ((DWORD)(UINT_PTR)(&(((type)0)->identifier))) // Function types for the HTTP calls in WININET.DLL. // typedef BOOL (WINAPI *PFNHTTPQUERYINFO) (HINTERNET, DWORD, LPVOID, LPDWORD, LPDWORD); typedef HINTERNET (WINAPI *PFNINTERNETOPENURL) (HINTERNET, LPCTSTR, LPCTSTR, DWORD, DWORD, DWORD_PTR); typedef DWORD (WINAPI *PFNINTERNETERRORDLG) (HWND, HINTERNET, DWORD, DWORD, LPVOID); typedef BOOL (WINAPI *PFNHTTPSENDREQUEST) (HINTERNET, LPCTSTR, DWORD, LPVOID, DWORD); #ifdef UNIMPLEMENTED typedef BOOL (WINAPI *PFNHTTPSENDREQUESTEX) (HINTERNET, LPINTERNET_BUFFERS, LPINTERNET_BUFFERS, DWORD, DWORD_PTR); #else typedef BOOL (WINAPI *PFNHTTPSENDREQUESTEX) (HINTERNET, LPINTERNET_BUFFERSA, LPINTERNET_BUFFERS, DWORD, DWORD_PTR); #endif typedef BOOL (WINAPI *PFNINTERNETREADFILE) (HINTERNET, LPVOID, DWORD, LPDWORD); typedef BOOL (WINAPI *PFNINTERNETWRITEFILE) (HINTERNET, LPCVOID, DWORD, LPDWORD); typedef BOOL (WINAPI *PFNINTERNETCLOSEHANDLE) (HINTERNET); typedef HINTERNET (WINAPI *PFNINTERNETOPEN) (LPCTSTR, DWORD, LPCTSTR, LPCTSTR, DWORD); typedef HINTERNET (WINAPI *PFNINTERNETCONNECT) (HINTERNET, LPCTSTR, INTERNET_PORT, LPCTSTR, LPCTSTR, DWORD, DWORD, DWORD_PTR); typedef HINTERNET (WINAPI *PFNHTTPOPENREQUEST) (HINTERNET, LPCTSTR, LPCTSTR, LPCTSTR, LPCTSTR, LPCTSTR *, DWORD, DWORD_PTR); typedef BOOL (WINAPI *PFNHTTPADDREQUESTHEADERS) (HINTERNET, LPCTSTR, DWORD, DWORD); typedef BOOL (WINAPI *PFNHTTPENDREQUEST) (HINTERNET, LPINTERNET_BUFFERS, DWORD, DWORD_PTR); typedef BOOL (WINAPI *PFNINTERNETSETOPTION) (HINTERNET, DWORD, LPVOID, DWORD); // InetmonSendReq Response callback. // typedef BOOL (CALLBACK *IPPRSPPROC)(CAnyConnection *pConnection, HINTERNET hReq, PCINETMONPORT pIniPort, LPARAM lParam); class CInetMon { public: CInetMon (); ~CInetMon (); inline BOOL bValid (VOID) CONST { return m_bValid; } BOOL InetmonSendReq( HANDLE hPort, LPBYTE lpIpp, DWORD cbIpp, IPPRSPPROC pfnRsp, LPARAM lParam, BOOL bLeaveCrit); PCINETMONPORT InetmonOpenPort( LPCTSTR lpszPortName, PBOOL pbXcv); BOOL InetmonReleasePort( PCINETMONPORT pIniPort); BOOL InetmonClosePort( PCINETMONPORT hPort, HANDLE hPrinter); BOOL InetmonEnumPorts( LPTSTR lpszServerName, DWORD dwLevel, LPBYTE pPorts, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); BOOL InetmonDeletePort( LPCTSTR lpszPortName, HWND hWnd, LPCTSTR lpszMonitorName); BOOL InetmonAddPort( LPCTSTR lpszPortName, LPCTSTR lpszMonitorName); PCINETMONPORT InetmonFindPort( LPCTSTR lpszPortName); private: // Port-List Structure. This defines the global-header for the // print-provider port-list. // typedef struct _INIMONPORTLIST { HINTERNET hSession; // Handle for session connection. int cRef; // Count of hSession opens. PCINETMONPORT pIniFirstPort; // List of port-entries. } INIMONPORTLIST; typedef INIMONPORTLIST *PINIMONPORTLIST; inline BOOL _inet_validate_portname( LPCTSTR lpszPortName); PCINETMONPORT _inet_find_port( LPCTSTR lpszPortName); PCINETMONPORT _inet_create_port( LPCTSTR lpszPortName, PCPORTMGR pPortMgr); BOOL _inet_delete_port( LPCTSTR lpszPortName); DWORD _inet_size_entry( PCINETMONPORT pIniPort, DWORD dwLevel); LPBYTE _inet_copy_entry( PCINETMONPORT pIniPort, DWORD dwLevel, LPBYTE pPortInfo, LPBYTE pEnd); BOOL _inet_is_xcv_open ( LPCTSTR lpszPortName, LPTSTR *ppszServerName, LPTSTR *ppszRealPortName, LPBOOL pbXcv); BOOL m_bValid; PINIMONPORTLIST m_pPortList; }; typedef class CInetMon* PCINETMON; #endif