mirror of https://github.com/tongzx/nt5src
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.
233 lines
5.2 KiB
233 lines
5.2 KiB
/*++
|
|
|
|
Copyright (C) Microsoft Corporation, 1996 - 1999
|
|
|
|
Module Name:
|
|
|
|
ClbMisc
|
|
|
|
Abstract:
|
|
|
|
This header file describes the miscellaneous services of the Calais Library.
|
|
|
|
Author:
|
|
|
|
Doug Barlow (dbarlow) 7/16/1996
|
|
|
|
Environment:
|
|
|
|
Win32, C++ w/ Exceptions
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
|
|
#ifndef _CLBMISC_H_
|
|
#define _CLBMISC_H_
|
|
|
|
#include <stdio.h>
|
|
#include <tchar.h>
|
|
|
|
//
|
|
// Miscellaneous definitions.
|
|
//
|
|
|
|
extern int
|
|
MemCompare( // Non CRTL memory compare routine.
|
|
IN LPCBYTE pbOne,
|
|
IN LPCBYTE pbTwo,
|
|
IN DWORD cbLength);
|
|
|
|
extern DWORD
|
|
MStrAdd( // Add an ANSI string to a multistring.
|
|
IN OUT CBuffer &bfMsz,
|
|
IN LPCSTR szAdd);
|
|
extern DWORD
|
|
MStrAdd( // Add a wide string to a multistring.
|
|
IN OUT CBuffer &bfMsz,
|
|
IN LPCWSTR szAdd);
|
|
|
|
extern DWORD
|
|
MStrLen( // Return the length of an ANSI Multistring, in chars.
|
|
LPCSTR mszString);
|
|
extern DWORD
|
|
MStrLen( // Return the length of a wide Multistring, in chars.
|
|
LPCWSTR mszString);
|
|
|
|
extern LPCTSTR
|
|
FirstString( // Return first string segment in a multistring.
|
|
IN LPCTSTR szMultiString);
|
|
|
|
extern LPCTSTR
|
|
NextString( // Return next string segment in a multistring.
|
|
IN LPCTSTR szMultiString);
|
|
|
|
extern LPCTSTR
|
|
StringIndex( // Return n'th string segment in a multistring.
|
|
IN LPCTSTR szMultiString,
|
|
IN DWORD dwIndex);
|
|
|
|
extern DWORD
|
|
MStringCount(
|
|
LPCTSTR mszInString); // count strings in multistring
|
|
|
|
extern DWORD
|
|
MStringSort( // Sort multistring, removing duplicates.
|
|
LPCTSTR mszInString,
|
|
CBuffer &bfOutString);
|
|
|
|
extern DWORD
|
|
MStringMerge( // Merge two multistrings, eliminating duplicates.
|
|
LPCTSTR mszOne,
|
|
LPCTSTR mszTwo,
|
|
CBuffer &bfOutString);
|
|
|
|
extern DWORD
|
|
MStringCommon( // Get the intersection of two multistrings.
|
|
LPCTSTR mszOne,
|
|
LPCTSTR mszTwo,
|
|
CBuffer &bfOutString);
|
|
|
|
extern DWORD
|
|
MStringRemove( // Remove 2nd string entries from 1st string.
|
|
LPCTSTR mszOne,
|
|
LPCTSTR mszTwo,
|
|
CBuffer &bfOutString);
|
|
|
|
extern BOOL
|
|
ParseAtr( // Parse a smartcard ATR string.
|
|
LPCBYTE pbAtr,
|
|
LPDWORD pdwAtrLen = NULL,
|
|
LPDWORD pdwHistOffset = NULL,
|
|
LPDWORD pcbHistory = NULL,
|
|
DWORD cbMaxLen = 33);
|
|
|
|
extern BOOL
|
|
AtrCompare( // Compare an ATR to an ATR/Mask pair.
|
|
LPCBYTE pbAtr1,
|
|
LPCBYTE pbAtr2,
|
|
LPCBYTE pbMask, // = NULL
|
|
DWORD cbAtr2); // = 0
|
|
|
|
extern DWORD
|
|
MoveString( // Move an ANSI string into a buffer, converting to
|
|
CBuffer &bfDst, // TCHARs.
|
|
LPCSTR szSrc,
|
|
DWORD dwLength = (DWORD)(-1));
|
|
|
|
extern DWORD
|
|
MoveString( // Move a UNICODE string into a buffer, converting to
|
|
CBuffer &bfDst, // TCHARs.
|
|
LPCWSTR szSrc,
|
|
DWORD dwLength = (DWORD)(-1));
|
|
|
|
extern DWORD
|
|
MoveToAnsiString( // Move a string into a UNICODE buffer, converting from
|
|
LPSTR szDst, // TCHARs.
|
|
LPCTSTR szSrc,
|
|
DWORD cchLength);
|
|
|
|
extern DWORD
|
|
MoveToUnicodeString( // Move a string into an ANSI buffer, converting from
|
|
LPWSTR szDst, // TCHARs.
|
|
LPCTSTR szSrc,
|
|
DWORD cchLength);
|
|
|
|
extern DWORD
|
|
MoveToAnsiMultiString( // Move a multistring into an ANSI buffer, converting
|
|
LPSTR mszDst, // from TCHARs.
|
|
LPCTSTR mszSrc,
|
|
DWORD cchLength);
|
|
|
|
extern DWORD
|
|
MoveToUnicodeMultiString( // Move a multistring into a UNICODE buffer,
|
|
LPWSTR mszDst, // converting from TCHARs.
|
|
LPCTSTR mszSrc,
|
|
DWORD cchLength);
|
|
|
|
extern LPCTSTR
|
|
ErrorString( // Convert an error code into a string.
|
|
DWORD dwErrorCode);
|
|
|
|
extern void
|
|
FreeErrorString( // Free the string returned from ErrorString.
|
|
LPCTSTR szErrorString);
|
|
|
|
extern DWORD
|
|
SelectString( // Index a given string against a list of possible
|
|
LPCTSTR szSource, // strings. Last parameter is NULL.
|
|
...);
|
|
|
|
extern void
|
|
StringFromGuid(
|
|
IN LPCGUID pguidResult, // GUID to convert to text
|
|
OUT LPTSTR szGuid); // 39+ character buffer to receive GUID as text.
|
|
|
|
|
|
//
|
|
//==============================================================================
|
|
//
|
|
// CErrorString
|
|
//
|
|
// A trivial class to simplify the use of the ErrorString service.
|
|
//
|
|
|
|
class CErrorString
|
|
{
|
|
public:
|
|
|
|
// Constructors & Destructor
|
|
CErrorString(DWORD dwError = 0)
|
|
{
|
|
m_szErrorString = NULL;
|
|
SetError(dwError);
|
|
};
|
|
|
|
~CErrorString()
|
|
{
|
|
if (m_szErrorString != m_szHexError)
|
|
FreeErrorString(m_szErrorString);
|
|
};
|
|
|
|
// Properties
|
|
// Methods
|
|
void SetError(DWORD dwError)
|
|
{
|
|
m_dwError = dwError;
|
|
};
|
|
|
|
LPCTSTR Value(void)
|
|
{
|
|
LPCTSTR szErr = NULL;
|
|
if (m_szErrorString != m_szHexError)
|
|
FreeErrorString(m_szErrorString);
|
|
try {
|
|
szErr = ErrorString(m_dwError);
|
|
} catch (...) {}
|
|
if (NULL == szErr)
|
|
{
|
|
_stprintf(m_szHexError, _T("0x%08x"), m_dwError);
|
|
m_szErrorString = m_szHexError;
|
|
}
|
|
else
|
|
m_szErrorString = szErr;
|
|
return m_szErrorString;
|
|
};
|
|
|
|
// Operators
|
|
operator LPCTSTR(void)
|
|
{
|
|
return Value();
|
|
};
|
|
|
|
protected:
|
|
// Properties
|
|
DWORD m_dwError;
|
|
LPCTSTR m_szErrorString;
|
|
TCHAR m_szHexError[11]; // Big enough to hold 0x%08x\0
|
|
|
|
// Methods
|
|
};
|
|
|
|
#endif // _CLBMISC_H_
|
|
|