Annotation of q_a/samples/bpointer/readdata.c, revision 1.1.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.