dos.c 2.28 KB
/*
 *	DOS dumping utility
 *
 * 	Copyright 2006 Eric Pouech
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "config.h"
#include "wine/port.h"

#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#include <time.h>
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#ifdef HAVE_SYS_MMAN_H
#include <sys/mman.h>
#endif
#include <fcntl.h>

#define NONAMELESSUNION
#define NONAMELESSSTRUCT
#include "windef.h"
#include "winbase.h"
#include "winedump.h"

void dos_dump(void)
{
    const IMAGE_DOS_HEADER*    dh;

    if ((dh = PRD(0, sizeof(IMAGE_DOS_HEADER))))
    {
        printf("DOS image:\n");
        printf("  Signature:            %.2s\n", (const char*)&dh->e_magic);
        printf("  Bytes on last page:   %u\n", dh->e_cblp);
        printf("  Number of pages:      %u\n", dh->e_cp);
        printf("  Relocations:          %u\n", dh->e_crlc);
        printf("  Size of header:       %u\n", dh->e_cparhdr);
        printf("  Min extra paragraphs: %u\n", dh->e_minalloc);
        printf("  Max extra paragraphs: %u\n", dh->e_maxalloc);
        printf("  Initial stack:        %x:%x\n", dh->e_ss, dh->e_sp);
        printf("  Checksum:             %x\n", dh->e_csum);
        printf("  Initial address:      %x:%x\n", dh->e_cs, dh->e_ip);
        printf("  Relocation (file):    %u\n", dh->e_lfarlc);
        printf("  Overlay number:       %u\n", dh->e_ovno);
        printf("  OEM id(info):         %x(%x)\n", dh->e_oemid, dh->e_oeminfo);
        printf("  Offset to ext header: %x\n", dh->e_lfanew);
    }
}