NGWS SDK Documentation  

This is preliminary documentation and subject to change.
To comment on this topic, please send us email at ngwssdk@microsoft.com. Thanks!

ILDASM - Inspecting Code

Just as you can use the METAINFO utility to inspect the NGWS runtime metadata inside a file, you can use the ILDASM to inspect (disassemble) its code. Below is an example of its output for the MessageBox example shown earlier. This output is produced with the command:

Ildasm MessageBox.exe

To view the several options supported by ILDASM, type:

Ildasm /?
//  Microsoft (R) NGWS SDK IL Disassembler.  Version 1999.13.1020.9
//  Copyright (C) Microsoft Corp. 1998-1999

// VTableFixup Directory:
// No data.
.namespace __Microsoft_Visual_CPP__
{
  .class public auto ansi sealed __IsConst
  {
  } // end of class '__IsConst'

  .class public auto ansi sealed __IsVolatile
  {
  } // end of class '__IsVolatile'

  .class public auto ansi sealed __IsReallyLong
  {
  } // end of class '__IsReallyLong'

  .class public auto ansi sealed __IsReallySigned
  {
  } // end of class '__IsReallySigned'

  .class public auto ansi sealed __CustomMetaData
  {
  } // end of class '__CustomMetaData'

  .class public auto ansi sealed __DecoratedName
  {
  } // end of class '__DecoratedName'

} // end of namespace '__Microsoft_Visual_CPP__'

.class value public explicit ansi $MultiByte$24
{
  .pack 1
  .size 24
} // end of class '$MultiByte$24'

.class value public explicit ansi $MultiByte$26
{
  .pack 1
  .size 26
} // end of class '$MultiByte$26'

//Global methods
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.method public static void main() il managed implemented
{
  .entrypoint
  // Method begins at RVA 0x1000
  // Code size       45 (0x2d)
  .maxstack  4
  .locals (class System.String pCaption,
           class System.String pText)

  IL_0000:  ldnull
  IL_0001:  stloc.0
  IL_0002:  ldnull
  IL_0003:  stloc.1
  IL_0004:  ldptr      D_00003000
  IL_0009:  newobj     instance void System.String::.ctor(wchar*)
  IL_000e:  stloc.0
  IL_000f:  ldptr      D_00003018
  IL_0014:  newobj     instance void System.String::.ctor(wchar*)
  IL_0019:  stloc.1
  IL_001a:  ldc.i4     0x0
  IL_001f:  ldloc.0
  IL_0020:  ldloc.1
  IL_0021:  ldc.i4     0x0
  IL_0026:  call       int32 MessageBox(void*,class System.String,class System.String,unsigned int32)
  IL_002b:  pop
  IL_002c:  ret
} // end of global method 'main'

.method public static int32 _mainMSIL(int32 A_0,int8** A_1,int8** A_2) il managed implemented
{
  // Method begins at RVA 0x1040
  // Code size       11 (0xb)
  .maxstack  1

  IL_0000:  call       void main()
  IL_0005:  ldc.i4     0x0
  IL_000a:  ret
} // end of global method '_mainMSIL'

.method public static pinvokeimpl("user32.dll" ansi) int32 MessageBox(void* hWnd,class System.String pText,class System.String pCaption,unsigned int32 uType) il managed{ }
.data D_00003000 = bytearray (
                 48 00 65 00 6C 00 6C 00 6F 00 20 00 57 00 6F 00  // H.e.l.l.o. .W.o.
                 72 00 6C 00 64 00 00 00)                         // r.l.d...
.data D_00003018 = bytearray (
                 50 00 49 00 6E 00 76 00 6F 00 6B 00 65 00 20 00  // P.I.n.v.o.k.e. .
                 54 00 65 00 73 00 74 00 00 00)                   // T.e.s.t...
//*********** DISASSEMBLY COMPLETE ***********************