File:  [OS/2 SDKs] / os232sdk / toolkt20 / c / samples / spy / spyutil.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Thu Aug 9 12:26:30 2018 UTC (7 years, 9 months ago) by root
Branches: msft, MAIN
CVS tags: os2sdk-1990, HEAD
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);
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.