
// to compare structure sizes with the ASM version
// sometimes the structure size depends on -Zp parameter
// (which may be a Win32 C header file bug then)

#define _WIN32_WINNT 0x500

#include <windows.h>
#include <imagehlp.h>
#include <ocidl.h>
#include <winioctl.h>
#include <stdio.h>

/////////////////////////////////////////////////////////////////////////
//     main()
/////////////////////////////////////////////////////////////////////////
int main(int argc,char * argv[],char * envp[])
{
    printf("C size of ACCEL: %u\n", sizeof(ACCEL));
    printf("C size of ARRAYDESC: %u\n", sizeof(ARRAYDESC));
    printf("C size of BITMAPCOREINFO: %u\n", sizeof(BITMAPCOREINFO));
    printf("C size of COMMCONFIG: %u\n", sizeof(COMMCONFIG));
    printf("C size of COMMPROP: %u\n", sizeof(COMMPROP));
    printf("C size of CONSOLE_SCREEN_BUFFER_INFO: %u\n", sizeof(CONSOLE_SCREEN_BUFFER_INFO));
    printf("C size of CONTEXT: %u\n", sizeof(CONTEXT));
    printf("C size of CONTROLINFO: %u\n", sizeof(CONTROLINFO));
    printf("C size of DISK_DETECTION_INFO: %u\n", sizeof(DISK_DETECTION_INFO));
    printf("C size of DISK_EX_INT13_INFO: %u\n", sizeof(DISK_EX_INT13_INFO));
    printf("C size of DISK_GEOMETRY_EX: %u\n", sizeof(DISK_GEOMETRY_EX));
/*    printf("C size of DISK_INT13_INFO: %u\n", sizeof(DISK_INT13_INFO));*/
    printf("C size of DISK_PARTITION_INFO: %u\n", sizeof(DISK_PARTITION_INFO));
    printf("C size of DLGTEMPLATE: %u\n", sizeof(DLGTEMPLATE));
    printf("C size of DRIVE_LAYOUT_INFORMATION_EX: %u\n", sizeof(DRIVE_LAYOUT_INFORMATION_EX));
    printf("C size of DRIVE_LAYOUT_INFORMATION_GPT: %u\n", sizeof(DRIVE_LAYOUT_INFORMATION_GPT));
    printf("C size of ELEMDESC: %u\n", sizeof(ELEMDESC));
    printf("C size of FORMATETC: %u\n", sizeof(FORMATETC));
    printf("C size of FPO_DATA: %u\n", sizeof(FPO_DATA));
    printf("C size of FUNCDESC: %u\n", sizeof(FUNCDESC));
    printf("C size of IDLDESC: %u\n", sizeof(IDLDESC));
    printf("C size of IMAGE_DEBUG_INFORMATION: %u\n", sizeof(IMAGE_DEBUG_INFORMATION));
    printf("C size of INPUT_RECORD: %u\n", sizeof(INPUT_RECORD));
    printf("C size of IUnknown: %u\n", sizeof(IUnknown));
    printf("C size of IUnknownVtbl: %u\n", sizeof(IUnknownVtbl));
    printf("C size of KEY_EVENT_RECORD: %u\n", sizeof(KEY_EVENT_RECORD));
    printf("C size of LOADED_IMAGE: %u\n", sizeof(LOADED_IMAGE));
    printf("C size of MENUBARINFO: %u\n", sizeof(MENUBARINFO));
    printf("C size of NDR_SCONTEXT: %u\n", sizeof(NDR_SCONTEXT));
    printf("C size of NEWTEXTMETRIC: %u\n", sizeof(NEWTEXTMETRIC));
    printf("C size of PANOSE: %u\n", sizeof(PANOSE));
    printf("C size of PARAMDESC: %u\n", sizeof(PARAMDESC));
    printf("C size of PARAMDESCEX: %u\n", sizeof(PARAMDESCEX));
    printf("C size of PARTITION_INFORMATION: %u\n", sizeof(PARTITION_INFORMATION));
    printf("C size of PARTITION_INFORMATION_EX: %u\n", sizeof(PARTITION_INFORMATION_EX));
    printf("C size of PARTITION_INFORMATION_MBR: %u\n", sizeof(PARTITION_INFORMATION_MBR));
    printf("C size of SHFILEOPSTRUCT: %u\n", sizeof(SHFILEOPSTRUCT));
    printf("C size of SID: %u\n", sizeof(SID));
    printf("C size of STACKFRAME: %u\n", sizeof(STACKFRAME));
    printf("C size of STGMEDIUM: %u\n", sizeof(STGMEDIUM));
    printf("C size of TEXTMETRIC: %u\n", sizeof(TEXTMETRIC));
    printf("C size of TLIBATTR: %u\n", sizeof(TLIBATTR));
    printf("C size of TYPEATTR: %u\n", sizeof(TYPEATTR));
    printf("C size of TYPEDESC: %u\n", sizeof(TYPEDESC));
    printf("C size of VARDESC: %u\n", sizeof(VARDESC));
    printf("C size of VARIANT: %u\n", sizeof(VARIANT));
    printf("C size of WAVEFORMATEX: %u\n", sizeof(WAVEFORMATEX));
    printf("C size of WIN32_FIND_DATAA: %u\n", sizeof(WIN32_FIND_DATAA));
    printf("C size of WSADATA: %u\n", sizeof(WSADATA));
    printf("C size of wireSAFEARRAY: %u\n", sizeof(wireSAFEARRAY));
    return 0;
}
