// This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1992-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. #include "stdafx.h" #ifdef AFX_AUX_SEG #pragma code_seg(AFX_AUX_SEG) #endif // AfxIsValidString() returns TRUE if the passed pointer // references a string of at least the given length in characters. // A length of -1 (the default parameter) means that the string // buffer's minimum length isn't known, and the function will // return TRUE no matter how long the string is. The memory // used by the string can be read-only. BOOL AFXAPI AfxIsValidString(LPCWSTR lpsz, int nLength /* = -1 */) { if (lpsz == NULL) return FALSE; return afxData.bWin95 || ::IsBadStringPtrW(lpsz, nLength) == 0; } // As above, but for ANSI strings. BOOL AFXAPI AfxIsValidString(LPCSTR lpsz, int nLength /* = -1 */) { if (lpsz == NULL) return FALSE; return ::IsBadStringPtrA(lpsz, nLength) == 0; } // AfxIsValidAddress() returns TRUE if the passed parameter points // to at least nBytes of accessible memory. If bReadWrite is TRUE, // the memory must be writeable; if bReadWrite is FALSE, the memory // may be const. BOOL AFXAPI AfxIsValidAddress(const void* lp, UINT nBytes, BOOL bReadWrite /* = TRUE */) { // simple version using Win-32 APIs for pointer validation. return (lp != NULL && !IsBadReadPtr(lp, nBytes) && (!bReadWrite || !IsBadWritePtr((LPVOID)lp, nBytes))); } /////////////////////////////////////////////////////////////////////////////