|
|
//
// Validation code
//
#include "stock.h"
#pragma hdrstop
//
// Validations
//
// Hack: size of the internal data structures, as defined in comctl32\da.c.
// We measure this by the number of DWORD-sized fields.
#ifdef DEBUG
#define CB_DSA (6 * sizeof(DWORD))
#define CB_DPA (6 * sizeof(DWORD))
#else
#define CB_DSA (5 * sizeof(DWORD))
#define CB_DPA (5 * sizeof(DWORD))
#endif
BOOL IsValidHDSA( HDSA hdsa) { return (IS_VALID_WRITE_BUFFER(hdsa, BYTE, CB_DSA)); }
BOOL IsValidHDPA( HDPA hdpa) { return (IS_VALID_WRITE_BUFFER(hdpa, BYTE, CB_DPA)); }
BOOL IsValidPIDL( LPCITEMIDLIST pidl) { return (IS_VALID_READ_PTR(pidl, USHORT) && IS_VALID_READ_BUFFER((LPBYTE)pidl+sizeof(USHORT), BYTE, pidl->mkid.cb) && (0 == _ILNext(pidl)->mkid.cb || IS_VALID_PIDL(_ILNext(pidl)))); }
BOOL IsValidHWND( HWND hwnd) { /* Ask User if this is a valid window. */
return(IsWindow(hwnd)); }
BOOL IsValidHMENU( HMENU hmenu) { return IsMenu(hmenu); }
BOOL IsValidHANDLE( HANDLE hnd) { return(NULL != hnd && INVALID_HANDLE_VALUE != hnd); }
BOOL IsValidHANDLE2( HANDLE hnd) { return(hnd != INVALID_HANDLE_VALUE); }
BOOL IsValidShowCmd( int nShow) { BOOL bResult; switch (nShow) { case SW_HIDE: case SW_SHOWNORMAL: case SW_SHOWMINIMIZED: case SW_SHOWMAXIMIZED: case SW_SHOWNOACTIVATE: case SW_SHOW: case SW_MINIMIZE: case SW_SHOWMINNOACTIVE: case SW_SHOWNA: case SW_RESTORE: case SW_SHOWDEFAULT: bResult = TRUE; break; default: bResult = FALSE; TraceMsg(TF_ERROR, "IsValidShowCmd(): Invalid show command %d.", nShow); break; } return(bResult); }
BOOL IsValidPathA( LPCSTR pcszPath) { return(IS_VALID_STRING_PTRA(pcszPath, MAX_PATH) && EVAL((UINT)lstrlenA(pcszPath) < MAX_PATH)); }
BOOL IsValidPathW( LPCWSTR pcszPath) { return(IS_VALID_STRING_PTRW(pcszPath, MAX_PATH) && EVAL((UINT)lstrlenW(pcszPath) < MAX_PATH)); }
BOOL IsValidPathResultA( HRESULT hr, LPCSTR pcszPath, UINT cchPathBufLen) { return((hr == S_OK && EVAL(IsValidPathA(pcszPath)) && EVAL((UINT)lstrlenA(pcszPath) < cchPathBufLen)) || (hr != S_OK && EVAL(! cchPathBufLen || ! pcszPath || ! *pcszPath))); }
BOOL IsValidPathResultW( HRESULT hr, LPCWSTR pcszPath, UINT cchPathBufLen) { return((hr == S_OK && EVAL(IsValidPathW(pcszPath)) && EVAL((UINT)lstrlenW(pcszPath) < cchPathBufLen)) || (hr != S_OK && EVAL(! cchPathBufLen || ! pcszPath || ! *pcszPath))); }
BOOL IsValidExtensionA( LPCSTR pcszExt) { return(IS_VALID_STRING_PTRA(pcszExt, MAX_PATH) && EVAL(lstrlenA(pcszExt) < MAX_PATH) && EVAL(*pcszExt == '.')); }
BOOL IsValidExtensionW( LPCWSTR pcszExt) { return(IS_VALID_STRING_PTRW(pcszExt, MAX_PATH) && EVAL(lstrlenW(pcszExt) < MAX_PATH) && EVAL(*pcszExt == TEXTW('.'))); }
BOOL IsValidIconIndexA( HRESULT hr, LPCSTR pcszIconFile, UINT cchIconFileBufLen, int niIcon) { return(EVAL(IsValidPathResultA(hr, pcszIconFile, cchIconFileBufLen)) && EVAL(hr == S_OK || ! niIcon)); }
BOOL IsValidIconIndexW( HRESULT hr, LPCWSTR pcszIconFile, UINT cchIconFileBufLen, int niIcon) { return(EVAL(IsValidPathResultW(hr, pcszIconFile, cchIconFileBufLen)) && EVAL(hr == S_OK || ! niIcon)); }
BOOL IsStringContainedA(LPCSTR pcszBigger, LPCSTR pcszSuffix) { ASSERT(IS_VALID_STRING_PTRA(pcszBigger, -1)); ASSERT(IS_VALID_STRING_PTRA(pcszSuffix, -1)); return (pcszSuffix >= pcszBigger && pcszSuffix <= pcszBigger + lstrlenA(pcszBigger)); }
BOOL IsStringContainedW(LPCWSTR pcszBigger, LPCWSTR pcszSuffix) { ASSERT(IS_VALID_STRING_PTRW(pcszBigger, -1)); ASSERT(IS_VALID_STRING_PTRW(pcszSuffix, -1)); return (pcszSuffix >= pcszBigger && pcszSuffix <= pcszBigger + lstrlenW(pcszBigger)); }
|