|
|
/*++
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, ... );
|