Annotation of q_a/samples/bpointer/readdata.c, revision 1.1

1.1     ! root        1: 
        !             2: /******************************************************************************\
        !             3: *       This is a part of the Microsoft Source Code Samples. 
        !             4: *       Copyright (C) 1993 Microsoft Corporation.
        !             5: *       All rights reserved. 
        !             6: *       This source code is only intended as a supplement to 
        !             7: *       Microsoft Development Tools and/or WinHelp documentation.
        !             8: *       See these sources for detailed information regarding the 
        !             9: *       Microsoft samples programs.
        !            10: \******************************************************************************/
        !            11: 
        !            12: /******************************************************************************\
        !            13: *
        !            14: *  PROGRAM:     readdata.C
        !            15: *  Part of:     BPointer sample application
        !            16: *
        !            17: \******************************************************************************/
        !            18: #include <windows.h>
        !            19: #include <stdio.h>
        !            20: #include "shrstuff.h"
        !            21: 
        !            22: 
        !            23: 
        !            24: 
        !            25: int main(void)
        !            26: {     HANDLE hFileMapping;
        !            27:       char cInput;
        !            28: 
        !            29: // Set up the shared memory. By using MapViewOfFileEx(), we force the
        !            30: // memory onto a specific location. This is just to show how based
        !            31: // pointers work for memory that is mapped differenctly in two processes.
        !            32: // In this process, the mapped file must already exist unless in chgdata
        !            33: // where it must not exist yet.
        !            34: 
        !            35: 
        !            36:       hFileMapping = CreateFileMapping((HANDLE)0xffffffff,NULL,PAGE_READONLY,0,4096,
        !            37:                                        "DemoMapObject");
        !            38:       if (GetLastError() != ERROR_ALREADY_EXISTS)
        !            39:          { printf("Please run chgdata before readdata!");
        !            40:            return(0);
        !            41:          };
        !            42:       if (!hFileMapping)
        !            43:          { printf ("Failed on CreateFileMapping...");
        !            44:            return(0);
        !            45:          };
        !            46:       clBasePt = (CHAINLIST *)MapViewOfFileEx(hFileMapping,FILE_MAP_READ,0,0,0,
        !            47:                                 (PVOID)0x50000000);
        !            48:       if (clBasePt == 0)
        !            49:        { printf("Error in MapViewOfFile: %d",GetLastError());
        !            50:          scanf("%c",&cInput);
        !            51:          return(0);
        !            52:        };
        !            53: 
        !            54: // This loop continuously traverses the linkes list, dereferencing the
        !            55: // link pointers through the base implicitly.
        !            56: 
        !            57:       printf("Press q to quit, anything else to display list: ");
        !            58:       scanf("%c",&cInput);
        !            59:       while (cInput != 'q')
        !            60:       {
        !            61:       clRunning = 0;
        !            62:       printf("Base address of file mapping in this process: 0x%x\n",(int)clBasePt);
        !            63:       while (clRunning->clNext != 0)
        !            64:        { printf ("Next Element in chain: %d\n",clRunning->iElement);
        !            65:          clRunning = clRunning->clNext;
        !            66:        };
        !            67:       printf("Press q to quit, anything else to continue: ");
        !            68:       scanf("%c",&cInput);
        !            69:       };
        !            70: 
        !            71: // user didn't want any more dumps, so clean up.
        !            72: 
        !            73:       UnmapViewOfFile(clBasePt);
        !            74:       CloseHandle(hFileMapping);
        !            75:  return(0);
        !            76: }
        !            77: 
        !            78: 
        !            79: 
        !            80: 
        !            81: 
        !            82: 

unix.superglobalmegacorp.com

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