|
|
Microsoft OS/2 SDK 2.0 05-30-1990
/****************************** Module Header ******************************\
* Module Name: spyutil.c
*
* Created: Microsoft, IBM Corporation 1990
*
\***************************************************************************/
#include <os2.h>
BOOL FGuessValidPointer (PVOID pvoid, SHORT cbStruct, ULONG ulMemFlags) {
ULONG ulSize = (ULONG)cbStruct;
ULONG ulFlags;
if (DosQueryMem(pvoid, &ulSize, &ulFlags) != 0)
return (FALSE); // Not valid memory
if (ulSize < (ULONG)cbStruct)
return (FALSE);
// Make sure right flags are set
if ((ulFlags & ulMemFlags) != ulMemFlags)
return (FALSE);
// Not perfect, but maybe sufficent for now to say it is valid!
return (TRUE);
}
BOOL CopyStruct(UCHAR *pbSrc, UCHAR *pbDst, SHORT cb)
{
// For now simply make sure both source and destination pointers
// appear to be valid
if (!FGuessValidPointer(pbSrc, cb, PAG_READ) ||
!FGuessValidPointer(pbDst, cb, PAG_READ | PAG_WRITE))
return (FALSE);
for (; cb > 0 ; cb--) {
*pbDst++ = *pbSrc++;
}
return (TRUE);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.