windows-nt/Source/XPSP1/NT/printscan/print/spooler/inetpp2/server/splpjm.h

182 lines
3.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*****************************************************************************\
* MODULE: splpjm.h
*
* Header file for the job-mapping list.
*
*
* Copyright (C) 1996-1997 Microsoft Corporation
* Copyright (C) 1996-1997 Hewlett Packard
*
* History:
* 13-Jan-1997 HWP-Guys Created.
*
\*****************************************************************************/
#ifndef _SPLPJM_H
#define _SPLPJM_H
// Constants.
//
#define PJM_LOCALID 0 // pjmFind().
#define PJM_REMOTEID 1 // pjmFind().
#define PJM_SPOOLING 0x00000001
#define PJM_CANCEL 0x00000002
#define PJM_PAUSE 0x00000004
#define PJM_NOOPEN 0x00000008
#define PJM_ASYNCON 0x00000010
class CFileStream;
typedef class CInetMonPort* PCINETMONPORT;
// JobMap Structure. This is used to track local/remote job-ids during
// the life of a print-job. This is necessary with our IPP printing model
// since we would otherwise lose the remote job Id at enddoc time.
//
typedef struct _JOBMAP {
struct _JOBMAP FAR *pNext;
PCINETMONPORT pIniPort;
DWORD dwState;
DWORD idJobLocal;
DWORD idJobRemote;
LPTSTR lpszUri;
LPTSTR lpszUser;
LPTSTR lpszDocName;
DWORD dwLocalJobSize;
SYSTEMTIME SubmitTime;
DWORD dwStatus;
HANDLE hSplFile;
BOOL bRemoteJob;
} JOBMAP;
typedef JOBMAP *PJOBMAP;
typedef JOBMAP *NPJOBMAP;
typedef JOBMAP *LPJOBMAP;
typedef struct _PPJOB_ENUM {
DWORD cItems;
DWORD cbSize;
IPPJI2 ji2[1];
} PPJOB_ENUM;
typedef PPJOB_ENUM *PPPJOB_ENUM;
typedef PPJOB_ENUM *NPPPJOB_ENUM;
typedef PPJOB_ENUM *LPPPJOB_ENUM;
// JobMap Routines.
//
PJOBMAP pjmAdd(
PJOBMAP* pjmList,
PCINETMONPORT pIniPort,
LPCTSTR lpszUser,
LPCTSTR lpszDocName);
VOID pjmCleanRemoteFlag(
PJOBMAP* pjmList);
PJOBMAP pjmFind(
PJOBMAP* pjmList,
DWORD fType,
DWORD idJob);
DWORD pjmGetLocalJobCount(
PJOBMAP* pjmList,
DWORD* pcbItems);
PJOBMAP pjmNextLocalJob(
PJOBMAP* pjmList,
PJOB_INFO_2 pJobInfo2,
PBOOL pbFound);
VOID pjmDel(
PJOBMAP *pjmList,
PJOBMAP pjm);
VOID pjmDelList(
PJOBMAP pjmList);
CFileStream* pjmSplLock(
PJOBMAP pjm);
BOOL pjmSplUnlock(
PJOBMAP pjm);
BOOL pjmSplWrite(
PJOBMAP pjm,
LPVOID lpMem,
DWORD cbMem,
LPDWORD lpcbWr);
BOOL pjmSetState(
PJOBMAP pjm,
DWORD dwState);
VOID pjmClrState(
PJOBMAP pjm,
DWORD dwState);
VOID pjmSetJobRemote(
PJOBMAP pjm,
DWORD idJobRemote,
LPCTSTR lpszUri);
VOID pjmAddJobSize(
PJOBMAP pjm,
DWORD dwSize);
VOID pjmRemoveOldEntries(
PJOBMAP *pjmList);
VOID pjmUpdateLocalJobStatus(
PJOBMAP pjm,
DWORD dwStatus);
/*****************************************************************************\
* pjmJobId
*
\*****************************************************************************/
_inline DWORD pjmJobId(
PJOBMAP pjm,
DWORD fType)
{
return (pjm ? ((fType == PJM_REMOTEID) ? pjm->idJobRemote : pjm->idJobLocal) : 0);
}
/*****************************************************************************\
* pjmSplFile
*
\*****************************************************************************/
_inline LPCTSTR pjmSplFile(
PJOBMAP pjm)
{
return (pjm ? SplFileName(pjm->hSplFile) : NULL);
}
/*****************************************************************************\
* pjmSplUser
*
\*****************************************************************************/
_inline LPCTSTR pjmSplUser(
PJOBMAP pjm)
{
return (pjm ? pjm->lpszUser : NULL);
}
/*****************************************************************************\
* pjmChkState
*
\*****************************************************************************/
_inline BOOL pjmChkState(
PJOBMAP pjm,
DWORD dwState)
{
return (pjm ? (pjm->dwState & dwState) : FALSE);
}
#endif