Annotation of mstools/samples/sdktools/image/symedit/symcvt.c, revision 1.1.1.1

1.1       root        1: /*++
                      2: 
                      3: 
                      4: Copyright (c) 1992  Microsoft Corporation
                      5: 
                      6: Module Name:
                      7: 
                      8:     symcvt.c
                      9: 
                     10: Abstract:
                     11: 
                     12:     This module is the shell for the SYMCVT DLL.  The DLL's purpose is
                     13:     to convert the symbols for the specified image.  The resulting
                     14:     debug data must conform to the CODEVIEW spec.
                     15: 
                     16:     Currently this DLL converts COFF symbols and C7/C8 MAPTOSYM SYM files.
                     17: 
                     18: Author:
                     19: 
                     20:     Wesley A. Witt (wesw) 19-April-1993
                     21: 
                     22: Environment:
                     23: 
                     24:     Win32, User Mode
                     25: 
                     26: --*/
                     27: 
                     28: #include <windows.h>
                     29: #include <stdlib.h>
                     30: #include <stdio.h>
                     31: #include <string.h>
                     32: 
                     33: #include "symcvt.h"
                     34: #include "cofftocv.h"
                     35: #include "symtocv.h"
                     36: 
                     37: 
                     38: 
                     39: PUCHAR
                     40: ConvertSymbolsForImage(
                     41:                        HANDLE      hFile,
                     42:                        char *      fname
                     43:     )
                     44: /*++
                     45: 
                     46: Routine Description:
                     47: 
                     48:     Calls the appropriate conversion routine based on the file contents.
                     49: 
                     50: 
                     51: Arguments:
                     52: 
                     53:     hFile         -  file handle for the image (may be NULL)
                     54:     fname         -  file name for the image (may not have correct path)
                     55: 
                     56: 
                     57: Return Value:
                     58: 
                     59:     NULL             - could not convert the symbols
                     60:     Valid Pointer    - a pointer to malloc'ed memory that contains the
                     61:                        CODEVIEW symbols
                     62: 
                     63: --*/
                     64: {
                     65:     POINTERS   p;
                     66:     char       szDrive    [_MAX_DRIVE];
                     67:     char       szDir      [_MAX_DIR];
                     68:     char       szFname    [_MAX_FNAME];
                     69:     char       szExt      [_MAX_EXT];
                     70:     char       szSymName  [MAX_PATH];
                     71:     PUCHAR     rVal;
                     72: 
                     73: 
                     74:     if (!MapInputFile( &p, hFile, fname)) {
                     75: 
                     76:         rVal = NULL;
                     77: 
                     78:     } else if (CalculateNtImagePointers( &p.iptrs )) {
                     79: 
                     80:         //
                     81:         // we were able to compute the nt image pointers so this must be
                     82:         // a nt PE image.  now we must decide if there are coff symbols
                     83:         // if there are then we do the cofftocv conversion.
                     84:         //
                     85:         // btw, this is where someone would convert some other type of
                     86:         // symbols that are in a nt PE image. (party on garth..)
                     87:         //
                     88: 
                     89:         if (!COFF_DIR(&p.iptrs)) {
                     90:             rVal = NULL;
                     91:         } else {
                     92:             ConvertCoffToCv( &p );
                     93:             rVal = p.pCvStart.ptr;
                     94:         }
                     95:         UnMapInputFile( &p );
                     96: 
                     97:     } else {
                     98: 
                     99:         UnMapInputFile ( &p );
                    100: 
                    101:         _splitpath( fname, szDrive, szDir, szFname, szExt );
                    102:         _makepath( szSymName, szDrive, szDir, szFname, "sym" );
                    103: 
                    104:         if (!MapInputFile( &p, NULL, szSymName)) {
                    105: 
                    106:             rVal = NULL;
                    107: 
                    108:         } else {
                    109: 
                    110:             //
                    111:             // must be a wow/dos app and there is a .sym file so lets to
                    112:             // the symtocv conversion
                    113:             //
                    114: 
                    115:             ConvertSymToCv( &p );
                    116:             UnMapInputFile( &p );
                    117: 
                    118:             rVal = p.pCvStart.ptr;
                    119:         }
                    120: 
                    121:     }
                    122: 
                    123:     return rVal;
                    124: }

unix.superglobalmegacorp.com

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