Leaked source code of windows server 2003
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.
 
 
 
 
 
 

198 lines
4.3 KiB

/*****************************************************************************\
* MODULE: webpnp.h
*
* This is the header module for webpnp.c. This contains the routines
* necessary for processing .BIN files.
*
*
* Copyright (C) 1996-1997 Microsoft Corporation
* Copyright (C) 1996-1997 Hewlett Packard
*
* history:
* 25-Feb-1997 <chriswil> created.
*
\*****************************************************************************/
#ifndef _WEBPNP_H
#define _WEBPNP_H
#ifndef _WINSPOOL_
#include <winspool.h>
#endif
/*-----------------------------------*\
| webMakeOSInfo
|
| Returns OSInfo from parameters.
|
\*-----------------------------------*/
_inline DWORD webMakeOSInfo(
BYTE bArch,
BYTE bPlatform,
BYTE bMajVer,
BYTE bMinVer)
{
return (DWORD)MAKELONG(MAKEWORD(bArch, bPlatform), MAKEWORD(bMinVer, bMajVer));
}
/*-----------------------------------*\
| webCreateOSInfo
|
| Builds an OS Info DWORD.
|
\*-----------------------------------*/
_inline DWORD webCreateOSInfo(VOID)
{
SYSTEM_INFO si;
OSVERSIONINFO os;
BYTE bMaj;
BYTE bMin;
BYTE bArch;
BYTE bPlat;
//
// Retrieve the OS version and architecture
// information.
//
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetSystemInfo(&si);
GetVersionEx(&os);
//
// Build our client-info return values.
//
bMaj = (BYTE)(LOWORD(os.dwMajorVersion));
bMin = (BYTE)(LOWORD(os.dwMinorVersion));
bPlat = (BYTE)(LOWORD(os.dwPlatformId));
bArch = (BYTE)(LOBYTE(si.wProcessorArchitecture));
return webMakeOSInfo(bArch, bPlat, bMaj, bMin);
}
/*-----------------------------------*\
| webGetOSArch
|
| Returns architecture of os-info.
|
\*-----------------------------------*/
_inline WORD webGetOSArch(
DWORD dwInfo)
{
return (WORD)LOBYTE(LOWORD(dwInfo));
}
/*-----------------------------------*\
| webGetOSPlatform
|
| Returns platform of os-info.
|
\*-----------------------------------*/
_inline DWORD webGetOSPlatform(
DWORD dwInfo)
{
return (DWORD)HIBYTE(LOWORD(dwInfo));
}
/*-----------------------------------*\
| webGetOSMajorVer
|
| Returns major version of os-info.
|
\*-----------------------------------*/
_inline DWORD webGetOSMajorVer(
DWORD dwInfo)
{
return (DWORD)(HIBYTE(HIWORD(dwInfo)));
}
/*-----------------------------------*\
| webGetOSMinorVer
|
| Returns minor version of os-info.
|
\*-----------------------------------*/
_inline DWORD webGetOSMinorVer(
DWORD dwInfo)
{
return (DWORD)(LOBYTE(HIWORD(dwInfo)));
}
#ifdef __cplusplus // Place this here to prevent decorating of symbols
extern "C" { // when doing C++ stuff.
#endif //
//
// WEB_FILEMAP
//
typedef struct _WEB_FILEMAP {
HANDLE hFile;
HANDLE hMap;
} WEB_FILEMAP;
typedef WEB_FILEMAP *PWEB_FILEMAP;
typedef WEB_FILEMAP NEAR *NPWEB_FILEMAP;
typedef WEB_FILEMAP FAR *LPWEB_FILEMAP;
//
// Device-Bin Header Structure.
//
typedef struct _DEVBIN_HEAD {
BOOL bDevMode;
DWORD cItems;
} DEVBIN_HEAD;
typedef DEVBIN_HEAD *PDEVBIN_HEAD;
typedef DEVBIN_HEAD NEAR *NPDEVBIN_HEAD;
typedef DEVBIN_HEAD FAR *LPDEVBIN_HEAD;
//
// Device-Bin Structure.
//
typedef struct _DEVBIN_INFO {
DWORD cbSize;
DWORD dwType;
DWORD pKey;
DWORD pValue;
DWORD pData;
DWORD cbData;
} DEVBIN_INFO;
typedef DEVBIN_INFO *PDEVBIN_INFO;
typedef DEVBIN_INFO NEAR *NPDEVBIN_INFO;
typedef DEVBIN_INFO FAR *LPDEVBIN_INFO;
//
// BIN-Routines.
//
#define WEB_ENUM_KEY 0
#define WEB_ENUM_ICM 1
typedef BOOL (CALLBACK* WEBENUMKEYPROC)(LPCTSTR, LPVOID);
typedef BOOL (CALLBACK* WEBENUMICMPROC)(LPCTSTR, LPCTSTR, LPVOID);
typedef BOOL (CALLBACK* WEBGENCOPYFILEPATHPROC)(LPCWSTR, LPCWSTR, LPBYTE, DWORD, LPWSTR, LPDWORD, LPWSTR, LPDWORD, DWORD);
BOOL webWritePrinterInfo(HANDLE, LPCTSTR);
BOOL webReadPrinterInfo(HANDLE, LPCTSTR, LPCTSTR);
BOOL webEnumPrinterInfo(HANDLE, DWORD, DWORD, FARPROC, LPVOID);
//
// SplLib Exports.
//
BOOL WebPnpEntry(LPCTSTR);
BOOL WebPnpPostEntry(BOOL, LPCTSTR, LPCTSTR, LPCTSTR);
#ifdef __cplusplus // Place this here to prevent decorating of symbols
} // when doing C++ stuff.
#endif //
#endif