BOOL FillLBWithNewExeHeader()

in tools/ExeView/filllb.cpp [71:204]


BOOL FillLBWithNewExeHeader (HWND hWnd, PEXEINFO pExeInfo)
{
    char        szBuff[255];
    PNEWEXE     pne = &(pExeInfo->NewHdr);
    LPSTR       lp = (LPSTR)szBuff;

    #define ADDITEM() SendMessage( hWnd, LB_ADDSTRING, 0, (LPARAM)lp )

    SendMessage( hWnd, WM_SETREDRAW, 0, 0L );
    SendMessage( hWnd, LB_RESETCONTENT, 0, 0L );

    lstrcpy( lp, "New EXE Header Info" );
    ADDITEM();

    lstrcpy( lp, "---------------------------------------------------------------" );
    ADDITEM();

    if (pne->wFlags & LIBRARY)
        wsprintf( lp, "Library:\t\t\t\t%s", GetModuleName(pExeInfo) );
    else
        wsprintf( lp, "Module:\t\t\t\t%s", GetModuleName(pExeInfo)  );
    ADDITEM();

    wsprintf( lp, "Description:\t\t\t%s", GetModuleDescription(pExeInfo) );
    ADDITEM();

    wsprintf( lp, "Data:\t\t\t\t%s", GetExeDataType(pExeInfo) );
    ADDITEM();

    if (pne->bExeType == 0x02)  // Windows EXE
        wsprintf( lp, "Windows Version:\t\t\t%u.%u", HIBYTE(pne->wExpVersion),
            LOBYTE(pne->wExpVersion) );
    else
        lp[0] = 0;

    if (pne->wFlags & PMODEONLY)
        lstrcat( lp, " (PMODE ONLY!)" );
    ADDITEM();

    lstrcpy( lp, "" );
    ADDITEM();

    wsprintf( lp, "Signature:\t\t\t%#04x", pne->wNewSignature );
    ADDITEM();

    wsprintf( lp, "Linker Version:\t\t\t%#04x", pne->cLinkerVer );
    ADDITEM();

    wsprintf( lp, "Linker Revision:\t\t\t%#04x", pne->cLinkerRev );
    ADDITEM();

    wsprintf( lp, "Entry Table Offset:\t\t%#04X", pne->wEntryOffset );
    ADDITEM();

    wsprintf( lp, "Entry Table Length:\t\t%#04X", pne->wEntrySize );
    ADDITEM();

    wsprintf(lp,"Checksum:\t\t\t%#08lX", pne->lChecksum );
    ADDITEM();
    
    wsprintf(lp,"Module Flags:\t\t\t%#04X", pne->wFlags );
    ADDITEM();

    wsprintf( lp, "DGROUP:\t\t\t\tseg %#04X", pne->wAutoDataSegment );
    ADDITEM();

    wsprintf( lp, "Heap Size:\t\t\t%#04X", pne->wHeapInit );
    ADDITEM();

    wsprintf( lp, "Stack Size:\t\t\t%#04X", pne->wStackInit );
    ADDITEM();

    wsprintf( lp, "Inital CS:IP:\t\t\tseg %#04X offset %#04x",
        pne->wCSInit, pne->wIPInit);
    ADDITEM();

    wsprintf( lp, "Inital SS:SP:\t\t\tseg %#04X offset %#04x",
        pne->wSSInit, pne->wSPInit);
    ADDITEM();

    wsprintf( lp, "Entries in Segment Table:\t\t%#04X", pne->wSegEntries );
    ADDITEM();

    wsprintf( lp, "Entries in Module Table:\t\t%#04X", pne->wModEntries );
    ADDITEM();

    wsprintf( lp, "Non-Resident Name Table Size:\t%#04X", pne->wNonResSize );
    ADDITEM();

    wsprintf( lp, "Segment Table Offset:\t\t%#04X", pne->wSegOffset );
    ADDITEM();

    wsprintf( lp, "Resource Table Offset:\t\t%#04X", pne->wResourceOffset );
    ADDITEM();

    wsprintf( lp, "Resident Name Table Offset:\t%#04X", pne->wResOffset );
    ADDITEM();

    wsprintf( lp, "Module Table Offset:\t\t%#04X", pne->wModOffset );
    ADDITEM();

    wsprintf( lp, "Imported Name Table Offset:\t%#04X", pne->wImportOffset );
    ADDITEM();

    wsprintf( lp, "Non-Resident Name Table Offset:\t%#08lX", pne->lNonResOffset );
    ADDITEM();

    wsprintf( lp, "Moveable entries:\t\t\t%#04X", pne->wMoveableEntry );
    ADDITEM();

    wsprintf( lp, "Alignment Shift Count:\t\t%#04X", pne->wAlign );
    ADDITEM();

    wsprintf( lp, "Resource Segments:\t\t%#04X", pne->wResourceSegs );
    ADDITEM();

    wsprintf( lp, "Executable Type:\t\t\t%#04X", pne->bExeType );
    ADDITEM();

    wsprintf( lp, "Additional Flags:\t\t\t%#04X", pne->bAdditionalFlags );
    ADDITEM();

    wsprintf( lp, "Fast Load Offset:\t\t\t%#04X", pne->wFastOffset );
    ADDITEM();

    wsprintf( lp, "Fast Load Length:\t\t\t%#04X", pne->wFastSize );
    ADDITEM();

    SendMessage( hWnd, WM_SETREDRAW, 1, 0L );
    InvalidateRect( hWnd, NULL, TRUE );
    UpdateWindow( hWnd );
    return TRUE;

} //*** FillLBNewExeInfo