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.
 
 
 
 
 
 

377 lines
6.6 KiB

/*++
Copyright (c) 1990-2003 Microsoft Corporation
All rights reserved
Module Name:
localmon.h
// @@BEGIN_DDKSPLIT
Abstract:
Author:
Environment:
User Mode -Win32
Revision History:
// @@END_DDKSPLIT
--*/
// @@BEGIN_DDKSPLIT
#ifdef INTERNAL
#include "splcom.h"
#else
// @@END_DDKSPLIT
LPWSTR AllocSplStr(LPWSTR pStr);
LPVOID AllocSplMem(DWORD cbAlloc);
#define FreeSplMem( pMem ) (GlobalFree( pMem ) ? FALSE:TRUE)
#define FreeSplStr( lpStr ) ((lpStr) ? (GlobalFree(lpStr) ? FALSE:TRUE):TRUE)
#define COUNTOF(x) (sizeof(x)/sizeof *(x))
/* DEBUGGING:
*/
#define DBG_NONE 0x0000
#define DBG_INFO 0x0001
#define DBG_WARN 0x0002
#define DBG_WARNING 0x0002
#define DBG_ERROR 0x0004
#define DBG_TRACE 0x0008
#define DBG_SECURITY 0x0010
#define DBG_EXEC 0x0020
#define DBG_PORT 0x0040
#define DBG_NOTIFY 0x0080
#define DBG_PAUSE 0x0100
#define DBG_ASSERT 0x0200
#define DBG_THREADM 0x0400
#define DBG_MIN 0x0800
#define DBG_TIME 0x1000
#define DBG_FOLDER 0x2000
#define DBG_NOHEAD 0x8000
#if DBG
ULONG
DbgPrint(
PCH Format,
...
);
VOID
DbgBreakPoint(
VOID
);
#define GLOBAL_DEBUG_FLAGS LocalMonDebug
extern DWORD GLOBAL_DEBUG_FLAGS;
/* These flags are not used as arguments to the LcmDBGMSG macro.
* You have to set the high word of the global variable to cause it to break.
* It is ignored if used with LcmDBGMSG.
* (Here mainly for explanatory purposes.)
*/
#define DBG_BREAK_ON_WARNING ( DBG_WARNING << 16 )
#define DBG_BREAK_ON_ERROR ( DBG_ERROR << 16 )
/* Double braces are needed for this one, e.g.:
*
* LcmDBGMSG( DBG_ERROR, ( "Error code %d", Error ) );
*
* This is because we can't use variable parameter lists in macros.
* The statement gets pre-processed to a semi-colon in non-debug mode.
*
* Set the global variable GLOBAL_DEBUG_FLAGS via the debugger.
* Setting the flag in the low word causes that level to be printed;
* setting the high word causes a break into the debugger.
* E.g. setting it to 0x00040006 will print out all warning and error
* messages, and break on errors.
*/
#define LcmDBGMSG( Level, MsgAndArgs ) \
{ \
if( ( Level & 0xFFFF ) & GLOBAL_DEBUG_FLAGS ) \
DbgPrint MsgAndArgs; \
if( ( Level << 16 ) & GLOBAL_DEBUG_FLAGS ) \
DbgBreakPoint(); \
}
#else
#define LcmDBGMSG
#endif
// @@BEGIN_DDKSPLIT
#endif
// @@END_DDKSPLIT
BOOL
PortExists(
LPWSTR pName,
LPWSTR pPortName,
PDWORD pError
);
BOOL
PortIsValid(
LPWSTR pPortName
);
extern HANDLE LcmhInst;
extern CRITICAL_SECTION LcmSpoolerSection;
extern DWORD LcmPortInfo1Strings[];
extern DWORD LcmPortInfo2Strings[];
extern PINIPORT pIniFirstPort;
extern PINIXCVPORT pIniFirstXcvPort;
extern WCHAR szNULL[];
extern WCHAR szPorts[];
extern WCHAR szWindows[];
extern WCHAR szINIKey_TransmissionRetryTimeout[];
extern WCHAR szLcmDeviceNameHeader[];
extern WCHAR szFILE[];
extern WCHAR szLcmCOM[];
extern WCHAR szLcmLPT[];
extern WCHAR szIRDA[];
#define MSG_ERROR MB_OK | MB_ICONSTOP
#define MSG_WARNING MB_OK | MB_ICONEXCLAMATION
#define MSG_YESNO MB_YESNO | MB_ICONQUESTION
#define MSG_INFORMATION MB_OK | MB_ICONINFORMATION
#define MSG_CONFIRMATION MB_OKCANCEL | MB_ICONEXCLAMATION
#define TIMEOUT_MIN 1
#define TIMEOUT_MAX 999999
#define TIMEOUT_STRING_MAX 6
#define WITHINRANGE( val, lo, hi ) \
( ( val <= hi ) && ( val >= lo ) )
#define IS_FILE_PORT(pName) \
!_wcsicmp( pName, szFILE )
#define IS_IRDA_PORT(pName) \
!_wcsicmp( pName, szIRDA )
#define IS_COM_PORT(pName) \
IsCOMPort( pName )
#define IS_LPT_PORT(pName) \
IsLPTPort( pName )
BOOL
IsCOMPort(
LPWSTR pPort
);
BOOL
IsLPTPort(
LPWSTR pPort
);
VOID
LcmEnterSplSem(
VOID
);
VOID
LcmLeaveSplSem(
VOID
);
VOID
LcmSplOutSem(
VOID
);
PINIENTRY
LcmFindName(
PINIENTRY pIniKey,
LPWSTR pName
);
PINIENTRY
LcmFindIniKey(
PINIENTRY pIniEntry,
LPWSTR lpName
);
LPBYTE
PackStrings(
LPWSTR *pSource,
LPBYTE pDest,
DWORD *DestOffsets,
LPBYTE pEnd
);
INT
LcmMessage(
HWND hwnd,
DWORD Type,
INT CaptionID,
INT TextID,
...
);
DWORD
ReportError(
HWND hwndParent,
DWORD idTitle,
DWORD idDefaultError
);
VOID
LcmRemoveColon(
LPWSTR pName
);
PINIPORT
LcmCreatePortEntry(
PINILOCALMON pIniLocalMon,
LPWSTR pPortName
);
BOOL
LcmDeletePortEntry(
PINILOCALMON pIniLocalMon,
LPWSTR pPortName
);
PINIXCVPORT
CreateXcvPortEntry(
PINILOCALMON pIniLocalMon,
LPCWSTR pszName,
ACCESS_MASK GrantedAccess
);
BOOL
DeleteXcvPortEntry(
PINIXCVPORT pIniXcvPort
);
BOOL
GetIniCommValues(
LPWSTR pName,
LPDCB pdcb,
LPCOMMTIMEOUTS pcto
);
BOOL
LocalAddPortEx(
LPWSTR pName,
DWORD Level,
LPBYTE pBuffer,
LPWSTR pMonitorName
);
BOOL
MakeLink(
LPWSTR pOldDosDeviceName,
LPWSTR pNewDosDeviceName,
LPWSTR *ppOldNtDeviceName,
LPWSTR pNewNtDeviceName,
SECURITY_DESCRIPTOR *pSecurityDescriptor
);
BOOL
RemoveLink(
LPWSTR pOldDosDeviceName,
LPWSTR pNewDosDeviceName,
LPWSTR *ppOldNtDeviceName
);
DWORD
ConfigureLPTPortCommandOK(
PBYTE pInputData,
DWORD cbInputData,
PBYTE pOutputData,
DWORD cbOutputData,
PDWORD pcbOutputNeeded,
PINIXCVPORT pIniXcv
);
DWORD
GetPortSize(
PINIPORT pIniPort,
DWORD Level
);
LPBYTE
CopyIniPortToPort(
PINIPORT pIniPort,
DWORD Level,
LPBYTE pPortInfo,
LPBYTE pEnd
);
BOOL
ValidateDosDevicePort(
PINIPORT pIniPort
);
BOOL
RemoveDosDeviceDefinition(
PINIPORT pIniPort
);
BOOL
DeletePortNode(
PINILOCALMON pIniLocalMon,
PINIPORT pIniPort
);
BOOL
FixupDosDeviceDefinition(
PINIPORT pIniPort
);
DWORD
LcmXcvDataPort(
HANDLE hXcv,
LPCWSTR pszDataName,
PBYTE pInputData,
DWORD cbInputData,
PBYTE pOutputData,
DWORD cbOutputData,
PDWORD pcbOutputNeeded
);
BOOL
LcmXcvOpenPort(
HANDLE hMonitor,
LPCWSTR pszObject,
ACCESS_MASK GrantedAccess,
PHANDLE phXcv
);
BOOL
LcmXcvClosePort(
HANDLE hXcv
);
DWORD
WINAPIV
StrNCatBuffW(
IN PWSTR pszBuffer,
IN UINT cchBuffer,
...
);