Source code of Windows XP (NT5)
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.
|
|
/********
* * Copyright (c) 1995 Microsoft Corporation * * * Module Name : globals.h * * Abstract : * * This module contains the structure definitions and prototypes for the * version 1.0 HTTP Printers Server Extension. * ******************/
//
// Notes:
// TEXT (".printer"), TEXT ("/scripts"), TEXT ("PrintersFolder") hardcoded
// ReadRegistry needs implementation
#ifndef _GLOBALS_H
#define _GLOBALS_H
// Debugging Environment (SPLLIB.LIB)
//
#define MODULE "msw3prt:"
// Define local error code
#define ERROR_DRIVER_NOT_FOUND 5500
#define ERROR_SERVER_DISK_FULL 5512
// URL strings for links
#define URL_PREFIX TEXT ("http://%s") // g_szComputerName
#define URL_PRINTER TEXT ("/printers/%s/.printer") // pPageInfo->pPrinterInfo->pShareName
#define URL_PRINTER_LINK TEXT ("/%s") // pPageInfo->pPrinterInfo->pShareName
#define URL_FOLDER TEXT ("/%s/") // g_szPrinters
#define URLS_JOBINFO TEXT ("?ShowJobInfo&%d") // dwJobID
#define URLS_JOBCONTROL TEXT ("?JobControl&%d&") // dwJobID, append P,R,C,S
//
//
#define PROCESSOR_ARCHITECTURE_UNSUPPORTED 0xFFFE
// Buffer size for HTML format buffer and size to flush after
#define BUFSIZE 2047
#define FLUSHSIZE 1792
#define STRBUFSIZE 256 // For string resources and our path
#define MAX_Q_ARG 32 // Maximum number of query arguments
// This contains all relevant info for this specific connection
typedef struct {
//
// Group the structure fields in 4*DWORD groups so it can be easily found in the debugger dump.
//
// Transient info that is regenerated each session
EXTENSION_CONTROL_BLOCK *pECB; // Struct from ISAPI interface
LPTSTR lpszMethod; // Unicode correspondece of the data member in pECB
LPTSTR lpszQueryString; LPTSTR lpszPathInfo;
LPTSTR lpszPathTranslated;
UINT iQueryCommand; // CMD_something
int iNumQueryArgs; // Yep, number of query arguments
BOOL fQueryArgIsNum[MAX_Q_ARG]; // TRUE if arg is a number
UINT_PTR QueryArgValue[MAX_Q_ARG]; // number or pointer to string
DWORD dwError; // Error message ID set in action tags
TCHAR szStringBuf[STRBUFSIZE]; // For string resources
} ALLINFO, *PALLINFO;
// Contains information opened for the printer page, if any.
typedef struct { LPTSTR pszFriendlyName; // Friendly name from Windows (!JobData && !JobClose)
PPRINTER_INFO_2 pPrinterInfo; // NULL if JobData or JobClose
HANDLE hPrinter; // NULL if JobData or JobClose
} PRINTERPAGEINFO, *PPRINTERPAGEINFO;
// Query string command identifiers
enum { CMD_Invalid, CMD_IPP, CMD_Install, CMD_CreateExe, CMD_WebUI };
// Supported Architectures ids.
typedef enum _ARCHITECTURE { ARCHITECTURE_X86, ARCHITECTURE_ALPHA } ARCHITECTURE;
// Relates status values to status strings (job or printer status)
typedef struct { DWORD dwStatus; // Status code (ie, PRINTER_STATUS_PAUSED)
UINT iShortStringID; // Short string (ie, TEXT ("Paused"))
UINT iLongStringID; // Long string(ie, TEXT ("The printer is paused."))
} STAT_STRING_MAP, *PSTAT_STRING_MAP;
// Structure to relate query string command to command ID
typedef struct { LPTSTR pszCommand; UINT iCommandID; } QUERY_MAP, *PQUERY_MAP;
// Inline functions and macros
#define ARRAY_COUNT(x) (sizeof(x) / sizeof(x[0]))
//
// utils
//
BOOL FreeStr( LPCTSTR ); LPTSTR AllocStr( LPCTSTR );
// from Spool.CPP
DWORD SplIppJob(WORD wReq, PALLINFO pAllInfo, PPRINTERPAGEINFO pPageInfo);
// Variables in globals.cpp
extern CRITICAL_SECTION SplCritSect; extern CRITICAL_SECTION TagCritSect;
extern const QUERY_MAP rgQueryMap[]; extern const int iNumQueryMap; //extern TCHAR g_szComputerName[INTERNET_MAX_HOST_NAME_LENGTH + 1];
extern TCHAR g_szHttpServerName[INTERNET_MAX_HOST_NAME_LENGTH + 1]; extern TCHAR g_szPrintServerName[INTERNET_MAX_HOST_NAME_LENGTH + 1];
extern HINSTANCE g_hInstance; extern LPTSTR g_szPrintersFolder; extern LPTSTR g_szPrinters; extern LPTSTR g_szRemotePortAdmin;
#endif
|