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