changeset 247:41a9fce66f7f

changed line-endings to unix format
author Frank Benoit <benoit@tionex.de>
date Tue, 01 Jul 2008 10:18:15 +0200
parents fd9c62a2998e
children b3dbd786541a
files dwt/internal/gdip/native.d dwt/internal/ole/win32/COM.d dwt/internal/ole/win32/COMAPI.d dwt/internal/ole/win32/COMTYPES.d dwt/internal/ole/win32/DOCOBJ.d dwt/internal/ole/win32/EXDISP.d dwt/internal/ole/win32/MSHTMHST.d dwt/internal/ole/win32/OAIDL.d dwt/internal/ole/win32/OBJIDL.d dwt/internal/ole/win32/OLEIDL.d dwt/internal/ole/win32/ifs.d dwt/internal/opengl/win32/native.d dwt/internal/win32/WINTYPES.d
diffstat 13 files changed, 24883 insertions(+), 24883 deletions(-) [+]
line wrap: on
line diff
--- a/dwt/internal/gdip/native.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/gdip/native.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,1714 +1,1714 @@
-/******************************************************************************
-
-  module:
-
-  Based on D version created by John Chapman for the Juno Project
-    see: www.dsource.org/projects/juno
-
-  Changes and Additions for DWT:
-    John Reimer <terminal.node@gmail.com>
-
-******************************************************************************/
-
-module dwt.internal.gdip.native;
-
-import dwt.internal.win32.WINTYPES;
-import tango.sys.SharedLib : SharedLib;
-import tango.util.log.Trace;
-
-extern(Windows):
-
-/******************************************************************************
-
-
-******************************************************************************/
-
-enum DebugEventLevel {
-  Fatal,
-  Warning
-}
-
-alias void  function(DebugEventLevel level, char* message) DebugEventProc;
-
-alias int   function(out uint token)    NotificationHookProc;
-alias void  function(uint token)        NotificationUnhookProc;
-
-
-/******************************************************************************
-
-
-******************************************************************************/
-
-
-struct GdiplusStartupInput {
-  uint GdiplusVersion;
-  DebugEventProc DebugEventCallback;
-  int SuppressBackgroundThread;
-  int SuppressExternalCodecs;
-}
-
-struct GdiplusStartupOutput {
-  NotificationHookProc NotificationHook;
-  NotificationUnhookProc NotificationUnhook;
-}
-
-struct GpBitmapData {
-  int Width;
-  int Height;
-  int Stride;
-  int PixelFormat;
-  void* Scan0;
-  int Reserved;
-}
-
-struct GpColorMatrix {
-  float[5][5] m;
-}
-
-struct GpPropertyItem {
-  int id;
-  int length;
-  short type;
-  void* value;
-}
-
-struct GpColorPalette {
-  int Flags;
-  int Count;
-  int[1] Entries;
-}
-
-public struct GpRectF {
-    public float X;
-    public float Y;
-    public float Width;
-    public float Height;
-}
-
-public struct GpRect {
-    public int X;
-    public int Y;
-    public int Width;
-    public int Height;
-}
-public struct GpPoint {
-    public int X;
-    public int Y;
-}
-public struct GpPointF {
-    public float X;
-    public float Y;
-}
-
-alias int function(void*) GpDrawImageAbort;
-alias GpDrawImageAbort GpGetThumbnailImageAbort;
-
-/******************************************************************************
-
-
-******************************************************************************/
-
-enum Status {
-  OK,
-  GenericError,
-  InvalidParameter,
-  OutOfMemory,
-  ObjectBusy,
-  InsufficientBuffer,
-  NotImplemented,
-  Win32Error,
-  WrongState,
-  Aborted,
-  FileNotFound,
-  ValueOverflow,
-  AccessDenied,
-  UnknownImageFormat,
-  FontFamilyNotFound,
-  FontStyleNotFound,
-  NotTrueTypeFont,
-  UnsupportedGdiplusVersion,
-  GdiplusNotInitialized,
-  PropertyNotFound,
-  PropertyNotSupported
-}
-
-/**************************************************************************
-
-	Opaque types managed by Gdi+
-
-**************************************************************************/
-typedef GpImage  GpBitmap;
-
-// alias   uint   ARGB;
-typedef Handle GpFontFamily;
-typedef Handle GpImage;
-typedef Handle GpBrush;
-typedef Handle GpFont;
-typedef Handle GpFontCollection;
-typedef Handle GpGraphics;
-typedef Handle GpGraphicsPath;
-typedef Handle GpImageAttributes;
-typedef Handle GpHatchBrush;
-typedef Handle GpLinearGradientBrush;
-typedef Handle GpMatrix;
-typedef Handle GpPen;
-typedef Handle GpRegion;
-typedef Handle GpSolidBrush;
-typedef Handle GpStringFormat;
-typedef Handle GpTextureBrush;
-typedef Handle GpPath;
-
-alias void* Handle;
-
-alias int BrushType;
-alias int CombineMode;
-alias int FlushIntention;
-alias int MatrixOrder;
-alias int GraphicsUnit;
-alias int QualityMode;
-alias int SmoothingMode;
-alias int InterpolationMode;
-alias int CompositingMode;
-alias int CompositingQuality;
-alias int PixelOffsetMode;
-alias int PixelFormat;
-alias int RotateFlipType;
-alias int CoordinateSpace;
-alias int WarpMode;
-alias int WrapMode;
-alias int FillMode;
-alias int LineJoin;
-alias int LineCap;
-alias int DashCap;
-alias int DashStyle;
-alias int PenAlignment;
-alias int ColorMatrixFlag;
-alias int ColorAdjustType;
-alias int ColorChannelFlag;
-alias int ImageLockMode;
-alias int ImageCodecFlags;
-alias int EncoderParameterValueType;
-alias int GenericFontFamilies;
-alias int FontStyle;
-alias int HatchStyle;
-alias int StringFormatFlags;
-alias int StringAlignment;
-alias int StringTrimming;
-alias int TextRenderingHint;
-alias int PenType;
-alias int LinearGradientMode;
-alias int KnownColor;
-alias int Unit;
-
-alias uint GraphicsState;
-
-/******************************************************************************
-
-	Flat GDI+ Exports (C Interface)
-
-******************************************************************************/
-
-extern (Windows):
-
-version( STATIC_GDIPLUS ){
-Status GdiplusStartup( uint* token, GdiplusStartupInput* input, GdiplusStartupOutput* output);
-void   GdiplusShutdown(uint token);
-Status GdipCreateFromHDC(Handle hdc, out Handle graphics);
-Status GdipCreateFromHDC2(Handle hdc, Handle hDevice, out Handle graphics);
-Status GdipCreateFromHWND(Handle hwnd, out Handle graphics);
-Status GdipGetImageGraphicsContext(Handle image, out Handle graphics);
-Status GdipDeleteGraphics(Handle graphics);
-Status GdipGetDC(Handle graphics, out Handle hdc);
-Status GdipReleaseDC(Handle graphics, Handle hdc);
-Status GdipSetClipGraphics(Handle graphics, Handle srcgraphics, CombineMode combineMode);
-Status GdipSetClipRectI(Handle graphics, int x, int y, int width, int height, CombineMode combineMode);
-Status GdipSetClipRect(Handle graphics, float x, float y, float width, float height, CombineMode combineMode);
-Status GdipSetClipPath(Handle graphics, Handle path, CombineMode combineMode);
-Status GdipSetClipRegion(Handle graphics, Handle region, CombineMode combineMode);
-Status GdipSetClipHrgn(Handle graphics, HRGN hRgn, CombineMode combineMode);
-
-Status GdipGetClip(Handle graphics, out Handle region);
-Status GdipResetClip(Handle graphics);
-Status GdipSaveGraphics(Handle graphics, out uint state);
-Status GdipRestoreGraphics(Handle graphics, int state);
-Status GdipFlush(Handle graphics, FlushIntention intention);
-Status GdipScaleWorldTransform(Handle graphics, float sx, float sy, MatrixOrder order);
-Status GdipRotateWorldTransform(Handle graphics, float angle, MatrixOrder order);
-Status GdipTranslateWorldTransform(Handle graphics, float dx, float dy, MatrixOrder order);
-Status GdipMultiplyWorldTransform(Handle graphics, Handle matrix, MatrixOrder order);
-Status GdipResetWorldTransform(Handle graphics);
-Status GdipBeginContainer(Handle graphics, ref GpRectF dstrect, ref GpRectF srcrect, GraphicsUnit unit, out int state);
-Status GdipBeginContainerI(Handle graphics, ref GpRect dstrect, ref GpRect srcrect, GraphicsUnit unit, out int state);
-Status GdipBeginContainer2(Handle graphics, out int state);
-Status GdipEndContainer(Handle graphics, int state);
-Status GdipGetDpiX(Handle graphics, out float dpi);
-Status GdipGetDpiY(Handle graphics, out float dpi);
-Status GdipGetPageUnit(Handle graphics, out GraphicsUnit unit);
-Status GdipSetPageUnit(Handle graphics, GraphicsUnit unit);
-Status GdipGetPageScale(Handle graphics, out float scale);
-Status GdipSetPageScale(Handle graphics, float scale);
-Status GdipGetWorldTransform(Handle graphics, Handle matrix); // out not necessary?
-Status GdipSetWorldTransform(Handle graphics, Handle matrix);
-Status GdipGetCompositingMode(Handle graphics, out CompositingMode compositingMode);
-Status GdipSetCompositingMode(Handle graphics, CompositingMode compositingMode);
-Status GdipGetCompositingQuality(Handle graphics, out CompositingQuality compositingQuality);
-Status GdipSetCompositingQuality(Handle graphics, CompositingQuality compositingQuality);
-Status GdipGetInterpolationMode(Handle graphics, out InterpolationMode interpolationMode);
-Status GdipSetInterpolationMode(Handle graphics, InterpolationMode interpolationMode);
-Status GdipGetSmoothingMode(Handle graphics, out SmoothingMode smoothingMode);
-Status GdipSetSmoothingMode(Handle graphics, SmoothingMode smoothingMode);
-Status GdipGetPixelOffsetMode(Handle graphics, out PixelOffsetMode pixelOffsetMode);
-Status GdipSetPixelOffsetMode(Handle graphics, PixelOffsetMode pixelOffsetMode);
-Status GdipGetTextContrast(Handle graphics, out uint textContrast);
-Status GdipSetTextContrast(Handle graphics, uint textContrast);
-Status GdipGraphicsClear(Handle graphics, int color);
-Status GdipDrawLine(Handle graphics, Handle pen, float x1, float y1, float x2, float y2);
-Status GdipDrawLines(Handle graphics, Handle pen, GpPointF* points, int count);
-Status GdipDrawLineI(Handle graphics, Handle pen, int x1, int y1, int x2, int y2);
-Status GdipDrawLinesI(Handle graphics, Handle pen, GpPoint* points, int count);
-Status GdipDrawArc(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle);
-Status GdipDrawArcI(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle);
-Status GdipDrawBezier(Handle graphics, Handle pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4);
-Status GdipDrawBeziers(Handle graphics, Handle pen, GpPointF* points, int count);
-Status GdipDrawBezierI(Handle graphics, Handle pen, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
-Status GdipDrawBeziersI(Handle graphics, Handle pen, GpPoint* points, int count);
-Status GdipDrawRectangle(Handle graphics, Handle pen, float x, float y, float width, float height);
-Status GdipDrawRectangles(Handle graphics, Handle pen, GpRectF* rects, int count);
-Status GdipDrawRectangleI(Handle graphics, Handle pen, int x, int y, int width, int height);
-Status GdipDrawRectanglesI(Handle graphics, Handle pen, GpRect* rects, int count);
-Status GdipDrawEllipse(Handle graphics, Handle pen, float x, float y, float width, float height);
-Status GdipDrawEllipseI(Handle graphics, Handle pen, int x, int y, int width, int height);
-Status GdipDrawPie(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle);
-Status GdipDrawPieI(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle);
-Status GdipDrawPolygon(Handle graphics, Handle pen, GpPointF* points, int count);
-Status GdipDrawPolygonI(Handle graphics, Handle pen, GpPoint* points, int count);
-Status GdipDrawCurve(Handle graphics, Handle pen, GpPointF* points, int count);
-Status GdipDrawCurve2(Handle graphics, Handle pen, GpPointF* points, int count, float tension);
-Status GdipDrawCurve3(Handle graphics, Handle pen, GpPointF* points, int count, int offset, int numberOfSegments, float tension);
-Status GdipDrawCurveI(Handle graphics, Handle pen, GpPoint* points, int count);
-Status GdipDrawCurve2I(Handle graphics, Handle pen, GpPoint* points, int count, float tension);
-Status GdipDrawCurve3I(Handle graphics, Handle pen, GpPoint* points, int count, int offset, int numberOfSegments, float tension);
-Status GdipDrawClosedCurve(Handle graphics, Handle pen, GpPointF* points, int count);
-Status GdipDrawClosedCurve2(Handle graphics, Handle pen, GpPointF* points, int count, float tension);
-Status GdipDrawClosedCurveI(Handle graphics, Handle pen, GpPoint* points, int count);
-Status GdipDrawClosedCurve2I(Handle graphics, Handle pen, GpPoint* points, int count, float tension);
-Status GdipFillRectangleI(Handle graphics, Handle brush, int x, int y, int width, int height);
-Status GdipFillRectangle(Handle graphics, Handle brush, float x, float y, float width, float height);
-Status GdipFillRectanglesI(Handle graphics, Handle brush, GpRect* rects, int count);
-Status GdipFillRectangles(Handle graphics, Handle brush, GpRectF* rects, int count);
-Status GdipFillPolygon(Handle graphics, Handle brush, GpPointF* rects, int count, FillMode fillMode);
-Status GdipFillPolygonI(Handle graphics, Handle brush, GpPoint* rects, int count, FillMode fillMode);
-Status GdipFillEllipse(Handle graphics, Handle brush, float x, float y, float width, float height);
-Status GdipFillEllipseI(Handle graphics, Handle brush, int x, int y, int width, int height);
-Status GdipFillPie(Handle graphics, Handle brush, float x, float y, float width, float height, float startAngle, float sweepAngle);
-Status GdipFillPieI(Handle graphics, Handle brush, int x, int y, int width, int height, float startAngle, float sweepAngle);
-Status GdipFillPath(Handle graphics, Handle brush, Handle path);
-Status GdipFillClosedCurve(Handle graphics, Handle brush, GpPointF* points, int count);
-Status GdipFillClosedCurveI(Handle graphics, Handle brush, GpPoint* points, int count);
-Status GdipFillClosedCurve2(Handle graphics, Handle brush, GpPointF* points, int count, FillMode fillMode, float tension);
-Status GdipFillClosedCurve2I(Handle graphics, Handle brush, GpPoint* points, int count, FillMode fillMode, float tension);
-Status GdipFillRegion(Handle graphics, Handle brush, Handle region);
-Status GdipDrawString(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, Handle brush);
-Status GdipMeasureString(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, ref GpRectF boundingBox, int* codepointsFitted, int* linesFitted);
-Status GdipGetStringFormatMeasurableCharacterRangeCount(Handle format, out int count);
-Status GdipCloneStringFormat(Handle format, out Handle newFormat);
-
-Status GdipMeasureCharacterRanges(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, int regionCount, Handle* regions);
-Status GdipDrawImage(Handle graphics, Handle image, float x, float y);
-Status GdipDrawImageI(Handle graphics, Handle image, int x, int y);
-Status GdipDrawImageRect(Handle graphics, Handle image, float x, float y, float width, float height);
-Status GdipDrawImageRectI(Handle graphics, Handle image, int x, int y, int width, int height);
-Status GdipDrawImagePointRect(Handle graphics, Handle image, float x, float y, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit);
-Status GdipDrawImagePointRectI(Handle graphics, Handle image, int x, int y, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit);
-Status GdipDrawImageRectRect(Handle graphics, Handle image, float dstx, float dsty, float dstwidth, float dstheight, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
-Status GdipDrawImageRectRectI(Handle graphics, Handle image, int dstx, int dsty, int dstwidth, int dstheight, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
-Status GdipDrawImagePoints(Handle graphics, Handle image, GpPointF* dstpoints, int count);
-Status GdipDrawImagePointsI(Handle graphics, Handle image, GpPoint* dstpoints, int count);
-Status GdipDrawImagePointsRect(Handle graphics, Handle image, GpPointF* dstpoints, int count, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
-Status GdipDrawImagePointsRectI(Handle graphics, Handle image, GpPoint* dstpoints, int count, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
-Status GdipIsVisiblePoint(Handle graphics, float x, float y, out int result);
-Status GdipIsVisiblePointI(Handle graphics, int x, int y, out int result);
-Status GdipIsVisibleRect(Handle graphics, float x, float y, float width, float height, out int result);
-Status GdipIsVisibleRectI(Handle graphics, int x, int y, int width, int height, out int result);
-Status GdipGetTextRenderingHint(Handle graphics, out TextRenderingHint mode);
-Status GdipSetTextRenderingHint(Handle graphics, TextRenderingHint mode);
-Status GdipGetClipBounds(Handle graphics, out GpRectF rect);
-Status GdipGetClipBoundsI(Handle graphics, out GpRect rect);
-Status GdipGetVisibleClipBounds(Handle graphics, out GpRectF rect);
-Status GdipGetVisibleClipBoundsI(Handle graphics, out GpRect rect);
-Status GdipIsClipEmpty(Handle graphics, out int result);
-Status GdipIsVisibleClipEmpty(Handle graphics, out int result);
-Status GdipGetRenderingOrigin(Handle graphics, out int x, out int y);
-Status GdipSetRenderingOrigin(Handle graphics, int x, int y);
-Status GdipGetNearestColor(Handle graphics, ref int argb);
-Status GdipComment(Handle graphics, uint sizeData, ubyte* data);
-Status GdipTransformPoints(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPointF* points, int count);
-Status GdipTransformPointsI(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPoint* points, int count);
-
-Status GdipCreateMatrix(out Handle matrix);
-Status GdipCreateMatrix2(float m11, float m12, float m21, float m22, float dx, float dy, out Handle matrix);
-Status GdipCreateMatrix3(ref GpRectF rect, GpPointF* dstplg, out Handle matrix);
-Status GdipCreateMatrix3I(ref GpRect rect, GpPoint* dstplg, out Handle matrix);
-Status GdipDeleteMatrix(Handle matrix);
-Status GdipCloneMatrix(Handle matrix, out Handle cloneMatrix);
-Status GdipGetMatrixElements(Handle matrix, float* matrixOut);
-Status GdipSetMatrixElements(Handle matrix, float m11, float m12, float m21, float m22, float xy, float dy);
-Status GdipInvertMatrix(Handle matrix);
-Status GdipMultiplyMatrix(Handle matrix, Handle matrix2, MatrixOrder order);
-Status GdipScaleMatrix(Handle matrix, float scaleX, float scaleY, MatrixOrder order);
-Status GdipShearMatrix(Handle matrix, float shearX, float shearY, MatrixOrder order);
-Status GdipRotateMatrix(Handle matrix, float angle, MatrixOrder order);
-Status GdipTranslateMatrix(Handle matrix, float offsetX, float offsetY, MatrixOrder order);
-Status GdipIsMatrixIdentity(Handle matrix, out int result);
-Status GdipIsMatrixInvertible(Handle matrix, out int result);
-Status GdipTransformMatrixPoints(Handle matrix, GpPointF *pts, int count);
-
-Status GdipGetBrushType(Handle brush, out BrushType type );
-Status GdipCloneBrush(Handle brush, out Handle cloneBrush);
-Status GdipDeleteBrush(Handle brush);
-
-Status GdipCreateSolidFill(int color, out Handle brush);
-Status GdipGetSolidFillColor(Handle brush, out int color);
-Status GdipSetSolidFillColor(Handle brush, int color);
-
-Status GdipCreateTexture(Handle image, WrapMode wrapMode, out Handle texture);
-Status GdipCreateTexture2(Handle image, WrapMode wrapMode, float x, float y, float width, float height, out Handle texture);
-Status GdipCreateTexture2I(Handle image, WrapMode wrapMode, int x, int y, int width, int height, out Handle texture);
-Status GdipGetTextureImage(Handle brush, out Handle image);
-Status GdipGetTextureTransform(Handle brush, out Handle matrix);
-Status GdipSetTextureTransform(Handle brush, Handle matrix);
-Status GdipGetTextureWrapMode(Handle brush, out WrapMode wrapmode);
-Status GdipSetTextureWrapMode(Handle brush, WrapMode wrapmode);
-
-Status GdipCreateHatchBrush(HatchStyle hatchstyle, int forecol, int backcol, out Handle brush);
-Status GdipGetHatchStyle(Handle brush, out HatchStyle hatchstyle);
-Status GdipGetHatchForegroundColor(Handle brush, out int forecol);
-Status GdipGetHatchBackgroundColor(Handle brush, out int backcol);
-
-Status GdipCreateLineBrushI(ref GpPoint point1, ref GpPoint point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient);
-Status GdipCreateLineBrush(ref GpPointF point1, ref GpPointF point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient);
-Status GdipCreateLineBrushFromRectI(ref GpRect rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient);
-Status GdipCreateLineBrushFromRect(ref GpRectF rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient);
-Status GdipCreateLineBrushFromRectWithAngleI(ref GpRect rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient);
-Status GdipCreateLineBrushFromRectWithAngle(ref GpRectF rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient);
-Status GdipGetLineBlendCount(Handle brush, out int count);
-Status GdipGetLineBlend(Handle brush, float* blend, float* positions, int count);
-Status GdipSetLineBlend(Handle brush, float* blend, float* positions, int count);
-Status GdipGetLinePresetBlendCount(Handle brush, out int count);
-Status GdipGetLinePresetBlend(Handle brush, uint* blend, float* positions, int count);
-Status GdipSetLinePresetBlend(Handle brush, uint* blend, float* positions, int count);
-Status GdipGetLineWrapMode(Handle brush, out WrapMode wrapmode);
-Status GdipSetLineWrapMode(Handle brush, WrapMode wrapmode);
-Status GdipGetLineRect(Handle brush, out GpRectF rect);
-Status GdipGetLineColors(Handle brush, int* colors);
-Status GdipSetLineColors(Handle brush, int color1, int color2);
-Status GdipGetLineGammaCorrection(Handle brush, out int useGammaCorrection);
-Status GdipSetLineGammaCorrection(Handle brush, int useGammaCorrection);
-Status GdipSetLineSigmaBlend(Handle brush, float focus, float scale);
-Status GdipSetLineLinearBlend(Handle brush, float focus, float scale);
-Status GdipGetLineTransform(Handle brush, out Handle matrix);
-Status GdipSetLineTransform(Handle brush, Handle matrix);
-Status GdipResetLineTransform(Handle brush);
-Status GdipMultiplyLineTransform(Handle brush, Handle matrix, MatrixOrder order);
-Status GdipTranslateLineTransform(Handle brush, float dx, float dy, MatrixOrder order);
-Status GdipScaleLineTransform(Handle brush, float sx, float sy, MatrixOrder order);
-Status GdipRotateLineTransform(Handle brush, float angle, MatrixOrder order);
-
-Status GdipCreatePen1(int argb, float width, GraphicsUnit unit, out Handle pen);
-Status GdipCreatePen2(Handle brush, float width, GraphicsUnit unit, out Handle pen);
-Status GdipDeletePen(Handle pen);
-Status GdipClonePen(Handle pen, out Handle clonepen);
-Status GdipSetPenLineCap197819(Handle pen, LineCap startCap, LineCap endCap, DashCap dashCap);
-Status GdipGetPenStartCap(Handle pen, out LineCap startCap);
-Status GdipSetPenStartCap(Handle pen, LineCap startCap);
-Status GdipGetPenEndCap(Handle pen, out LineCap endCap);
-Status GdipSetPenEndCap(Handle pen, LineCap endCap);
-Status GdipGetPenDashCap197819(Handle pen, out DashCap endCap);
-Status GdipSetPenDashCap197819(Handle pen, DashCap endCap);
-Status GdipGetPenLineJoin(Handle pen, out LineJoin lineJoin);
-Status GdipSetPenLineJoin(Handle pen, LineJoin lineJoin);
-Status GdipGetPenMiterLimit(Handle pen, out float miterLimit);
-Status GdipSetPenMiterLimit(Handle pen, float miterLimit);
-Status GdipGetPenMode(Handle pen, out PenAlignment penMode);
-Status GdipSetPenMode(Handle pen, PenAlignment penMode);
-Status GdipGetPenTransform(Handle pen, out Handle matrix);
-Status GdipSetPenTransform(Handle pen, Handle matrix);
-Status GdipResetPenTransform(Handle pen);
-Status GdipMultiplyPenTransform(Handle pen, Handle matrix, MatrixOrder order);
-Status GdipTranslatePenTransform(Handle pen, float dx, float dy, MatrixOrder order);
-Status GdipScalePenTransform(Handle pen, float sx, float sy, MatrixOrder order);
-Status GdipRotatePenTransform(Handle pen, float angle, MatrixOrder order);
-Status GdipGetPenColor(Handle pen, out int argb);
-Status GdipSetPenColor(Handle pen, int argb);
-Status GdipGetPenWidth(Handle pen, out float width);
-Status GdipSetPenWidth(Handle pen, float width);
-Status GdipGetPenFillType(Handle pen, out PenType type);
-Status GdipGetPenBrushFill(Handle pen, out Handle brush);
-Status GdipSetPenBrushFill(Handle pen, Handle brush);
-Status GdipGetPenDashStyle(Handle pen, out DashStyle dashstyle);
-Status GdipSetPenDashStyle(Handle pen, DashStyle dashstyle);
-Status GdipGetPenDashOffset(Handle pen, out float offset);
-Status GdipSetPenDashOffset(Handle pen, float offset);
-Status GdipGetPenDashCount(Handle pen, out int count);
-Status GdipGetPenDashArray(Handle pen, float* dash, int count);
-Status GdipSetPenDashArray(Handle pen, float* dash, int count);
-Status GdipGetPenCompoundCount(Handle pen, out int count);
-Status GdipGetPenCompoundArray(Handle pen, float* dash, int count);
-Status GdipSetPenCompoundArray(Handle pen, float* dash, int count);
-
-Status GdipCreateRegion(out Handle region);
-Status GdipCreateRegionRect(ref GpRectF rect, out Handle region);
-Status GdipCreateRegionRectI(ref GpRect rect, out Handle region);
-Status GdipCreateRegionPath(Handle path, out Handle region);
-Status GdipCreateRegionHrgn(Handle hRgn, out Handle region);
-Status GdipDeleteRegion(Handle region);
-Status GdipSetInfinite(Handle region);
-Status GdipSetEmpty(Handle region);
-Status GdipCombineRegionRect(Handle region, ref GpRectF rect, CombineMode combineMode);
-Status GdipCombineRegionRectI(Handle region, ref GpRect rect, CombineMode combineMode);
-Status GdipCombineRegionPath(Handle region, Handle path, CombineMode combineMode);
-Status GdipCombineRegionRegion(Handle region, Handle region, CombineMode combineMode);
-Status GdipTranslateRegion(Handle region, float dx, float dy);
-Status GdipTranslateRegionI(Handle region, int dx, int dy);
-Status GdipTransformRegion(Handle region, Handle matrix);
-Status GdipGetRegionBounds(Handle region, Handle graphics, out GpRectF rect);
-Status GdipGetRegionHRgn(Handle region, Handle graphics, out Handle hRgn);
-Status GdipIsEmptyRegion(Handle region, Handle graphics, out int result);
-Status GdipIsInfiniteRegion(Handle region, Handle graphics, out int result);
-Status GdipIsEqualRegion(Handle region1, Handle region2, Handle graphics, out int result);
-Status GdipIsVisibleRegionPoint(Handle region, float x, float y, Handle graphics, out int result);
-Status GdipIsVisibleRegionRect(Handle region, float x, float y, float width, float height, Handle graphics, out int result);
-Status GdipIsVisibleRegionPointI(Handle region, int x, int y, Handle graphics, out int result);
-Status GdipIsVisibleRegionRectI(Handle region, int x, int y, int width, int height, Handle graphics, out int result);
-Status GdipGetRegionScansCount(Handle region, out int count, Handle matrix);
-Status GdipGetRegionScans(Handle region, GpRectF* rects, out int count, Handle matrix);
-
-Status GdipDisposeImage(Handle image);
-Status GdipImageForceValidation(Handle image);
-Status GdipLoadImageFromFileICM(wchar* filename, out Handle image);
-Status GdipLoadImageFromFile(wchar* filename, out Handle image);
-// Status GdipLoadImageFromStreamICM(IStream stream, out Handle image);
-// Status GdipLoadImageFromStream(IStream stream, out Handle image);
-// Status GdipGetImageRawFormat(Handle image, out GUID format);
-Status GdipGetImageEncodersSize(out int numEncoders, out int size);
-// Status GdipGetImageEncoders(int numEncoders, int size, GpImageCodecInfo* encoders);
-// Status GdipSaveImageToFile(Handle image, wchar* filename, ref GUID clsidEncoder, GpEncoderParameters* encoderParams);
-// Status GdipSaveImageToStream(Handle image, IStream stream, ref GUID clsidEncoder, GpEncoderParameters* encoderParams);
-// Status GdipSaveAdd(Handle image, GpEncoderParameters* encoderParams);
-// Status GdipSaveAddImage(Handle image, Handle newImage, GpEncoderParameters* encoderParams);
-Status GdipCloneImage(Handle image, out Handle cloneImage);
-Status GdipGetImageType(Handle image, out int type);
-Status GdipGetImageFlags(Handle image, out uint flags);
-Status GdipGetImageWidth(Handle image, out uint width);
-Status GdipGetImageHeight(Handle image, out uint height);
-Status GdipGetImageHorizontalResolution(Handle image, out float resolution);
-Status GdipGetImageVerticalResolution(Handle image, out float resolution);
-Status GdipGetPropertyCount(Handle image, out int numOfProperty);
-Status GdipGetPropertyIdList(Handle image, int numOfProperty, int* list);
-Status GdipGetImagePixelFormat(Handle image, out PixelFormat format);
-Status GdipGetImageDimension(Handle image, out float width, out float height);
-Status GdipGetImageThumbnail(Handle image, int thumbWidth, int thumbHeight, out Handle thumbImage, GpGetThumbnailImageAbort callback, void* callbackData);
-// Status GdipImageGetFrameCount(Handle image, ref GUID dimensionID, out int count);
-// Status GdipImageSelectActiveFrame(Handle image, ref GUID dimensionID, int frameCount);
-Status GdipImageGetFrameDimensionsCount(Handle image, out int count);
-// Status GdipImageGetFrameDimensionsList(Handle image, GUID* dimensionIDs, int count);
-Status GdipImageRotateFlip(Handle image, RotateFlipType rotateFlipType);
-Status GdipGetPropertyItemSize(Handle image, int propId, out uint propSize);
-Status GdipGetPropertyItem(Handle image, int propId, uint propSize, GpPropertyItem* buffer);
-Status GdipSetPropertyItem(Handle image, ref GpPropertyItem buffer);
-Status GdipRemovePropertyItem(Handle image, int propId);
-Status GdipGetPropertySize(Handle image, out uint totalBufferSize, ref int numProperties);
-Status GdipGetAllPropertyItems(Handle image, uint totalBufferSize, int numProperties, GpPropertyItem* allItems);
-Status GdipGetImageBounds(Handle image, out GpRectF srcRect, out GraphicsUnit srcUnit);
-// Status GdipGetEncoderParameterListSize(Handle image, ref GUID clsidEncoder, out uint size);
-// Status GdipGetEncoderParameterList(Handle image, ref GUID clsidEncoder, uint size, GpEncoderParameters* buffer);
-Status GdipGetImagePaletteSize(Handle image, out int size);
-Status GdipGetImagePalette(Handle image, GpColorPalette* palette, int size);
-Status GdipSetImagePalette(Handle image, GpColorPalette* palette);
-
-Status GdipCreateBitmapFromScan0(int width, int height, int stride, PixelFormat format, ubyte* scan0, out Handle bitmap);
-Status GdipCreateBitmapFromHBITMAP(Handle hbitmap, Handle hpalette, out Handle bitmap);
-Status GdipCreateBitmapFromHICON(Handle hicon, out Handle bitmap);
-Status GdipCreateBitmapFromFileICM(wchar* fileName, out Handle bitmap);
-Status GdipCreateBitmapFromFile(wchar* fileName, out Handle bitmap);
-// Status GdipCreateBitmapFromStreamICM(IStream stream, out Handle bitmap);
-// Status GdipCreateBitmapFromStream(IStream stream, out Handle bitmap);
-Status GdipCreateBitmapFromGraphics(int width, int height, Handle graphics, out Handle bitmap);
-Status GdipCloneBitmapArea(float x, float y, float width, float height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap);
-Status GdipCloneBitmapAreaI(int x, int y, int width, int height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap);
-Status GdipBitmapGetPixel(Handle bitmap, int x, int y, out int color);
-Status GdipBitmapSetPixel(Handle bitmap, int x, int y, int color);
-Status GdipBitmapLockBits(Handle bitmap, GpRect* rect, ImageLockMode flags, PixelFormat format, GpBitmapData* lockedBitmapData);
-Status GdipBitmapUnlockBits(Handle bitmap, GpBitmapData* lockedBitmapData);
-Status GdipBitmapSetResolution(Handle bitmap, float xdpi, float ydpi);
-Status GdipCreateHICONFromBitmap(Handle bitmap, out Handle hbmReturn);
-Status GdipCreateHBITMAPFromBitmap(Handle bitmap, out Handle hbmReturn, int background);
-
-Status GdipCreateImageAttributes(out Handle imageattr);
-Status GdipDisposeImageAttributes(Handle imageattr);
-Status GdipSetImageAttributesColorMatrix(Handle imageattr, ColorAdjustType type, int enableFlag, GpColorMatrix* colorMatrix, GpColorMatrix* grayMatrix, ColorMatrixFlag flags);
-Status GdipSetImageAttributesThreshold(Handle imageattr, ColorAdjustType type, int enableFlag, float threshold);
-Status GdipSetImageAttributesGamma(Handle imageattr, ColorAdjustType type, int enableFlag, float gamma);
-Status GdipSetImageAttributesNoOp(Handle imageattr, ColorAdjustType type, int enableFlag);
-Status GdipSetImageAttributesColorKeys(Handle imageattr, ColorAdjustType type, int enableFlag, int colorLow, int colorHigh);
-Status GdipSetImageAttributesOutputChannel(Handle imageattr, ColorAdjustType type, int enableFlag, ColorChannelFlag flags);
-Status GdipSetImageAttributesOutputChannelColorProfile(Handle imageattr, ColorAdjustType type, int enableFlag, wchar* colorProfileFilename);
-Status GdipSetImageAttributesWrapMode(Handle imageattr, WrapMode wrap, int argb, int clamp);
-
-Status GdipNewInstalledFontCollection(out Handle fontCollection);
-Status GdipNewPrivateFontCollection(out Handle fontCollection);
-Status GdipDeletePrivateFontCollection(Handle fontCollection);
-Status GdipPrivateAddFontFile(Handle fontCollection, wchar* filename);
-Status GdipPrivateAddMemoryFont(Handle fontCollection, void* memory, int length);
-Status GdipGetFontCollectionFamilyCount(Handle fontCollection, out int numFound);
-Status GdipGetFontCollectionFamilyList(Handle fontCollection, int numSought, Handle* gpfamilies, out int numFound);
-
-Status GdipCreateFontFamilyFromName(wchar* name, Handle fontCollection, out Handle FontFamily);
-Status GdipDeleteFontFamily(Handle FontFamily);
-Status GdipCloneFontFamily(Handle FontFamily, out Handle clonedFontFamily);
-Status GdipGetFamilyName(Handle family, wchar* name, int language);
-Status GdipGetGenericFontFamilyMonospace(out Handle nativeFamily);
-Status GdipGetGenericFontFamilySerif(out Handle nativeFamily);
-Status GdipGetGenericFontFamilySansSerif(out Handle nativeFamily);
-Status GdipGetEmHeight(Handle family, FontStyle style, out short EmHeight);
-Status GdipGetCellAscent(Handle family, FontStyle style, out short CellAscent);
-Status GdipGetCellDescent(Handle family, FontStyle style, out short CellDescent);
-Status GdipGetLineSpacing(Handle family, FontStyle style, out short LineSpacing);
-Status GdipIsStyleAvailable(Handle family, FontStyle style, out int IsStyleAvailable);
-
-Status GdipCreateFont(Handle fontFamily, float emSize, int style, int unit, out Handle font);
-Status GdipCreateFontFromDC(Handle hdc, out Handle font);
-Status GdipDeleteFont(Handle font);
-Status GdipCloneFont(Handle font, out Handle cloneFont);
-Status GdipGetFontSize(Handle font, out float size);
-Status GdipGetFontHeight(Handle font, Handle graphics, out float height);
-Status GdipGetFontHeightGivenDPI(Handle font, float dpi, out float height);
-Status GdipGetFontStyle(Handle font, out FontStyle style);
-Status GdipGetFontUnit(Handle font, out GraphicsUnit unit);
-Status GdipGetFamily(Handle font, out Handle family);
-Status GdipCreateFontFromLogfontW( Handle hdc, ref LOGFONTW logfont, out Handle font);
-Status GdipCreateFontFromLogfontA( Handle hdc, ref LOGFONTA logfont, out Handle font );
-
-Status GdipGetLogFontW(Handle font, Handle graphics, out LOGFONTW logfontW);
-alias GdipGetLogFontW GdipGetLogFont;
-
-Status GdipCreateStringFormat(StringFormatFlags formatAttributes, int language, out Handle format);
-Status GdipDeleteStringFormat(Handle format);
-Status GdipGetStringFormatFlags(Handle format, out StringFormatFlags flags);
-Status GdipSetStringFormatFlags(Handle format, StringFormatFlags flags);
-Status GdipGetStringFormatAlign(Handle format, out StringAlignment alignment);
-Status GdipSetStringFormatAlign(Handle format, StringAlignment alignment);
-Status GdipGetStringFormatLineAlign(Handle format, out StringAlignment alignment);
-Status GdipSetStringFormatLineAlign(Handle format, StringAlignment alignment);
-Status GdipGetStringFormatTrimming(Handle format, out StringTrimming trimming);
-Status GdipSetStringFormatTrimming(Handle format, StringTrimming trimming);
-
-Status GdipCreatePath(FillMode brushMode, out Handle path);
-Status GdipCreatePath2(GpPointF*, ubyte*, int, FillMode, out Handle);
-Status GdipCreatePath2I(GpPoint*, ubyte*, int, FillMode, out Handle);
-Status GdipDeletePath(Handle path);
-Status GdipClonePath(Handle path, out Handle clonepath);
-Status GdipResetPath(Handle path);
-Status GdipGetPathFillMode(Handle path, out FillMode fillmode);
-Status GdipSetPathFillMode(Handle path, FillMode fillmode);
-Status GdipStartPathFigure(Handle path);
-Status GdipClosePathFigure(Handle path);
-Status GdipClosePathFigures(Handle path);
-Status GdipSetPathMarker(Handle path);
-Status GdipClearPathMarkers(Handle path);
-Status GdipReversePath(Handle path);
-Status GdipGetPathLastPoint(Handle path, out GpPointF lastPoint);
-Status GdipAddPathLine(Handle path, float x1, float y1, float x2, float y2);
-Status GdipAddPathLineI(Handle path, int x1, int y1, int x2, int y2);
-Status GdipAddPathLine2(Handle path, GpPointF* points, int count);
-Status GdipAddPathLine2I(Handle path, GpPoint* points, int count);
-Status GdipAddPathArc(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle);
-Status GdipAddPathArcI(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle);
-Status GdipAddPathBezier(Handle path, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4);
-Status GdipAddPathBezierI(Handle path, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
-Status GdipAddPathBeziers(Handle path, GpPointF* points, int count);
-Status GdipAddPathBeziersI(Handle path, GpPoint* points, int count);
-Status GdipAddPathCurve(Handle path, GpPointF* points, int count);
-Status GdipAddPathCurveI(Handle path, GpPoint* points, int count);
-Status GdipAddPathCurve2(Handle path, GpPointF* points, int count, float tension);
-Status GdipAddPathCurve2I(Handle path, GpPoint* points, int count, float tension);
-Status GdipAddPathCurve3(Handle path, GpPointF* points, int count, int offset, int numberOfSegments, float tension);
-Status GdipAddPathCurve3I(Handle path, GpPoint* points, int count, int offset, int numberOfSegments, float tension);
-Status GdipAddPathClosedCurve(Handle path, GpPointF* points, int count);
-Status GdipAddPathClosedCurveI(Handle path, GpPoint* points, int count);
-Status GdipAddPathClosedCurve2(Handle path, GpPointF* points, int count, float tension);
-Status GdipAddPathClosedCurve2I(Handle path, GpPoint* points, int count, float tension);
-Status GdipAddPathRectangle(Handle path, float x, float y, float width, float height);
-Status GdipAddPathRectangleI(Handle path, int x, int y, int width, int height);
-Status GdipAddPathRectangles(Handle path, GpRectF* rects, int count);
-Status GdipAddPathRectanglesI(Handle path, GpRect* rects, int count);
-Status GdipAddPathEllipse(Handle path, float x, float y, float width, float height);
-Status GdipAddPathEllipseI(Handle path, int x, int y, int width, int height);
-Status GdipAddPathPie(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle);
-Status GdipAddPathPieI(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle);
-Status GdipAddPathPolygon(Handle path, GpPointF* points, int count);
-Status GdipAddPathPolygonI(Handle path, GpPoint* points, int count);
-Status GdipAddPathPath(Handle path, Handle addingPath, int connect);
-Status GdipAddPathString(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRectF layoutRect, Handle format);
-Status GdipAddPathStringI(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRect layoutRect, Handle format);
-Status GdipTransformPath(Handle path, Handle matrix);
-Status GdipGetPathWorldBounds(Handle path, out GpRectF bounds, Handle matrix, Handle pen);
-Status GdipFlattenPath(Handle path, Handle matrix, float flatness);
-Status GdipWidenPath(Handle path, Handle pen, Handle matrix, float flatness);
-Status GdipWindingModeOutline(Handle path, Handle matrix, float flatness);
-Status GdipWarpPath(Handle path, Handle matrix, GpPointF* points, int count, float srcx, float srcy, float srcwidth, float srcwidth, WarpMode warpMode, float flatness);
-Status GdipGetPointCount(Handle path, out int count);
-Status GdipGetPathTypes(Handle path, byte* types, int count);
-Status GdipGetPathPoints(Handle path, GpPointF* points, int count);
-Status GdipIsVisiblePathPoint(Handle path, float x, float y, Handle graphics, out int result);
-Status GdipIsVisiblePathPointI(Handle path, int x, int y, Handle graphics, out int result);
-Status GdipIsOutlineVisiblePathPoint(Handle path, float x, float y, Handle pen, Handle graphics, out int result);
-Status GdipIsOutlineVisiblePathPointI(Handle path, int x, int y, Handle pen, Handle graphics, out int result);
-Status GdipDrawPath(Handle graphics, Handle pen, Handle path);
-
-
-Status GdipCreatePathIter(out Handle iterator, Handle path);
-Status GdipDeletePathIter(Handle iterator);
-Status GdipPathIterNextSubpath(Handle iterator, out int resultCount, out int startIndex, out int endIndex, out int isClosed);
-Status GdipPathIterNextSubpathPath(Handle iterator, out int resultCount, Handle path, out int isClosed);
-Status GdipPathIterNextPathType(Handle iterator, out int resultCount, out ubyte pathType, out int startIndex, out int endIndex);
-Status GdipPathIterNextMarker(Handle iterator, out int resultCount, out int startIndex, out int endIndex);
-Status GdipPathIterNextMarkerPath(Handle iterator, out int resultCount, Handle path);
-Status GdipPathIterGetCount(Handle iterator, out int count);
-Status GdipPathIterGetSubpathCount(Handle iterator, out int count);
-Status GdipPathIterHasCurve(Handle iterator, out int hasCurve);
-Status GdipPathIterRewind(Handle iterator);
-Status GdipPathIterEnumerate(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int count);
-Status GdipPathIterCopyData(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int startIndex, int endIndex);
-
-Status GdipCreatePathGradient(GpPointF* points, int count, WrapMode wrapMode, out Handle polyGradient);
-Status GdipCreatePathGradientI(GpPoint* points, int count, WrapMode wrapMode, out Handle polyGradient);
-Status GdipCreatePathGradientFromPath(Handle path, out Handle polyGradient);
-Status GdipGetPathGradientCenterColor(Handle brush, out int colors);
-Status GdipSetPathGradientCenterColor(Handle brush, int colors);
-Status GdipGetPathGradientSurroundColorCount(Handle brush, out int count);
-Status GdipGetPathGradientSurroundColorsWithCount(Handle brush, int* color, ref int count);
-Status GdipSetPathGradientSurroundColorsWithCount(Handle brush, int* color, ref int count);
-Status GdipGetPathGradientCenterPoint(Handle brush, ref GpPointF point);
-Status GdipSetPathGradientCenterPoint(Handle brush, ref GpPointF point);
-Status GdipGetPathGradientRect(Handle brush, ref GpRectF rect);
-Status GdipGetPathGradientBlendCount(Handle brush, out int count);
-Status GdipGetPathGradientBlend(Handle brush, float* blend, float* positions, int count);
-Status GdipSetPathGradientBlend(Handle brush, float* blend, float* positions, int count);
-Status GdipGetPathGradientPresetBlendCount(Handle brush, out int count);
-Status GdipGetPathGradientPresetBlend(Handle brush, int* blend, float* positions, int count);
-Status GdipSetPathGradientPresetBlend(Handle brush, int* blend, float* positions, int count);
-Status GdipSetPathGradientSigmaBlend(Handle brush, float focus, float scale);
-Status GdipSetPathGradientLinearBlend(Handle brush, float focus, float scale);
-Status GdipGetPathGradientTransform(Handle brush, out Handle matrix);
-Status GdipSetPathGradientTransform(Handle brush, Handle matrix);
-Status GdipResetPathGradientTransform(Handle brush);
-Status GdipMultiplyPathGradientTransform(Handle brush, Handle matrix, MatrixOrder order);
-Status GdipRotatePathGradientTransform(Handle brush, float angle, MatrixOrder order);
-Status GdipTranslatePathGradientTransform(Handle brush, float dx, float dy, MatrixOrder order);
-Status GdipScalePathGradientTransform(Handle brush, float sx, float sy, MatrixOrder order);
-Status GdipGetPathGradientFocusScales(Handle brush, out float xScale, out float yScale);
-Status GdipSetPathGradientFocusScales(Handle brush, float xScale, float yScale);
-Status GdipGetPathGradientWrapMode(Handle brush, out WrapMode wrapMode);
-Status GdipSetPathGradientWrapMode(Handle brush, WrapMode wrapMode);
-
-//added
-
-Status GdipResetTextureTransform( Handle brush );
-Status GdipScaleTextureTransform( Handle brush, float sx, float sy, MatrixOrder order );
-Status GdipTranslateTextureTransform( Handle brush, float dx, float dy, MatrixOrder order);
-Status GdipStringFormatGetGenericDefault(out Handle format);
-Status GdipStringFormatGetGenericTypographic(out Handle format);
-Status GdipSetStringFormatHotkeyPrefix(Handle format, int hotkeyPrefix);
-Status GdipSetStringFormatTabStops( Handle format, float firstTabOffset, int count, float* tabStops);
-
-void loadLib_Gdip(){
-    // do nothing in this version
-}
-
-}
-else{ // version(!STATIC_GDIPLUS)
-Status function( uint* token, GdiplusStartupInput* input, GdiplusStartupOutput* output) GdiplusStartup;
-void   function(uint token) GdiplusShutdown;
-Status function(Handle hdc, out Handle graphics) GdipCreateFromHDC;
-Status function(Handle hdc, Handle hDevice, out Handle graphics) GdipCreateFromHDC2;
-Status function(Handle hwnd, out Handle graphics) GdipCreateFromHWND;
-Status function(Handle image, out Handle graphics) GdipGetImageGraphicsContext;
-Status function(Handle graphics) GdipDeleteGraphics;
-Status function(Handle graphics, out Handle hdc) GdipGetDC;
-Status function(Handle graphics, Handle hdc) GdipReleaseDC;
-Status function(Handle graphics, Handle srcgraphics, CombineMode combineMode) GdipSetClipGraphics;
-Status function(Handle graphics, int x, int y, int width, int height, CombineMode combineMode) GdipSetClipRectI;
-Status function(Handle graphics, float x, float y, float width, float height, CombineMode combineMode) GdipSetClipRect;
-Status function(Handle graphics, Handle path, CombineMode combineMode) GdipSetClipPath;
-Status function(Handle graphics, Handle region, CombineMode combineMode) GdipSetClipRegion;
-Status function(Handle graphics, HRGN hRgn, CombineMode combineMode) GdipSetClipHrgn;
-Status function(Handle graphics, out Handle region) GdipGetClip;
-Status function(Handle graphics) GdipResetClip;
-Status function(Handle graphics, out uint state) GdipSaveGraphics;
-Status function(Handle graphics, int state) GdipRestoreGraphics;
-Status function(Handle graphics, FlushIntention intention) GdipFlush;
-Status function(Handle graphics, float sx, float sy, MatrixOrder order) GdipScaleWorldTransform;
-Status function(Handle graphics, float angle, MatrixOrder order) GdipRotateWorldTransform;
-Status function(Handle graphics, float dx, float dy, MatrixOrder order) GdipTranslateWorldTransform;
-Status function(Handle graphics, Handle matrix, MatrixOrder order) GdipMultiplyWorldTransform;
-Status function(Handle graphics) GdipResetWorldTransform;
-Status function(Handle graphics, ref GpRectF dstrect, ref GpRectF srcrect, GraphicsUnit unit, out int state) GdipBeginContainer;
-Status function(Handle graphics, ref GpRect dstrect, ref GpRect srcrect, GraphicsUnit unit, out int state) GdipBeginContainerI;
-Status function(Handle graphics, out int state) GdipBeginContainer2;
-Status function(Handle graphics, int state) GdipEndContainer;
-Status function(Handle graphics, out float dpi) GdipGetDpiX;
-Status function(Handle graphics, out float dpi) GdipGetDpiY;
-Status function(Handle graphics, out GraphicsUnit unit) GdipGetPageUnit;
-Status function(Handle graphics, GraphicsUnit unit) GdipSetPageUnit;
-Status function(Handle graphics, out float scale) GdipGetPageScale;
-Status function(Handle graphics, float scale) GdipSetPageScale;
-Status function(Handle graphics, Handle matrix) GdipGetWorldTransform;
-Status function(Handle graphics, Handle matrix) GdipSetWorldTransform;
-Status function(Handle graphics, out CompositingMode compositingMode) GdipGetCompositingMode;
-Status function(Handle graphics, CompositingMode compositingMode) GdipSetCompositingMode;
-Status function(Handle graphics, out CompositingQuality compositingQuality) GdipGetCompositingQuality;
-Status function(Handle graphics, CompositingQuality compositingQuality) GdipSetCompositingQuality;
-Status function(Handle graphics, out InterpolationMode interpolationMode) GdipGetInterpolationMode;
-Status function(Handle graphics, InterpolationMode interpolationMode) GdipSetInterpolationMode;
-Status function(Handle graphics, out SmoothingMode smoothingMode) GdipGetSmoothingMode;
-Status function(Handle graphics, SmoothingMode smoothingMode) GdipSetSmoothingMode;
-Status function(Handle graphics, out PixelOffsetMode pixelOffsetMode) GdipGetPixelOffsetMode;
-Status function(Handle graphics, PixelOffsetMode pixelOffsetMode) GdipSetPixelOffsetMode;
-Status function(Handle graphics, out uint textContrast) GdipGetTextContrast;
-Status function(Handle graphics, uint textContrast) GdipSetTextContrast;
-Status function(Handle graphics, int color) GdipGraphicsClear;
-Status function(Handle graphics, Handle pen, float x1, float y1, float x2, float y2) GdipDrawLine;
-Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawLines;
-Status function(Handle graphics, Handle pen, int x1, int y1, int x2, int y2) GdipDrawLineI;
-Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawLinesI;
-Status function(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipDrawArc;
-Status function(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipDrawArcI;
-Status function(Handle graphics, Handle pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) GdipDrawBezier;
-Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawBeziers;
-Status function(Handle graphics, Handle pen, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) GdipDrawBezierI;
-Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawBeziersI;
-Status function(Handle graphics, Handle pen, float x, float y, float width, float height) GdipDrawRectangle;
-Status function(Handle graphics, Handle pen, GpRectF* rects, int count) GdipDrawRectangles;
-Status function(Handle graphics, Handle pen, int x, int y, int width, int height) GdipDrawRectangleI;
-Status function(Handle graphics, Handle pen, GpRect* rects, int count) GdipDrawRectanglesI;
-Status function(Handle graphics, Handle pen, float x, float y, float width, float height) GdipDrawEllipse;
-Status function(Handle graphics, Handle pen, int x, int y, int width, int height) GdipDrawEllipseI;
-Status function(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipDrawPie;
-Status function(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipDrawPieI;
-Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawPolygon;
-Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawPolygonI;
-Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawCurve;
-Status function(Handle graphics, Handle pen, GpPointF* points, int count, float tension) GdipDrawCurve2;
-Status function(Handle graphics, Handle pen, GpPointF* points, int count, int offset, int numberOfSegments, float tension) GdipDrawCurve3;
-Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawCurveI;
-Status function(Handle graphics, Handle pen, GpPoint* points, int count, float tension) GdipDrawCurve2I;
-Status function(Handle graphics, Handle pen, GpPoint* points, int count, int offset, int numberOfSegments, float tension) GdipDrawCurve3I;
-Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawClosedCurve;
-Status function(Handle graphics, Handle pen, GpPointF* points, int count, float tension) GdipDrawClosedCurve2;
-Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawClosedCurveI;
-Status function(Handle graphics, Handle pen, GpPoint* points, int count, float tension) GdipDrawClosedCurve2I;
-Status function(Handle graphics, Handle brush, int x, int y, int width, int height) GdipFillRectangleI;
-Status function(Handle graphics, Handle brush, float x, float y, float width, float height) GdipFillRectangle;
-Status function(Handle graphics, Handle brush, GpRect* rects, int count) GdipFillRectanglesI;
-Status function(Handle graphics, Handle brush, GpRectF* rects, int count) GdipFillRectangles;
-Status function(Handle graphics, Handle brush, GpPointF* rects, int count, FillMode fillMode) GdipFillPolygon;
-Status function(Handle graphics, Handle brush, GpPoint* rects, int count, FillMode fillMode) GdipFillPolygonI;
-Status function(Handle graphics, Handle brush, float x, float y, float width, float height) GdipFillEllipse;
-Status function(Handle graphics, Handle brush, int x, int y, int width, int height) GdipFillEllipseI;
-Status function(Handle graphics, Handle brush, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipFillPie;
-Status function(Handle graphics, Handle brush, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipFillPieI;
-Status function(Handle graphics, Handle brush, Handle path) GdipFillPath;
-Status function(Handle graphics, Handle brush, GpPointF* points, int count) GdipFillClosedCurve;
-Status function(Handle graphics, Handle brush, GpPoint* points, int count) GdipFillClosedCurveI;
-Status function(Handle graphics, Handle brush, GpPointF* points, int count, FillMode fillMode, float tension) GdipFillClosedCurve2;
-Status function(Handle graphics, Handle brush, GpPoint* points, int count, FillMode fillMode, float tension) GdipFillClosedCurve2I;
-Status function(Handle graphics, Handle brush, Handle region) GdipFillRegion;
-Status function(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, Handle brush) GdipDrawString;
-Status function(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, ref GpRectF boundingBox, int* codepointsFitted, int* linesFitted) GdipMeasureString;
-Status function(Handle format, out int count) GdipGetStringFormatMeasurableCharacterRangeCount;
-Status function(Handle format, out Handle newFormat) GdipCloneStringFormat;
-Status function(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, int regionCount, Handle* regions) GdipMeasureCharacterRanges;
-Status function(Handle graphics, Handle image, float x, float y) GdipDrawImage;
-Status function(Handle graphics, Handle image, int x, int y) GdipDrawImageI;
-Status function(Handle graphics, Handle image, float x, float y, float width, float height) GdipDrawImageRect;
-Status function(Handle graphics, Handle image, int x, int y, int width, int height) GdipDrawImageRectI;
-Status function(Handle graphics, Handle image, float x, float y, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit) GdipDrawImagePointRect;
-Status function(Handle graphics, Handle image, int x, int y, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit) GdipDrawImagePointRectI;
-Status function(Handle graphics, Handle image, float dstx, float dsty, float dstwidth, float dstheight, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImageRectRect;
-Status function(Handle graphics, Handle image, int dstx, int dsty, int dstwidth, int dstheight, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImageRectRectI;
-Status function(Handle graphics, Handle image, GpPointF* dstpoints, int count) GdipDrawImagePoints;
-Status function(Handle graphics, Handle image, GpPoint* dstpoints, int count) GdipDrawImagePointsI;
-Status function(Handle graphics, Handle image, GpPointF* dstpoints, int count, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImagePointsRect;
-Status function(Handle graphics, Handle image, GpPoint* dstpoints, int count, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImagePointsRectI;
-Status function(Handle graphics, float x, float y, out int result) GdipIsVisiblePoint;
-Status function(Handle graphics, int x, int y, out int result) GdipIsVisiblePointI;
-Status function(Handle graphics, float x, float y, float width, float height, out int result) GdipIsVisibleRect;
-Status function(Handle graphics, int x, int y, int width, int height, out int result) GdipIsVisibleRectI;
-Status function(Handle graphics, out TextRenderingHint mode) GdipGetTextRenderingHint;
-Status function(Handle graphics, TextRenderingHint mode) GdipSetTextRenderingHint;
-Status function(Handle graphics, out GpRectF rect) GdipGetClipBounds;
-Status function(Handle graphics, out GpRect rect) GdipGetClipBoundsI;
-Status function(Handle graphics, out GpRectF rect) GdipGetVisibleClipBounds;
-Status function(Handle graphics, out GpRect rect) GdipGetVisibleClipBoundsI;
-Status function(Handle graphics, out int result) GdipIsClipEmpty;
-Status function(Handle graphics, out int result) GdipIsVisibleClipEmpty;
-Status function(Handle graphics, out int x, out int y) GdipGetRenderingOrigin;
-Status function(Handle graphics, int x, int y) GdipSetRenderingOrigin;
-Status function(Handle graphics, ref int argb) GdipGetNearestColor;
-Status function(Handle graphics, uint sizeData, ubyte* data) GdipComment;
-Status function(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPointF* points, int count) GdipTransformPoints;
-Status function(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPoint* points, int count) GdipTransformPointsI;
-Status function(out Handle matrix) GdipCreateMatrix;
-Status function(float m11, float m12, float m21, float m22, float dx, float dy, out Handle matrix) GdipCreateMatrix2;
-Status function(ref GpRectF rect, GpPointF* dstplg, out Handle matrix) GdipCreateMatrix3;
-Status function(ref GpRect rect, GpPoint* dstplg, out Handle matrix) GdipCreateMatrix3I;
-Status function(Handle matrix) GdipDeleteMatrix;
-Status function(Handle matrix, out Handle cloneMatrix) GdipCloneMatrix;
-Status function(Handle matrix, float* matrixOut) GdipGetMatrixElements;
-Status function(Handle matrix, float m11, float m12, float m21, float m22, float xy, float dy) GdipSetMatrixElements;
-Status function(Handle matrix) GdipInvertMatrix;
-Status function(Handle matrix, Handle matrix2, MatrixOrder order) GdipMultiplyMatrix;
-Status function(Handle matrix, float scaleX, float scaleY, MatrixOrder order) GdipScaleMatrix;
-Status function(Handle matrix, float shearX, float shearY, MatrixOrder order) GdipShearMatrix;
-Status function(Handle matrix, float angle, MatrixOrder order) GdipRotateMatrix;
-Status function(Handle matrix, float offsetX, float offsetY, MatrixOrder order) GdipTranslateMatrix;
-Status function(Handle matrix, out int result) GdipIsMatrixIdentity;
-Status function(Handle matrix, out int result) GdipIsMatrixInvertible;
-Status function(Handle matrix, GpPointF *pts, int count) GdipTransformMatrixPoints;
-Status function(Handle brush, out BrushType type ) GdipGetBrushType;
-Status function(Handle brush, out Handle cloneBrush) GdipCloneBrush;
-Status function(Handle brush) GdipDeleteBrush;
-Status function(int color, out Handle brush) GdipCreateSolidFill;
-Status function(Handle brush, out int color) GdipGetSolidFillColor;
-Status function(Handle brush, int color) GdipSetSolidFillColor;
-Status function(Handle image, WrapMode wrapMode, out Handle texture) GdipCreateTexture;
-Status function(Handle image, WrapMode wrapMode, float x, float y, float width, float height, out Handle texture) GdipCreateTexture2;
-Status function(Handle image, WrapMode wrapMode, int x, int y, int width, int height, out Handle texture) GdipCreateTexture2I;
-Status function(Handle brush, out Handle image) GdipGetTextureImage;
-Status function(Handle brush, out Handle matrix) GdipGetTextureTransform;
-Status function(Handle brush, Handle matrix) GdipSetTextureTransform;
-Status function(Handle brush, out WrapMode wrapmode) GdipGetTextureWrapMode;
-Status function(Handle brush, WrapMode wrapmode) GdipSetTextureWrapMode;
-Status function(HatchStyle hatchstyle, int forecol, int backcol, out Handle brush) GdipCreateHatchBrush;
-Status function(Handle brush, out HatchStyle hatchstyle) GdipGetHatchStyle;
-Status function(Handle brush, out int forecol) GdipGetHatchForegroundColor;
-Status function(Handle brush, out int backcol) GdipGetHatchBackgroundColor;
-Status function(ref GpPoint point1, ref GpPoint point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushI;
-Status function(ref GpPointF point1, ref GpPointF point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrush;
-Status function(ref GpRect rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRectI;
-Status function(ref GpRectF rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRect;
-Status function(ref GpRect rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRectWithAngleI;
-Status function(ref GpRectF rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRectWithAngle;
-Status function(Handle brush, out int count) GdipGetLineBlendCount;
-Status function(Handle brush, float* blend, float* positions, int count) GdipGetLineBlend;
-Status function(Handle brush, float* blend, float* positions, int count) GdipSetLineBlend;
-Status function(Handle brush, out int count) GdipGetLinePresetBlendCount;
-Status function(Handle brush, uint* blend, float* positions, int count) GdipGetLinePresetBlend;
-Status function(Handle brush, uint* blend, float* positions, int count) GdipSetLinePresetBlend;
-Status function(Handle brush, out WrapMode wrapmode) GdipGetLineWrapMode;
-Status function(Handle brush, WrapMode wrapmode) GdipSetLineWrapMode;
-Status function(Handle brush, out GpRectF rect) GdipGetLineRect;
-Status function(Handle brush, int* colors) GdipGetLineColors;
-Status function(Handle brush, int color1, int color2) GdipSetLineColors;
-Status function(Handle brush, out int useGammaCorrection) GdipGetLineGammaCorrection;
-Status function(Handle brush, int useGammaCorrection) GdipSetLineGammaCorrection;
-Status function(Handle brush, float focus, float scale) GdipSetLineSigmaBlend;
-Status function(Handle brush, float focus, float scale) GdipSetLineLinearBlend;
-Status function(Handle brush, out Handle matrix) GdipGetLineTransform;
-Status function(Handle brush, Handle matrix) GdipSetLineTransform;
-Status function(Handle brush) GdipResetLineTransform;
-Status function(Handle brush, Handle matrix, MatrixOrder order) GdipMultiplyLineTransform;
-Status function(Handle brush, float dx, float dy, MatrixOrder order) GdipTranslateLineTransform;
-Status function(Handle brush, float sx, float sy, MatrixOrder order) GdipScaleLineTransform;
-Status function(Handle brush, float angle, MatrixOrder order) GdipRotateLineTransform;
-Status function(int argb, float width, GraphicsUnit unit, out Handle pen) GdipCreatePen1;
-Status function(Handle brush, float width, GraphicsUnit unit, out Handle pen) GdipCreatePen2;
-Status function(Handle pen) GdipDeletePen;
-Status function(Handle pen, out Handle clonepen) GdipClonePen;
-Status function(Handle pen, LineCap startCap, LineCap endCap, DashCap dashCap) GdipSetPenLineCap197819;
-Status function(Handle pen, out LineCap startCap) GdipGetPenStartCap;
-Status function(Handle pen, LineCap startCap) GdipSetPenStartCap;
-Status function(Handle pen, out LineCap endCap) GdipGetPenEndCap;
-Status function(Handle pen, LineCap endCap) GdipSetPenEndCap;
-Status function(Handle pen, out DashCap endCap) GdipGetPenDashCap197819;
-Status function(Handle pen, DashCap endCap) GdipSetPenDashCap197819;
-Status function(Handle pen, out LineJoin lineJoin) GdipGetPenLineJoin;
-Status function(Handle pen, LineJoin lineJoin) GdipSetPenLineJoin;
-Status function(Handle pen, out float miterLimit) GdipGetPenMiterLimit;
-Status function(Handle pen, float miterLimit) GdipSetPenMiterLimit;
-Status function(Handle pen, out PenAlignment penMode) GdipGetPenMode;
-Status function(Handle pen, PenAlignment penMode) GdipSetPenMode;
-Status function(Handle pen, out Handle matrix) GdipGetPenTransform;
-Status function(Handle pen, Handle matrix) GdipSetPenTransform;
-Status function(Handle pen) GdipResetPenTransform;
-Status function(Handle pen, Handle matrix, MatrixOrder order) GdipMultiplyPenTransform;
-Status function(Handle pen, float dx, float dy, MatrixOrder order) GdipTranslatePenTransform;
-Status function(Handle pen, float sx, float sy, MatrixOrder order) GdipScalePenTransform;
-Status function(Handle pen, float angle, MatrixOrder order) GdipRotatePenTransform;
-Status function(Handle pen, out int argb) GdipGetPenColor;
-Status function(Handle pen, int argb) GdipSetPenColor;
-Status function(Handle pen, out float width) GdipGetPenWidth;
-Status function(Handle pen, float width) GdipSetPenWidth;
-Status function(Handle pen, out PenType type) GdipGetPenFillType;
-Status function(Handle pen, out Handle brush) GdipGetPenBrushFill;
-Status function(Handle pen, Handle brush) GdipSetPenBrushFill;
-Status function(Handle pen, out DashStyle dashstyle) GdipGetPenDashStyle;
-Status function(Handle pen, DashStyle dashstyle) GdipSetPenDashStyle;
-Status function(Handle pen, out float offset) GdipGetPenDashOffset;
-Status function(Handle pen, float offset) GdipSetPenDashOffset;
-Status function(Handle pen, out int count) GdipGetPenDashCount;
-Status function(Handle pen, float* dash, int count) GdipGetPenDashArray;
-Status function(Handle pen, float* dash, int count) GdipSetPenDashArray;
-Status function(Handle pen, out int count) GdipGetPenCompoundCount;
-Status function(Handle pen, float* dash, int count) GdipGetPenCompoundArray;
-Status function(Handle pen, float* dash, int count) GdipSetPenCompoundArray;
-Status function(out Handle region) GdipCreateRegion;
-Status function(ref GpRectF rect, out Handle region) GdipCreateRegionRect;
-Status function(ref GpRect rect, out Handle region) GdipCreateRegionRectI;
-Status function(Handle path, out Handle region) GdipCreateRegionPath;
-Status function(Handle hRgn, out Handle region) GdipCreateRegionHrgn;
-Status function(Handle region) GdipDeleteRegion;
-Status function(Handle region) GdipSetInfinite;
-Status function(Handle region) GdipSetEmpty;
-Status function(Handle region, ref GpRectF rect, CombineMode combineMode) GdipCombineRegionRect;
-Status function(Handle region, ref GpRect rect, CombineMode combineMode) GdipCombineRegionRectI;
-Status function(Handle region, Handle path, CombineMode combineMode) GdipCombineRegionPath;
-Status function(Handle region, Handle region, CombineMode combineMode) GdipCombineRegionRegion;
-Status function(Handle region, float dx, float dy) GdipTranslateRegion;
-Status function(Handle region, int dx, int dy) GdipTranslateRegionI;
-Status function(Handle region, Handle matrix) GdipTransformRegion;
-Status function(Handle region, Handle graphics, out GpRectF rect) GdipGetRegionBounds;
-Status function(Handle region, Handle graphics, out Handle hRgn) GdipGetRegionHRgn;
-Status function(Handle region, Handle graphics, out int result) GdipIsEmptyRegion;
-Status function(Handle region, Handle graphics, out int result) GdipIsInfiniteRegion;
-Status function(Handle region1, Handle region2, Handle graphics, out int result) GdipIsEqualRegion;
-Status function(Handle region, float x, float y, Handle graphics, out int result) GdipIsVisibleRegionPoint;
-Status function(Handle region, float x, float y, float width, float height, Handle graphics, out int result) GdipIsVisibleRegionRect;
-Status function(Handle region, int x, int y, Handle graphics, out int result) GdipIsVisibleRegionPointI;
-Status function(Handle region, int x, int y, int width, int height, Handle graphics, out int result) GdipIsVisibleRegionRectI;
-Status function(Handle region, out int count, Handle matrix) GdipGetRegionScansCount;
-Status function(Handle region, GpRectF* rects, out int count, Handle matrix) GdipGetRegionScans;
-Status function(Handle image) GdipDisposeImage;
-Status function(Handle image) GdipImageForceValidation;
-Status function(wchar* filename, out Handle image) GdipLoadImageFromFileICM;
-Status function(wchar* filename, out Handle image) GdipLoadImageFromFile;
-Status function(out int numEncoders, out int size) GdipGetImageEncodersSize;
-Status function(Handle image, out Handle cloneImage) GdipCloneImage;
-Status function(Handle image, out int type) GdipGetImageType;
-Status function(Handle image, out uint flags) GdipGetImageFlags;
-Status function(Handle image, out uint width) GdipGetImageWidth;
-Status function(Handle image, out uint height) GdipGetImageHeight;
-Status function(Handle image, out float resolution) GdipGetImageHorizontalResolution;
-Status function(Handle image, out float resolution) GdipGetImageVerticalResolution;
-Status function(Handle image, out int numOfProperty) GdipGetPropertyCount;
-Status function(Handle image, int numOfProperty, int* list) GdipGetPropertyIdList;
-Status function(Handle image, out PixelFormat format) GdipGetImagePixelFormat;
-Status function(Handle image, out float width, out float height) GdipGetImageDimension;
-Status function(Handle image, int thumbWidth, int thumbHeight, out Handle thumbImage, GpGetThumbnailImageAbort callback, void* callbackData) GdipGetImageThumbnail;
-Status function(Handle image, out int count) GdipImageGetFrameDimensionsCount;
-Status function(Handle image, RotateFlipType rotateFlipType) GdipImageRotateFlip;
-Status function(Handle image, int propId, out uint propSize) GdipGetPropertyItemSize;
-Status function(Handle image, int propId, uint propSize, GpPropertyItem* buffer) GdipGetPropertyItem;
-Status function(Handle image, ref GpPropertyItem buffer) GdipSetPropertyItem;
-Status function(Handle image, int propId) GdipRemovePropertyItem;
-Status function(Handle image, out uint totalBufferSize, ref int numProperties) GdipGetPropertySize;
-Status function(Handle image, uint totalBufferSize, int numProperties, GpPropertyItem* allItems) GdipGetAllPropertyItems;
-Status function(Handle image, out GpRectF srcRect, out GraphicsUnit srcUnit) GdipGetImageBounds;
-Status function(Handle image, out int size) GdipGetImagePaletteSize;
-Status function(Handle image, GpColorPalette* palette, int size) GdipGetImagePalette;
-Status function(Handle image, GpColorPalette* palette) GdipSetImagePalette;
-Status function(int width, int height, int stride, PixelFormat format, ubyte* scan0, out Handle bitmap) GdipCreateBitmapFromScan0;
-Status function(Handle hbitmap, Handle hpalette, out Handle bitmap) GdipCreateBitmapFromHBITMAP;
-Status function(Handle hicon, out Handle bitmap) GdipCreateBitmapFromHICON;
-Status function(wchar* fileName, out Handle bitmap) GdipCreateBitmapFromFileICM;
-Status function(wchar* fileName, out Handle bitmap) GdipCreateBitmapFromFile;
-Status function(int width, int height, Handle graphics, out Handle bitmap) GdipCreateBitmapFromGraphics;
-Status function(float x, float y, float width, float height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap) GdipCloneBitmapArea;
-Status function(int x, int y, int width, int height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap) GdipCloneBitmapAreaI;
-Status function(Handle bitmap, int x, int y, out int color) GdipBitmapGetPixel;
-Status function(Handle bitmap, int x, int y, int color) GdipBitmapSetPixel;
-Status function(Handle bitmap, GpRect* rect, ImageLockMode flags, PixelFormat format, GpBitmapData* lockedBitmapData) GdipBitmapLockBits;
-Status function(Handle bitmap, GpBitmapData* lockedBitmapData) GdipBitmapUnlockBits;
-Status function(Handle bitmap, float xdpi, float ydpi) GdipBitmapSetResolution;
-Status function(Handle bitmap, out Handle hbmReturn) GdipCreateHICONFromBitmap;
-Status function(Handle bitmap, out Handle hbmReturn, int background) GdipCreateHBITMAPFromBitmap;
-Status function(out Handle imageattr) GdipCreateImageAttributes;
-Status function(Handle imageattr) GdipDisposeImageAttributes;
-Status function(Handle imageattr, ColorAdjustType type, int enableFlag, GpColorMatrix* colorMatrix, GpColorMatrix* grayMatrix, ColorMatrixFlag flags) GdipSetImageAttributesColorMatrix;
-Status function(Handle imageattr, ColorAdjustType type, int enableFlag, float threshold) GdipSetImageAttributesThreshold;
-Status function(Handle imageattr, ColorAdjustType type, int enableFlag, float gamma) GdipSetImageAttributesGamma;
-Status function(Handle imageattr, ColorAdjustType type, int enableFlag) GdipSetImageAttributesNoOp;
-Status function(Handle imageattr, ColorAdjustType type, int enableFlag, int colorLow, int colorHigh) GdipSetImageAttributesColorKeys;
-Status function(Handle imageattr, ColorAdjustType type, int enableFlag, ColorChannelFlag flags) GdipSetImageAttributesOutputChannel;
-Status function(Handle imageattr, ColorAdjustType type, int enableFlag, wchar* colorProfileFilename) GdipSetImageAttributesOutputChannelColorProfile;
-Status function(Handle imageattr, WrapMode wrap, int argb, int clamp) GdipSetImageAttributesWrapMode;
-Status function(out Handle fontCollection) GdipNewInstalledFontCollection;
-Status function(out Handle fontCollection) GdipNewPrivateFontCollection;
-Status function(Handle fontCollection) GdipDeletePrivateFontCollection;
-Status function(Handle fontCollection, wchar* filename) GdipPrivateAddFontFile;
-Status function(Handle fontCollection, void* memory, int length) GdipPrivateAddMemoryFont;
-Status function(Handle fontCollection, out int numFound) GdipGetFontCollectionFamilyCount;
-Status function(Handle fontCollection, int numSought, Handle* gpfamilies, out int numFound) GdipGetFontCollectionFamilyList;
-Status function(wchar* name, Handle fontCollection, out Handle FontFamily) GdipCreateFontFamilyFromName;
-Status function(Handle FontFamily) GdipDeleteFontFamily;
-Status function(Handle FontFamily, out Handle clonedFontFamily) GdipCloneFontFamily;
-Status function(Handle family, wchar* name, int language) GdipGetFamilyName;
-Status function(out Handle nativeFamily) GdipGetGenericFontFamilyMonospace;
-Status function(out Handle nativeFamily) GdipGetGenericFontFamilySerif;
-Status function(out Handle nativeFamily) GdipGetGenericFontFamilySansSerif;
-Status function(Handle family, FontStyle style, out short EmHeight) GdipGetEmHeight;
-Status function(Handle family, FontStyle style, out short CellAscent) GdipGetCellAscent;
-Status function(Handle family, FontStyle style, out short CellDescent) GdipGetCellDescent;
-Status function(Handle family, FontStyle style, out short LineSpacing) GdipGetLineSpacing;
-Status function(Handle family, FontStyle style, out int IsStyleAvailable) GdipIsStyleAvailable;
-Status function(Handle fontFamily, float emSize, int style, int unit, out Handle font) GdipCreateFont;
-Status function(Handle hdc, out Handle font) GdipCreateFontFromDC;
-Status function(Handle font) GdipDeleteFont;
-Status function(Handle font, out Handle cloneFont) GdipCloneFont;
-Status function(Handle font, out float size) GdipGetFontSize;
-Status function(Handle font, Handle graphics, out float height) GdipGetFontHeight;
-Status function(Handle font, float dpi, out float height) GdipGetFontHeightGivenDPI;
-Status function(Handle font, out FontStyle style) GdipGetFontStyle;
-Status function(Handle font, out GraphicsUnit unit) GdipGetFontUnit;
-Status function(Handle font, out Handle family) GdipGetFamily;
-Status function( Handle hdc, ref LOGFONTW logfont, out Handle font) GdipCreateFontFromLogfontW;
-Status function( Handle hdc, ref LOGFONTA logfont, out Handle font ) GdipCreateFontFromLogfontA;
-Status function(Handle font, Handle graphics, out LOGFONTW logfontW) GdipGetLogFontW;
-Status function(StringFormatFlags formatAttributes, int language, out Handle format) GdipCreateStringFormat;
-Status function(Handle format) GdipDeleteStringFormat;
-Status function(Handle format, out StringFormatFlags flags) GdipGetStringFormatFlags;
-Status function(Handle format, StringFormatFlags flags) GdipSetStringFormatFlags;
-Status function(Handle format, out StringAlignment alignment) GdipGetStringFormatAlign;
-Status function(Handle format, StringAlignment alignment) GdipSetStringFormatAlign;
-Status function(Handle format, out StringAlignment alignment) GdipGetStringFormatLineAlign;
-Status function(Handle format, StringAlignment alignment) GdipSetStringFormatLineAlign;
-Status function(Handle format, out StringTrimming trimming) GdipGetStringFormatTrimming;
-Status function(Handle format, StringTrimming trimming) GdipSetStringFormatTrimming;
-Status function(FillMode brushMode, out Handle path) GdipCreatePath;
-Status function(GpPointF*, ubyte*, int, FillMode, out Handle) GdipCreatePath2;
-Status function(GpPoint*, ubyte*, int, FillMode, out Handle) GdipCreatePath2I;
-Status function(Handle path) GdipDeletePath;
-Status function(Handle path, out Handle clonepath) GdipClonePath;
-Status function(Handle path) GdipResetPath;
-Status function(Handle path, out FillMode fillmode) GdipGetPathFillMode;
-Status function(Handle path, FillMode fillmode) GdipSetPathFillMode;
-Status function(Handle path) GdipStartPathFigure;
-Status function(Handle path) GdipClosePathFigure;
-Status function(Handle path) GdipClosePathFigures;
-Status function(Handle path) GdipSetPathMarker;
-Status function(Handle path) GdipClearPathMarkers;
-Status function(Handle path) GdipReversePath;
-Status function(Handle path, out GpPointF lastPoint) GdipGetPathLastPoint;
-Status function(Handle path, float x1, float y1, float x2, float y2) GdipAddPathLine;
-Status function(Handle path, int x1, int y1, int x2, int y2) GdipAddPathLineI;
-Status function(Handle path, GpPointF* points, int count) GdipAddPathLine2;
-Status function(Handle path, GpPoint* points, int count) GdipAddPathLine2I;
-Status function(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipAddPathArc;
-Status function(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipAddPathArcI;
-Status function(Handle path, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) GdipAddPathBezier;
-Status function(Handle path, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) GdipAddPathBezierI;
-Status function(Handle path, GpPointF* points, int count) GdipAddPathBeziers;
-Status function(Handle path, GpPoint* points, int count) GdipAddPathBeziersI;
-Status function(Handle path, GpPointF* points, int count) GdipAddPathCurve;
-Status function(Handle path, GpPoint* points, int count) GdipAddPathCurveI;
-Status function(Handle path, GpPointF* points, int count, float tension) GdipAddPathCurve2;
-Status function(Handle path, GpPoint* points, int count, float tension) GdipAddPathCurve2I;
-Status function(Handle path, GpPointF* points, int count, int offset, int numberOfSegments, float tension) GdipAddPathCurve3;
-Status function(Handle path, GpPoint* points, int count, int offset, int numberOfSegments, float tension) GdipAddPathCurve3I;
-Status function(Handle path, GpPointF* points, int count) GdipAddPathClosedCurve;
-Status function(Handle path, GpPoint* points, int count) GdipAddPathClosedCurveI;
-Status function(Handle path, GpPointF* points, int count, float tension) GdipAddPathClosedCurve2;
-Status function(Handle path, GpPoint* points, int count, float tension) GdipAddPathClosedCurve2I;
-Status function(Handle path, float x, float y, float width, float height) GdipAddPathRectangle;
-Status function(Handle path, int x, int y, int width, int height) GdipAddPathRectangleI;
-Status function(Handle path, GpRectF* rects, int count) GdipAddPathRectangles;
-Status function(Handle path, GpRect* rects, int count) GdipAddPathRectanglesI;
-Status function(Handle path, float x, float y, float width, float height) GdipAddPathEllipse;
-Status function(Handle path, int x, int y, int width, int height) GdipAddPathEllipseI;
-Status function(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipAddPathPie;
-Status function(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipAddPathPieI;
-Status function(Handle path, GpPointF* points, int count) GdipAddPathPolygon;
-Status function(Handle path, GpPoint* points, int count) GdipAddPathPolygonI;
-Status function(Handle path, Handle addingPath, int connect) GdipAddPathPath;
-Status function(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRectF layoutRect, Handle format) GdipAddPathString;
-Status function(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRect layoutRect, Handle format) GdipAddPathStringI;
-Status function(Handle path, Handle matrix) GdipTransformPath;
-Status function(Handle path, out GpRectF bounds, Handle matrix, Handle pen) GdipGetPathWorldBounds;
-Status function(Handle path, Handle matrix, float flatness) GdipFlattenPath;
-Status function(Handle path, Handle pen, Handle matrix, float flatness) GdipWidenPath;
-Status function(Handle path, Handle matrix, float flatness) GdipWindingModeOutline;
-Status function(Handle path, Handle matrix, GpPointF* points, int count, float srcx, float srcy, float srcwidth, float srcwidth, WarpMode warpMode, float flatness) GdipWarpPath;
-Status function(Handle path, out int count) GdipGetPointCount;
-Status function(Handle path, byte* types, int count) GdipGetPathTypes;
-Status function(Handle path, GpPointF* points, int count) GdipGetPathPoints;
-Status function(Handle path, float x, float y, Handle graphics, out int result) GdipIsVisiblePathPoint;
-Status function(Handle path, int x, int y, Handle graphics, out int result) GdipIsVisiblePathPointI;
-Status function(Handle path, float x, float y, Handle pen, Handle graphics, out int result) GdipIsOutlineVisiblePathPoint;
-Status function(Handle path, int x, int y, Handle pen, Handle graphics, out int result) GdipIsOutlineVisiblePathPointI;
-Status function(Handle graphics, Handle pen, Handle path) GdipDrawPath;
-Status function(out Handle iterator, Handle path) GdipCreatePathIter;
-Status function(Handle iterator) GdipDeletePathIter;
-Status function(Handle iterator, out int resultCount, out int startIndex, out int endIndex, out int isClosed) GdipPathIterNextSubpath;
-Status function(Handle iterator, out int resultCount, Handle path, out int isClosed) GdipPathIterNextSubpathPath;
-Status function(Handle iterator, out int resultCount, out ubyte pathType, out int startIndex, out int endIndex) GdipPathIterNextPathType;
-Status function(Handle iterator, out int resultCount, out int startIndex, out int endIndex) GdipPathIterNextMarker;
-Status function(Handle iterator, out int resultCount, Handle path) GdipPathIterNextMarkerPath;
-Status function(Handle iterator, out int count) GdipPathIterGetCount;
-Status function(Handle iterator, out int count) GdipPathIterGetSubpathCount;
-Status function(Handle iterator, out int hasCurve) GdipPathIterHasCurve;
-Status function(Handle iterator) GdipPathIterRewind;
-Status function(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int count) GdipPathIterEnumerate;
-Status function(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int startIndex, int endIndex) GdipPathIterCopyData;
-Status function(GpPointF* points, int count, WrapMode wrapMode, out Handle polyGradient) GdipCreatePathGradient;
-Status function(GpPoint* points, int count, WrapMode wrapMode, out Handle polyGradient) GdipCreatePathGradientI;
-Status function(Handle path, out Handle polyGradient) GdipCreatePathGradientFromPath;
-Status function(Handle brush, out int colors) GdipGetPathGradientCenterColor;
-Status function(Handle brush, int colors) GdipSetPathGradientCenterColor;
-Status function(Handle brush, out int count) GdipGetPathGradientSurroundColorCount;
-Status function(Handle brush, int* color, ref int count) GdipGetPathGradientSurroundColorsWithCount;
-Status function(Handle brush, int* color, ref int count) GdipSetPathGradientSurroundColorsWithCount;
-Status function(Handle brush, ref GpPointF point) GdipGetPathGradientCenterPoint;
-Status function(Handle brush, ref GpPointF point) GdipSetPathGradientCenterPoint;
-Status function(Handle brush, ref GpRectF rect) GdipGetPathGradientRect;
-Status function(Handle brush, out int count) GdipGetPathGradientBlendCount;
-Status function(Handle brush, float* blend, float* positions, int count) GdipGetPathGradientBlend;
-Status function(Handle brush, float* blend, float* positions, int count) GdipSetPathGradientBlend;
-Status function(Handle brush, out int count) GdipGetPathGradientPresetBlendCount;
-Status function(Handle brush, int* blend, float* positions, int count) GdipGetPathGradientPresetBlend;
-Status function(Handle brush, int* blend, float* positions, int count) GdipSetPathGradientPresetBlend;
-Status function(Handle brush, float focus, float scale) GdipSetPathGradientSigmaBlend;
-Status function(Handle brush, float focus, float scale) GdipSetPathGradientLinearBlend;
-Status function(Handle brush, out Handle matrix) GdipGetPathGradientTransform;
-Status function(Handle brush, Handle matrix) GdipSetPathGradientTransform;
-Status function(Handle brush) GdipResetPathGradientTransform;
-Status function(Handle brush, Handle matrix, MatrixOrder order) GdipMultiplyPathGradientTransform;
-Status function(Handle brush, float angle, MatrixOrder order) GdipRotatePathGradientTransform;
-Status function(Handle brush, float dx, float dy, MatrixOrder order) GdipTranslatePathGradientTransform;
-Status function(Handle brush, float sx, float sy, MatrixOrder order) GdipScalePathGradientTransform;
-Status function(Handle brush, out float xScale, out float yScale) GdipGetPathGradientFocusScales;
-Status function(Handle brush, float xScale, float yScale) GdipSetPathGradientFocusScales;
-Status function(Handle brush, out WrapMode wrapMode) GdipGetPathGradientWrapMode;
-Status function(Handle brush, WrapMode wrapMode) GdipSetPathGradientWrapMode;
-Status function( Handle brush ) GdipResetTextureTransform;
-Status function( Handle brush, float sx, float sy, MatrixOrder order ) GdipScaleTextureTransform;
-Status function( Handle brush, float dx, float dy, MatrixOrder order) GdipTranslateTextureTransform;
-Status function(out Handle format) GdipStringFormatGetGenericDefault;
-Status function(out Handle format) GdipStringFormatGetGenericTypographic;
-Status function(Handle format, int hotkeyPrefix) GdipSetStringFormatHotkeyPrefix;
-Status function( Handle format, float firstTabOffset, int count, float* tabStops) GdipSetStringFormatTabStops;
-
-struct Symbol {
-    char[] name;
-    void** symbol;
-}
-
-Symbol[] symbols = [
-    { "GdiplusStartup", cast(void**)& GdiplusStartup },
-    { "GdiplusShutdown", cast(void**)& GdiplusShutdown },
-    { "GdipCreateFromHDC", cast(void**)& GdipCreateFromHDC },
-    { "GdipCreateFromHDC2", cast(void**)& GdipCreateFromHDC2 },
-    { "GdipCreateFromHWND", cast(void**)& GdipCreateFromHWND },
-    { "GdipGetImageGraphicsContext", cast(void**)& GdipGetImageGraphicsContext },
-    { "GdipDeleteGraphics", cast(void**)& GdipDeleteGraphics },
-    { "GdipGetDC", cast(void**)& GdipGetDC },
-    { "GdipReleaseDC", cast(void**)& GdipReleaseDC },
-    { "GdipSetClipGraphics", cast(void**)& GdipSetClipGraphics },
-    { "GdipSetClipRectI", cast(void**)& GdipSetClipRectI },
-    { "GdipSetClipRect", cast(void**)& GdipSetClipRect },
-    { "GdipSetClipPath", cast(void**)& GdipSetClipPath },
-    { "GdipSetClipRegion", cast(void**)& GdipSetClipRegion },
-    { "GdipSetClipHrgn", cast(void**)& GdipSetClipHrgn },
-    { "GdipGetClip", cast(void**)& GdipGetClip },
-    { "GdipResetClip", cast(void**)& GdipResetClip },
-    { "GdipSaveGraphics", cast(void**)& GdipSaveGraphics },
-    { "GdipRestoreGraphics", cast(void**)& GdipRestoreGraphics },
-    { "GdipFlush", cast(void**)& GdipFlush },
-    { "GdipScaleWorldTransform", cast(void**)& GdipScaleWorldTransform },
-    { "GdipRotateWorldTransform", cast(void**)& GdipRotateWorldTransform },
-    { "GdipTranslateWorldTransform", cast(void**)& GdipTranslateWorldTransform },
-    { "GdipMultiplyWorldTransform", cast(void**)& GdipMultiplyWorldTransform },
-    { "GdipResetWorldTransform", cast(void**)& GdipResetWorldTransform },
-    { "GdipBeginContainer", cast(void**)& GdipBeginContainer },
-    { "GdipBeginContainerI", cast(void**)& GdipBeginContainerI },
-    { "GdipBeginContainer2", cast(void**)& GdipBeginContainer2 },
-    { "GdipEndContainer", cast(void**)& GdipEndContainer },
-    { "GdipGetDpiX", cast(void**)& GdipGetDpiX },
-    { "GdipGetDpiY", cast(void**)& GdipGetDpiY },
-    { "GdipGetPageUnit", cast(void**)& GdipGetPageUnit },
-    { "GdipSetPageUnit", cast(void**)& GdipSetPageUnit },
-    { "GdipGetPageScale", cast(void**)& GdipGetPageScale },
-    { "GdipSetPageScale", cast(void**)& GdipSetPageScale },
-    { "GdipGetWorldTransform", cast(void**)& GdipGetWorldTransform },
-    { "GdipSetWorldTransform", cast(void**)& GdipSetWorldTransform },
-    { "GdipGetCompositingMode", cast(void**)& GdipGetCompositingMode },
-    { "GdipSetCompositingMode", cast(void**)& GdipSetCompositingMode },
-    { "GdipGetCompositingQuality", cast(void**)& GdipGetCompositingQuality },
-    { "GdipSetCompositingQuality", cast(void**)& GdipSetCompositingQuality },
-    { "GdipGetInterpolationMode", cast(void**)& GdipGetInterpolationMode },
-    { "GdipSetInterpolationMode", cast(void**)& GdipSetInterpolationMode },
-    { "GdipGetSmoothingMode", cast(void**)& GdipGetSmoothingMode },
-    { "GdipSetSmoothingMode", cast(void**)& GdipSetSmoothingMode },
-    { "GdipGetPixelOffsetMode", cast(void**)& GdipGetPixelOffsetMode },
-    { "GdipSetPixelOffsetMode", cast(void**)& GdipSetPixelOffsetMode },
-    { "GdipGetTextContrast", cast(void**)& GdipGetTextContrast },
-    { "GdipSetTextContrast", cast(void**)& GdipSetTextContrast },
-    { "GdipGraphicsClear", cast(void**)& GdipGraphicsClear },
-    { "GdipDrawLine", cast(void**)& GdipDrawLine },
-    { "GdipDrawLines", cast(void**)& GdipDrawLines },
-    { "GdipDrawLineI", cast(void**)& GdipDrawLineI },
-    { "GdipDrawLinesI", cast(void**)& GdipDrawLinesI },
-    { "GdipDrawArc", cast(void**)& GdipDrawArc },
-    { "GdipDrawArcI", cast(void**)& GdipDrawArcI },
-    { "GdipDrawBezier", cast(void**)& GdipDrawBezier },
-    { "GdipDrawBeziers", cast(void**)& GdipDrawBeziers },
-    { "GdipDrawBezierI", cast(void**)& GdipDrawBezierI },
-    { "GdipDrawBeziersI", cast(void**)& GdipDrawBeziersI },
-    { "GdipDrawRectangle", cast(void**)& GdipDrawRectangle },
-    { "GdipDrawRectangles", cast(void**)& GdipDrawRectangles },
-    { "GdipDrawRectangleI", cast(void**)& GdipDrawRectangleI },
-    { "GdipDrawRectanglesI", cast(void**)& GdipDrawRectanglesI },
-    { "GdipDrawEllipse", cast(void**)& GdipDrawEllipse },
-    { "GdipDrawEllipseI", cast(void**)& GdipDrawEllipseI },
-    { "GdipDrawPie", cast(void**)& GdipDrawPie },
-    { "GdipDrawPieI", cast(void**)& GdipDrawPieI },
-    { "GdipDrawPolygon", cast(void**)& GdipDrawPolygon },
-    { "GdipDrawPolygonI", cast(void**)& GdipDrawPolygonI },
-    { "GdipDrawCurve", cast(void**)& GdipDrawCurve },
-    { "GdipDrawCurve2", cast(void**)& GdipDrawCurve2 },
-    { "GdipDrawCurve3", cast(void**)& GdipDrawCurve3 },
-    { "GdipDrawCurveI", cast(void**)& GdipDrawCurveI },
-    { "GdipDrawCurve2I", cast(void**)& GdipDrawCurve2I },
-    { "GdipDrawCurve3I", cast(void**)& GdipDrawCurve3I },
-    { "GdipDrawClosedCurve", cast(void**)& GdipDrawClosedCurve },
-    { "GdipDrawClosedCurve2", cast(void**)& GdipDrawClosedCurve2 },
-    { "GdipDrawClosedCurveI", cast(void**)& GdipDrawClosedCurveI },
-    { "GdipDrawClosedCurve2I", cast(void**)& GdipDrawClosedCurve2I },
-    { "GdipFillRectangleI", cast(void**)& GdipFillRectangleI },
-    { "GdipFillRectangle", cast(void**)& GdipFillRectangle },
-    { "GdipFillRectanglesI", cast(void**)& GdipFillRectanglesI },
-    { "GdipFillRectangles", cast(void**)& GdipFillRectangles },
-    { "GdipFillPolygon", cast(void**)& GdipFillPolygon },
-    { "GdipFillPolygonI", cast(void**)& GdipFillPolygonI },
-    { "GdipFillEllipse", cast(void**)& GdipFillEllipse },
-    { "GdipFillEllipseI", cast(void**)& GdipFillEllipseI },
-    { "GdipFillPie", cast(void**)& GdipFillPie },
-    { "GdipFillPieI", cast(void**)& GdipFillPieI },
-    { "GdipFillPath", cast(void**)& GdipFillPath },
-    { "GdipFillClosedCurve", cast(void**)& GdipFillClosedCurve },
-    { "GdipFillClosedCurveI", cast(void**)& GdipFillClosedCurveI },
-    { "GdipFillClosedCurve2", cast(void**)& GdipFillClosedCurve2 },
-    { "GdipFillClosedCurve2I", cast(void**)& GdipFillClosedCurve2I },
-    { "GdipFillRegion", cast(void**)& GdipFillRegion },
-    { "GdipDrawString", cast(void**)& GdipDrawString },
-    { "GdipMeasureString", cast(void**)& GdipMeasureString },
-    { "GdipGetStringFormatMeasurableCharacterRangeCount", cast(void**)& GdipGetStringFormatMeasurableCharacterRangeCount },
-    { "GdipCloneStringFormat", cast(void**)& GdipCloneStringFormat },
-    { "GdipMeasureCharacterRanges", cast(void**)& GdipMeasureCharacterRanges },
-    { "GdipDrawImage", cast(void**)& GdipDrawImage },
-    { "GdipDrawImageI", cast(void**)& GdipDrawImageI },
-    { "GdipDrawImageRect", cast(void**)& GdipDrawImageRect },
-    { "GdipDrawImageRectI", cast(void**)& GdipDrawImageRectI },
-    { "GdipDrawImagePointRect", cast(void**)& GdipDrawImagePointRect },
-    { "GdipDrawImagePointRectI", cast(void**)& GdipDrawImagePointRectI },
-    { "GdipDrawImageRectRect", cast(void**)& GdipDrawImageRectRect },
-    { "GdipDrawImageRectRectI", cast(void**)& GdipDrawImageRectRectI },
-    { "GdipDrawImagePoints", cast(void**)& GdipDrawImagePoints },
-    { "GdipDrawImagePointsI", cast(void**)& GdipDrawImagePointsI },
-    { "GdipDrawImagePointsRect", cast(void**)& GdipDrawImagePointsRect },
-    { "GdipDrawImagePointsRectI", cast(void**)& GdipDrawImagePointsRectI },
-    { "GdipIsVisiblePoint", cast(void**)& GdipIsVisiblePoint },
-    { "GdipIsVisiblePointI", cast(void**)& GdipIsVisiblePointI },
-    { "GdipIsVisibleRect", cast(void**)& GdipIsVisibleRect },
-    { "GdipIsVisibleRectI", cast(void**)& GdipIsVisibleRectI },
-    { "GdipGetTextRenderingHint", cast(void**)& GdipGetTextRenderingHint },
-    { "GdipSetTextRenderingHint", cast(void**)& GdipSetTextRenderingHint },
-    { "GdipGetClipBounds", cast(void**)& GdipGetClipBounds },
-    { "GdipGetClipBoundsI", cast(void**)& GdipGetClipBoundsI },
-    { "GdipGetVisibleClipBounds", cast(void**)& GdipGetVisibleClipBounds },
-    { "GdipGetVisibleClipBoundsI", cast(void**)& GdipGetVisibleClipBoundsI },
-    { "GdipIsClipEmpty", cast(void**)& GdipIsClipEmpty },
-    { "GdipIsVisibleClipEmpty", cast(void**)& GdipIsVisibleClipEmpty },
-    { "GdipGetRenderingOrigin", cast(void**)& GdipGetRenderingOrigin },
-    { "GdipSetRenderingOrigin", cast(void**)& GdipSetRenderingOrigin },
-    { "GdipGetNearestColor", cast(void**)& GdipGetNearestColor },
-    { "GdipComment", cast(void**)& GdipComment },
-    { "GdipTransformPoints", cast(void**)& GdipTransformPoints },
-    { "GdipTransformPointsI", cast(void**)& GdipTransformPointsI },
-    { "GdipCreateMatrix", cast(void**)& GdipCreateMatrix },
-    { "GdipCreateMatrix2", cast(void**)& GdipCreateMatrix2 },
-    { "GdipCreateMatrix3", cast(void**)& GdipCreateMatrix3 },
-    { "GdipCreateMatrix3I", cast(void**)& GdipCreateMatrix3I },
-    { "GdipDeleteMatrix", cast(void**)& GdipDeleteMatrix },
-    { "GdipCloneMatrix", cast(void**)& GdipCloneMatrix },
-    { "GdipGetMatrixElements", cast(void**)& GdipGetMatrixElements },
-    { "GdipSetMatrixElements", cast(void**)& GdipSetMatrixElements },
-    { "GdipInvertMatrix", cast(void**)& GdipInvertMatrix },
-    { "GdipMultiplyMatrix", cast(void**)& GdipMultiplyMatrix },
-    { "GdipScaleMatrix", cast(void**)& GdipScaleMatrix },
-    { "GdipShearMatrix", cast(void**)& GdipShearMatrix },
-    { "GdipRotateMatrix", cast(void**)& GdipRotateMatrix },
-    { "GdipTranslateMatrix", cast(void**)& GdipTranslateMatrix },
-    { "GdipIsMatrixIdentity", cast(void**)& GdipIsMatrixIdentity },
-    { "GdipIsMatrixInvertible", cast(void**)& GdipIsMatrixInvertible },
-    { "GdipTransformMatrixPoints", cast(void**)& GdipTransformMatrixPoints },
-    { "GdipGetBrushType", cast(void**)& GdipGetBrushType },
-    { "GdipCloneBrush", cast(void**)& GdipCloneBrush },
-    { "GdipDeleteBrush", cast(void**)& GdipDeleteBrush },
-    { "GdipCreateSolidFill", cast(void**)& GdipCreateSolidFill },
-    { "GdipGetSolidFillColor", cast(void**)& GdipGetSolidFillColor },
-    { "GdipSetSolidFillColor", cast(void**)& GdipSetSolidFillColor },
-    { "GdipCreateTexture", cast(void**)& GdipCreateTexture },
-    { "GdipCreateTexture2", cast(void**)& GdipCreateTexture2 },
-    { "GdipCreateTexture2I", cast(void**)& GdipCreateTexture2I },
-    { "GdipGetTextureImage", cast(void**)& GdipGetTextureImage },
-    { "GdipGetTextureTransform", cast(void**)& GdipGetTextureTransform },
-    { "GdipSetTextureTransform", cast(void**)& GdipSetTextureTransform },
-    { "GdipGetTextureWrapMode", cast(void**)& GdipGetTextureWrapMode },
-    { "GdipSetTextureWrapMode", cast(void**)& GdipSetTextureWrapMode },
-    { "GdipCreateHatchBrush", cast(void**)& GdipCreateHatchBrush },
-    { "GdipGetHatchStyle", cast(void**)& GdipGetHatchStyle },
-    { "GdipGetHatchForegroundColor", cast(void**)& GdipGetHatchForegroundColor },
-    { "GdipGetHatchBackgroundColor", cast(void**)& GdipGetHatchBackgroundColor },
-    { "GdipCreateLineBrushI", cast(void**)& GdipCreateLineBrushI },
-    { "GdipCreateLineBrush", cast(void**)& GdipCreateLineBrush },
-    { "GdipCreateLineBrushFromRectI", cast(void**)& GdipCreateLineBrushFromRectI },
-    { "GdipCreateLineBrushFromRect", cast(void**)& GdipCreateLineBrushFromRect },
-    { "GdipCreateLineBrushFromRectWithAngleI", cast(void**)& GdipCreateLineBrushFromRectWithAngleI },
-    { "GdipCreateLineBrushFromRectWithAngle", cast(void**)& GdipCreateLineBrushFromRectWithAngle },
-    { "GdipGetLineBlendCount", cast(void**)& GdipGetLineBlendCount },
-    { "GdipGetLineBlend", cast(void**)& GdipGetLineBlend },
-    { "GdipSetLineBlend", cast(void**)& GdipSetLineBlend },
-    { "GdipGetLinePresetBlendCount", cast(void**)& GdipGetLinePresetBlendCount },
-    { "GdipGetLinePresetBlend", cast(void**)& GdipGetLinePresetBlend },
-    { "GdipSetLinePresetBlend", cast(void**)& GdipSetLinePresetBlend },
-    { "GdipGetLineWrapMode", cast(void**)& GdipGetLineWrapMode },
-    { "GdipSetLineWrapMode", cast(void**)& GdipSetLineWrapMode },
-    { "GdipGetLineRect", cast(void**)& GdipGetLineRect },
-    { "GdipGetLineColors", cast(void**)& GdipGetLineColors },
-    { "GdipSetLineColors", cast(void**)& GdipSetLineColors },
-    { "GdipGetLineGammaCorrection", cast(void**)& GdipGetLineGammaCorrection },
-    { "GdipSetLineGammaCorrection", cast(void**)& GdipSetLineGammaCorrection },
-    { "GdipSetLineSigmaBlend", cast(void**)& GdipSetLineSigmaBlend },
-    { "GdipSetLineLinearBlend", cast(void**)& GdipSetLineLinearBlend },
-    { "GdipGetLineTransform", cast(void**)& GdipGetLineTransform },
-    { "GdipSetLineTransform", cast(void**)& GdipSetLineTransform },
-    { "GdipResetLineTransform", cast(void**)& GdipResetLineTransform },
-    { "GdipMultiplyLineTransform", cast(void**)& GdipMultiplyLineTransform },
-    { "GdipTranslateLineTransform", cast(void**)& GdipTranslateLineTransform },
-    { "GdipScaleLineTransform", cast(void**)& GdipScaleLineTransform },
-    { "GdipRotateLineTransform", cast(void**)& GdipRotateLineTransform },
-    { "GdipCreatePen1", cast(void**)& GdipCreatePen1 },
-    { "GdipCreatePen2", cast(void**)& GdipCreatePen2 },
-    { "GdipDeletePen", cast(void**)& GdipDeletePen },
-    { "GdipClonePen", cast(void**)& GdipClonePen },
-    { "GdipSetPenLineCap197819", cast(void**)& GdipSetPenLineCap197819 },
-    { "GdipGetPenStartCap", cast(void**)& GdipGetPenStartCap },
-    { "GdipSetPenStartCap", cast(void**)& GdipSetPenStartCap },
-    { "GdipGetPenEndCap", cast(void**)& GdipGetPenEndCap },
-    { "GdipSetPenEndCap", cast(void**)& GdipSetPenEndCap },
-    { "GdipGetPenDashCap197819", cast(void**)& GdipGetPenDashCap197819 },
-    { "GdipSetPenDashCap197819", cast(void**)& GdipSetPenDashCap197819 },
-    { "GdipGetPenLineJoin", cast(void**)& GdipGetPenLineJoin },
-    { "GdipSetPenLineJoin", cast(void**)& GdipSetPenLineJoin },
-    { "GdipGetPenMiterLimit", cast(void**)& GdipGetPenMiterLimit },
-    { "GdipSetPenMiterLimit", cast(void**)& GdipSetPenMiterLimit },
-    { "GdipGetPenMode", cast(void**)& GdipGetPenMode },
-    { "GdipSetPenMode", cast(void**)& GdipSetPenMode },
-    { "GdipGetPenTransform", cast(void**)& GdipGetPenTransform },
-    { "GdipSetPenTransform", cast(void**)& GdipSetPenTransform },
-    { "GdipResetPenTransform", cast(void**)& GdipResetPenTransform },
-    { "GdipMultiplyPenTransform", cast(void**)& GdipMultiplyPenTransform },
-    { "GdipTranslatePenTransform", cast(void**)& GdipTranslatePenTransform },
-    { "GdipScalePenTransform", cast(void**)& GdipScalePenTransform },
-    { "GdipRotatePenTransform", cast(void**)& GdipRotatePenTransform },
-    { "GdipGetPenColor", cast(void**)& GdipGetPenColor },
-    { "GdipSetPenColor", cast(void**)& GdipSetPenColor },
-    { "GdipGetPenWidth", cast(void**)& GdipGetPenWidth },
-    { "GdipSetPenWidth", cast(void**)& GdipSetPenWidth },
-    { "GdipGetPenFillType", cast(void**)& GdipGetPenFillType },
-    { "GdipGetPenBrushFill", cast(void**)& GdipGetPenBrushFill },
-    { "GdipSetPenBrushFill", cast(void**)& GdipSetPenBrushFill },
-    { "GdipGetPenDashStyle", cast(void**)& GdipGetPenDashStyle },
-    { "GdipSetPenDashStyle", cast(void**)& GdipSetPenDashStyle },
-    { "GdipGetPenDashOffset", cast(void**)& GdipGetPenDashOffset },
-    { "GdipSetPenDashOffset", cast(void**)& GdipSetPenDashOffset },
-    { "GdipGetPenDashCount", cast(void**)& GdipGetPenDashCount },
-    { "GdipGetPenDashArray", cast(void**)& GdipGetPenDashArray },
-    { "GdipSetPenDashArray", cast(void**)& GdipSetPenDashArray },
-    { "GdipGetPenCompoundCount", cast(void**)& GdipGetPenCompoundCount },
-    { "GdipGetPenCompoundArray", cast(void**)& GdipGetPenCompoundArray },
-    { "GdipSetPenCompoundArray", cast(void**)& GdipSetPenCompoundArray },
-    { "GdipCreateRegion", cast(void**)& GdipCreateRegion },
-    { "GdipCreateRegionRect", cast(void**)& GdipCreateRegionRect },
-    { "GdipCreateRegionRectI", cast(void**)& GdipCreateRegionRectI },
-    { "GdipCreateRegionPath", cast(void**)& GdipCreateRegionPath },
-    { "GdipCreateRegionHrgn", cast(void**)& GdipCreateRegionHrgn },
-    { "GdipDeleteRegion", cast(void**)& GdipDeleteRegion },
-    { "GdipSetInfinite", cast(void**)& GdipSetInfinite },
-    { "GdipSetEmpty", cast(void**)& GdipSetEmpty },
-    { "GdipCombineRegionRect", cast(void**)& GdipCombineRegionRect },
-    { "GdipCombineRegionRectI", cast(void**)& GdipCombineRegionRectI },
-    { "GdipCombineRegionPath", cast(void**)& GdipCombineRegionPath },
-    { "GdipCombineRegionRegion", cast(void**)& GdipCombineRegionRegion },
-    { "GdipTranslateRegion", cast(void**)& GdipTranslateRegion },
-    { "GdipTranslateRegionI", cast(void**)& GdipTranslateRegionI },
-    { "GdipTransformRegion", cast(void**)& GdipTransformRegion },
-    { "GdipGetRegionBounds", cast(void**)& GdipGetRegionBounds },
-    { "GdipGetRegionHRgn", cast(void**)& GdipGetRegionHRgn },
-    { "GdipIsEmptyRegion", cast(void**)& GdipIsEmptyRegion },
-    { "GdipIsInfiniteRegion", cast(void**)& GdipIsInfiniteRegion },
-    { "GdipIsEqualRegion", cast(void**)& GdipIsEqualRegion },
-    { "GdipIsVisibleRegionPoint", cast(void**)& GdipIsVisibleRegionPoint },
-    { "GdipIsVisibleRegionRect", cast(void**)& GdipIsVisibleRegionRect },
-    { "GdipIsVisibleRegionPointI", cast(void**)& GdipIsVisibleRegionPointI },
-    { "GdipIsVisibleRegionRectI", cast(void**)& GdipIsVisibleRegionRectI },
-    { "GdipGetRegionScansCount", cast(void**)& GdipGetRegionScansCount },
-    { "GdipGetRegionScans", cast(void**)& GdipGetRegionScans },
-    { "GdipDisposeImage", cast(void**)& GdipDisposeImage },
-    { "GdipImageForceValidation", cast(void**)& GdipImageForceValidation },
-    { "GdipLoadImageFromFileICM", cast(void**)& GdipLoadImageFromFileICM },
-    { "GdipLoadImageFromFile", cast(void**)& GdipLoadImageFromFile },
-    { "GdipGetImageEncodersSize", cast(void**)& GdipGetImageEncodersSize },
-    { "GdipCloneImage", cast(void**)& GdipCloneImage },
-    { "GdipGetImageType", cast(void**)& GdipGetImageType },
-    { "GdipGetImageFlags", cast(void**)& GdipGetImageFlags },
-    { "GdipGetImageWidth", cast(void**)& GdipGetImageWidth },
-    { "GdipGetImageHeight", cast(void**)& GdipGetImageHeight },
-    { "GdipGetImageHorizontalResolution", cast(void**)& GdipGetImageHorizontalResolution },
-    { "GdipGetImageVerticalResolution", cast(void**)& GdipGetImageVerticalResolution },
-    { "GdipGetPropertyCount", cast(void**)& GdipGetPropertyCount },
-    { "GdipGetPropertyIdList", cast(void**)& GdipGetPropertyIdList },
-    { "GdipGetImagePixelFormat", cast(void**)& GdipGetImagePixelFormat },
-    { "GdipGetImageDimension", cast(void**)& GdipGetImageDimension },
-    { "GdipGetImageThumbnail", cast(void**)& GdipGetImageThumbnail },
-    { "GdipImageGetFrameDimensionsCount", cast(void**)& GdipImageGetFrameDimensionsCount },
-    { "GdipImageRotateFlip", cast(void**)& GdipImageRotateFlip },
-    { "GdipGetPropertyItemSize", cast(void**)& GdipGetPropertyItemSize },
-    { "GdipGetPropertyItem", cast(void**)& GdipGetPropertyItem },
-    { "GdipSetPropertyItem", cast(void**)& GdipSetPropertyItem },
-    { "GdipRemovePropertyItem", cast(void**)& GdipRemovePropertyItem },
-    { "GdipGetPropertySize", cast(void**)& GdipGetPropertySize },
-    { "GdipGetAllPropertyItems", cast(void**)& GdipGetAllPropertyItems },
-    { "GdipGetImageBounds", cast(void**)& GdipGetImageBounds },
-    { "GdipGetImagePaletteSize", cast(void**)& GdipGetImagePaletteSize },
-    { "GdipGetImagePalette", cast(void**)& GdipGetImagePalette },
-    { "GdipSetImagePalette", cast(void**)& GdipSetImagePalette },
-    { "GdipCreateBitmapFromScan0", cast(void**)& GdipCreateBitmapFromScan0 },
-    { "GdipCreateBitmapFromHBITMAP", cast(void**)& GdipCreateBitmapFromHBITMAP },
-    { "GdipCreateBitmapFromHICON", cast(void**)& GdipCreateBitmapFromHICON },
-    { "GdipCreateBitmapFromFileICM", cast(void**)& GdipCreateBitmapFromFileICM },
-    { "GdipCreateBitmapFromFile", cast(void**)& GdipCreateBitmapFromFile },
-    { "GdipCreateBitmapFromGraphics", cast(void**)& GdipCreateBitmapFromGraphics },
-    { "GdipCloneBitmapArea", cast(void**)& GdipCloneBitmapArea },
-    { "GdipCloneBitmapAreaI", cast(void**)& GdipCloneBitmapAreaI },
-    { "GdipBitmapGetPixel", cast(void**)& GdipBitmapGetPixel },
-    { "GdipBitmapSetPixel", cast(void**)& GdipBitmapSetPixel },
-    { "GdipBitmapLockBits", cast(void**)& GdipBitmapLockBits },
-    { "GdipBitmapUnlockBits", cast(void**)& GdipBitmapUnlockBits },
-    { "GdipBitmapSetResolution", cast(void**)& GdipBitmapSetResolution },
-    { "GdipCreateHICONFromBitmap", cast(void**)& GdipCreateHICONFromBitmap },
-    { "GdipCreateHBITMAPFromBitmap", cast(void**)& GdipCreateHBITMAPFromBitmap },
-    { "GdipCreateImageAttributes", cast(void**)& GdipCreateImageAttributes },
-    { "GdipDisposeImageAttributes", cast(void**)& GdipDisposeImageAttributes },
-    { "GdipSetImageAttributesColorMatrix", cast(void**)& GdipSetImageAttributesColorMatrix },
-    { "GdipSetImageAttributesThreshold", cast(void**)& GdipSetImageAttributesThreshold },
-    { "GdipSetImageAttributesGamma", cast(void**)& GdipSetImageAttributesGamma },
-    { "GdipSetImageAttributesNoOp", cast(void**)& GdipSetImageAttributesNoOp },
-    { "GdipSetImageAttributesColorKeys", cast(void**)& GdipSetImageAttributesColorKeys },
-    { "GdipSetImageAttributesOutputChannel", cast(void**)& GdipSetImageAttributesOutputChannel },
-    { "GdipSetImageAttributesOutputChannelColorProfile", cast(void**)& GdipSetImageAttributesOutputChannelColorProfile },
-    { "GdipSetImageAttributesWrapMode", cast(void**)& GdipSetImageAttributesWrapMode },
-    { "GdipNewInstalledFontCollection", cast(void**)& GdipNewInstalledFontCollection },
-    { "GdipNewPrivateFontCollection", cast(void**)& GdipNewPrivateFontCollection },
-    { "GdipDeletePrivateFontCollection", cast(void**)& GdipDeletePrivateFontCollection },
-    { "GdipPrivateAddFontFile", cast(void**)& GdipPrivateAddFontFile },
-    { "GdipPrivateAddMemoryFont", cast(void**)& GdipPrivateAddMemoryFont },
-    { "GdipGetFontCollectionFamilyCount", cast(void**)& GdipGetFontCollectionFamilyCount },
-    { "GdipGetFontCollectionFamilyList", cast(void**)& GdipGetFontCollectionFamilyList },
-    { "GdipCreateFontFamilyFromName", cast(void**)& GdipCreateFontFamilyFromName },
-    { "GdipDeleteFontFamily", cast(void**)& GdipDeleteFontFamily },
-    { "GdipCloneFontFamily", cast(void**)& GdipCloneFontFamily },
-    { "GdipGetFamilyName", cast(void**)& GdipGetFamilyName },
-    { "GdipGetGenericFontFamilyMonospace", cast(void**)& GdipGetGenericFontFamilyMonospace },
-    { "GdipGetGenericFontFamilySerif", cast(void**)& GdipGetGenericFontFamilySerif },
-    { "GdipGetGenericFontFamilySansSerif", cast(void**)& GdipGetGenericFontFamilySansSerif },
-    { "GdipGetEmHeight", cast(void**)& GdipGetEmHeight },
-    { "GdipGetCellAscent", cast(void**)& GdipGetCellAscent },
-    { "GdipGetCellDescent", cast(void**)& GdipGetCellDescent },
-    { "GdipGetLineSpacing", cast(void**)& GdipGetLineSpacing },
-    { "GdipIsStyleAvailable", cast(void**)& GdipIsStyleAvailable },
-    { "GdipCreateFont", cast(void**)& GdipCreateFont },
-    { "GdipCreateFontFromDC", cast(void**)& GdipCreateFontFromDC },
-    { "GdipDeleteFont", cast(void**)& GdipDeleteFont },
-    { "GdipCloneFont", cast(void**)& GdipCloneFont },
-    { "GdipGetFontSize", cast(void**)& GdipGetFontSize },
-    { "GdipGetFontHeight", cast(void**)& GdipGetFontHeight },
-    { "GdipGetFontHeightGivenDPI", cast(void**)& GdipGetFontHeightGivenDPI },
-    { "GdipGetFontStyle", cast(void**)& GdipGetFontStyle },
-    { "GdipGetFontUnit", cast(void**)& GdipGetFontUnit },
-    { "GdipGetFamily", cast(void**)& GdipGetFamily },
-    { "GdipCreateFontFromLogfontW", cast(void**)& GdipCreateFontFromLogfontW },
-    { "GdipCreateFontFromLogfontA", cast(void**)& GdipCreateFontFromLogfontA },
-    { "GdipGetLogFontW", cast(void**)& GdipGetLogFontW },
-    { "GdipCreateStringFormat", cast(void**)& GdipCreateStringFormat },
-    { "GdipDeleteStringFormat", cast(void**)& GdipDeleteStringFormat },
-    { "GdipGetStringFormatFlags", cast(void**)& GdipGetStringFormatFlags },
-    { "GdipSetStringFormatFlags", cast(void**)& GdipSetStringFormatFlags },
-    { "GdipGetStringFormatAlign", cast(void**)& GdipGetStringFormatAlign },
-    { "GdipSetStringFormatAlign", cast(void**)& GdipSetStringFormatAlign },
-    { "GdipGetStringFormatLineAlign", cast(void**)& GdipGetStringFormatLineAlign },
-    { "GdipSetStringFormatLineAlign", cast(void**)& GdipSetStringFormatLineAlign },
-    { "GdipGetStringFormatTrimming", cast(void**)& GdipGetStringFormatTrimming },
-    { "GdipSetStringFormatTrimming", cast(void**)& GdipSetStringFormatTrimming },
-    { "GdipCreatePath", cast(void**)& GdipCreatePath },
-    { "GdipCreatePath2", cast(void**)& GdipCreatePath2 },
-    { "GdipCreatePath2I", cast(void**)& GdipCreatePath2I },
-    { "GdipDeletePath", cast(void**)& GdipDeletePath },
-    { "GdipClonePath", cast(void**)& GdipClonePath },
-    { "GdipResetPath", cast(void**)& GdipResetPath },
-    { "GdipGetPathFillMode", cast(void**)& GdipGetPathFillMode },
-    { "GdipSetPathFillMode", cast(void**)& GdipSetPathFillMode },
-    { "GdipStartPathFigure", cast(void**)& GdipStartPathFigure },
-    { "GdipClosePathFigure", cast(void**)& GdipClosePathFigure },
-    { "GdipClosePathFigures", cast(void**)& GdipClosePathFigures },
-    { "GdipSetPathMarker", cast(void**)& GdipSetPathMarker },
-    { "GdipClearPathMarkers", cast(void**)& GdipClearPathMarkers },
-    { "GdipReversePath", cast(void**)& GdipReversePath },
-    { "GdipGetPathLastPoint", cast(void**)& GdipGetPathLastPoint },
-    { "GdipAddPathLine", cast(void**)& GdipAddPathLine },
-    { "GdipAddPathLineI", cast(void**)& GdipAddPathLineI },
-    { "GdipAddPathLine2", cast(void**)& GdipAddPathLine2 },
-    { "GdipAddPathLine2I", cast(void**)& GdipAddPathLine2I },
-    { "GdipAddPathArc", cast(void**)& GdipAddPathArc },
-    { "GdipAddPathArcI", cast(void**)& GdipAddPathArcI },
-    { "GdipAddPathBezier", cast(void**)& GdipAddPathBezier },
-    { "GdipAddPathBezierI", cast(void**)& GdipAddPathBezierI },
-    { "GdipAddPathBeziers", cast(void**)& GdipAddPathBeziers },
-    { "GdipAddPathBeziersI", cast(void**)& GdipAddPathBeziersI },
-    { "GdipAddPathCurve", cast(void**)& GdipAddPathCurve },
-    { "GdipAddPathCurveI", cast(void**)& GdipAddPathCurveI },
-    { "GdipAddPathCurve2", cast(void**)& GdipAddPathCurve2 },
-    { "GdipAddPathCurve2I", cast(void**)& GdipAddPathCurve2I },
-    { "GdipAddPathCurve3", cast(void**)& GdipAddPathCurve3 },
-    { "GdipAddPathCurve3I", cast(void**)& GdipAddPathCurve3I },
-    { "GdipAddPathClosedCurve", cast(void**)& GdipAddPathClosedCurve },
-    { "GdipAddPathClosedCurveI", cast(void**)& GdipAddPathClosedCurveI },
-    { "GdipAddPathClosedCurve2", cast(void**)& GdipAddPathClosedCurve2 },
-    { "GdipAddPathClosedCurve2I", cast(void**)& GdipAddPathClosedCurve2I },
-    { "GdipAddPathRectangle", cast(void**)& GdipAddPathRectangle },
-    { "GdipAddPathRectangleI", cast(void**)& GdipAddPathRectangleI },
-    { "GdipAddPathRectangles", cast(void**)& GdipAddPathRectangles },
-    { "GdipAddPathRectanglesI", cast(void**)& GdipAddPathRectanglesI },
-    { "GdipAddPathEllipse", cast(void**)& GdipAddPathEllipse },
-    { "GdipAddPathEllipseI", cast(void**)& GdipAddPathEllipseI },
-    { "GdipAddPathPie", cast(void**)& GdipAddPathPie },
-    { "GdipAddPathPieI", cast(void**)& GdipAddPathPieI },
-    { "GdipAddPathPolygon", cast(void**)& GdipAddPathPolygon },
-    { "GdipAddPathPolygonI", cast(void**)& GdipAddPathPolygonI },
-    { "GdipAddPathPath", cast(void**)& GdipAddPathPath },
-    { "GdipAddPathString", cast(void**)& GdipAddPathString },
-    { "GdipAddPathStringI", cast(void**)& GdipAddPathStringI },
-    { "GdipTransformPath", cast(void**)& GdipTransformPath },
-    { "GdipGetPathWorldBounds", cast(void**)& GdipGetPathWorldBounds },
-    { "GdipFlattenPath", cast(void**)& GdipFlattenPath },
-    { "GdipWidenPath", cast(void**)& GdipWidenPath },
-    { "GdipWindingModeOutline", cast(void**)& GdipWindingModeOutline },
-    { "GdipWarpPath", cast(void**)& GdipWarpPath },
-    { "GdipGetPointCount", cast(void**)& GdipGetPointCount },
-    { "GdipGetPathTypes", cast(void**)& GdipGetPathTypes },
-    { "GdipGetPathPoints", cast(void**)& GdipGetPathPoints },
-    { "GdipIsVisiblePathPoint", cast(void**)& GdipIsVisiblePathPoint },
-    { "GdipIsVisiblePathPointI", cast(void**)& GdipIsVisiblePathPointI },
-    { "GdipIsOutlineVisiblePathPoint", cast(void**)& GdipIsOutlineVisiblePathPoint },
-    { "GdipIsOutlineVisiblePathPointI", cast(void**)& GdipIsOutlineVisiblePathPointI },
-    { "GdipDrawPath", cast(void**)& GdipDrawPath },
-    { "GdipCreatePathIter", cast(void**)& GdipCreatePathIter },
-    { "GdipDeletePathIter", cast(void**)& GdipDeletePathIter },
-    { "GdipPathIterNextSubpath", cast(void**)& GdipPathIterNextSubpath },
-    { "GdipPathIterNextSubpathPath", cast(void**)& GdipPathIterNextSubpathPath },
-    { "GdipPathIterNextPathType", cast(void**)& GdipPathIterNextPathType },
-    { "GdipPathIterNextMarker", cast(void**)& GdipPathIterNextMarker },
-    { "GdipPathIterNextMarkerPath", cast(void**)& GdipPathIterNextMarkerPath },
-    { "GdipPathIterGetCount", cast(void**)& GdipPathIterGetCount },
-    { "GdipPathIterGetSubpathCount", cast(void**)& GdipPathIterGetSubpathCount },
-    { "GdipPathIterHasCurve", cast(void**)& GdipPathIterHasCurve },
-    { "GdipPathIterRewind", cast(void**)& GdipPathIterRewind },
-    { "GdipPathIterEnumerate", cast(void**)& GdipPathIterEnumerate },
-    { "GdipPathIterCopyData", cast(void**)& GdipPathIterCopyData },
-    { "GdipCreatePathGradient", cast(void**)& GdipCreatePathGradient },
-    { "GdipCreatePathGradientI", cast(void**)& GdipCreatePathGradientI },
-    { "GdipCreatePathGradientFromPath", cast(void**)& GdipCreatePathGradientFromPath },
-    { "GdipGetPathGradientCenterColor", cast(void**)& GdipGetPathGradientCenterColor },
-    { "GdipSetPathGradientCenterColor", cast(void**)& GdipSetPathGradientCenterColor },
-    { "GdipGetPathGradientSurroundColorCount", cast(void**)& GdipGetPathGradientSurroundColorCount },
-    { "GdipGetPathGradientSurroundColorsWithCount", cast(void**)& GdipGetPathGradientSurroundColorsWithCount },
-    { "GdipSetPathGradientSurroundColorsWithCount", cast(void**)& GdipSetPathGradientSurroundColorsWithCount },
-    { "GdipGetPathGradientCenterPoint", cast(void**)& GdipGetPathGradientCenterPoint },
-    { "GdipSetPathGradientCenterPoint", cast(void**)& GdipSetPathGradientCenterPoint },
-    { "GdipGetPathGradientRect", cast(void**)& GdipGetPathGradientRect },
-    { "GdipGetPathGradientBlendCount", cast(void**)& GdipGetPathGradientBlendCount },
-    { "GdipGetPathGradientBlend", cast(void**)& GdipGetPathGradientBlend },
-    { "GdipSetPathGradientBlend", cast(void**)& GdipSetPathGradientBlend },
-    { "GdipGetPathGradientPresetBlendCount", cast(void**)& GdipGetPathGradientPresetBlendCount },
-    { "GdipGetPathGradientPresetBlend", cast(void**)& GdipGetPathGradientPresetBlend },
-    { "GdipSetPathGradientPresetBlend", cast(void**)& GdipSetPathGradientPresetBlend },
-    { "GdipSetPathGradientSigmaBlend", cast(void**)& GdipSetPathGradientSigmaBlend },
-    { "GdipSetPathGradientLinearBlend", cast(void**)& GdipSetPathGradientLinearBlend },
-    { "GdipGetPathGradientTransform", cast(void**)& GdipGetPathGradientTransform },
-    { "GdipSetPathGradientTransform", cast(void**)& GdipSetPathGradientTransform },
-    { "GdipResetPathGradientTransform", cast(void**)& GdipResetPathGradientTransform },
-    { "GdipMultiplyPathGradientTransform", cast(void**)& GdipMultiplyPathGradientTransform },
-    { "GdipRotatePathGradientTransform", cast(void**)& GdipRotatePathGradientTransform },
-    { "GdipTranslatePathGradientTransform", cast(void**)& GdipTranslatePathGradientTransform },
-    { "GdipScalePathGradientTransform", cast(void**)& GdipScalePathGradientTransform },
-    { "GdipGetPathGradientFocusScales", cast(void**)& GdipGetPathGradientFocusScales },
-    { "GdipSetPathGradientFocusScales", cast(void**)& GdipSetPathGradientFocusScales },
-    { "GdipGetPathGradientWrapMode", cast(void**)& GdipGetPathGradientWrapMode },
-    { "GdipSetPathGradientWrapMode", cast(void**)& GdipSetPathGradientWrapMode },
-    { "GdipResetTextureTransform", cast(void**)& GdipResetTextureTransform },
-    { "GdipScaleTextureTransform", cast(void**)& GdipScaleTextureTransform },
-    { "GdipTranslateTextureTransform", cast(void**)& GdipTranslateTextureTransform },
-    { "GdipStringFormatGetGenericDefault", cast(void**)& GdipStringFormatGetGenericDefault },
-    { "GdipStringFormatGetGenericTypographic", cast(void**)& GdipStringFormatGetGenericTypographic },
-    { "GdipSetStringFormatHotkeyPrefix", cast(void**)& GdipSetStringFormatHotkeyPrefix },
-    { "GdipSetStringFormatTabStops", cast(void**)& GdipSetStringFormatTabStops },
-];
-
-
-void loadLib_Gdip(){
-    if (auto lib = SharedLib.load(`gdiplus.dll`)) {
-        foreach( inout s; symbols ){
-            *s.symbol = lib.getSymbol( s.name.ptr );
-            if( s.symbol is null ){
-                Trace.formatln("gdiplus.dll: Symbol '{}' not found", s.name );
-            }
-        }
-    } else {
-        Trace.formatln("Could not load the library gdiplus.dll");
-    }
-}
-
-}
-
-/******************************************************************************
-
-******************************************************************************/
-/+
-private uint initToken;
-private bool isShutdown;
-
-public int startup() {
-  static GdiplusStartupInput input = { 1, null, 0, 0 };
-  static GdiplusStartupOutput output;
-
-  return GdiplusStartup(initToken, input, output);
-}
-
-public void shutdown() {
-  // GC.collect();
-  isShutdown = true;
-
-  GdiplusShutdown(initToken);
-}
-+/
+/******************************************************************************
+
+  module:
+
+  Based on D version created by John Chapman for the Juno Project
+    see: www.dsource.org/projects/juno
+
+  Changes and Additions for DWT:
+    John Reimer <terminal.node@gmail.com>
+
+******************************************************************************/
+
+module dwt.internal.gdip.native;
+
+import dwt.internal.win32.WINTYPES;
+import tango.sys.SharedLib : SharedLib;
+import tango.util.log.Trace;
+
+extern(Windows):
+
+/******************************************************************************
+
+
+******************************************************************************/
+
+enum DebugEventLevel {
+  Fatal,
+  Warning
+}
+
+alias void  function(DebugEventLevel level, char* message) DebugEventProc;
+
+alias int   function(out uint token)    NotificationHookProc;
+alias void  function(uint token)        NotificationUnhookProc;
+
+
+/******************************************************************************
+
+
+******************************************************************************/
+
+
+struct GdiplusStartupInput {
+  uint GdiplusVersion;
+  DebugEventProc DebugEventCallback;
+  int SuppressBackgroundThread;
+  int SuppressExternalCodecs;
+}
+
+struct GdiplusStartupOutput {
+  NotificationHookProc NotificationHook;
+  NotificationUnhookProc NotificationUnhook;
+}
+
+struct GpBitmapData {
+  int Width;
+  int Height;
+  int Stride;
+  int PixelFormat;
+  void* Scan0;
+  int Reserved;
+}
+
+struct GpColorMatrix {
+  float[5][5] m;
+}
+
+struct GpPropertyItem {
+  int id;
+  int length;
+  short type;
+  void* value;
+}
+
+struct GpColorPalette {
+  int Flags;
+  int Count;
+  int[1] Entries;
+}
+
+public struct GpRectF {
+    public float X;
+    public float Y;
+    public float Width;
+    public float Height;
+}
+
+public struct GpRect {
+    public int X;
+    public int Y;
+    public int Width;
+    public int Height;
+}
+public struct GpPoint {
+    public int X;
+    public int Y;
+}
+public struct GpPointF {
+    public float X;
+    public float Y;
+}
+
+alias int function(void*) GpDrawImageAbort;
+alias GpDrawImageAbort GpGetThumbnailImageAbort;
+
+/******************************************************************************
+
+
+******************************************************************************/
+
+enum Status {
+  OK,
+  GenericError,
+  InvalidParameter,
+  OutOfMemory,
+  ObjectBusy,
+  InsufficientBuffer,
+  NotImplemented,
+  Win32Error,
+  WrongState,
+  Aborted,
+  FileNotFound,
+  ValueOverflow,
+  AccessDenied,
+  UnknownImageFormat,
+  FontFamilyNotFound,
+  FontStyleNotFound,
+  NotTrueTypeFont,
+  UnsupportedGdiplusVersion,
+  GdiplusNotInitialized,
+  PropertyNotFound,
+  PropertyNotSupported
+}
+
+/**************************************************************************
+
+	Opaque types managed by Gdi+
+
+**************************************************************************/
+typedef GpImage  GpBitmap;
+
+// alias   uint   ARGB;
+typedef Handle GpFontFamily;
+typedef Handle GpImage;
+typedef Handle GpBrush;
+typedef Handle GpFont;
+typedef Handle GpFontCollection;
+typedef Handle GpGraphics;
+typedef Handle GpGraphicsPath;
+typedef Handle GpImageAttributes;
+typedef Handle GpHatchBrush;
+typedef Handle GpLinearGradientBrush;
+typedef Handle GpMatrix;
+typedef Handle GpPen;
+typedef Handle GpRegion;
+typedef Handle GpSolidBrush;
+typedef Handle GpStringFormat;
+typedef Handle GpTextureBrush;
+typedef Handle GpPath;
+
+alias void* Handle;
+
+alias int BrushType;
+alias int CombineMode;
+alias int FlushIntention;
+alias int MatrixOrder;
+alias int GraphicsUnit;
+alias int QualityMode;
+alias int SmoothingMode;
+alias int InterpolationMode;
+alias int CompositingMode;
+alias int CompositingQuality;
+alias int PixelOffsetMode;
+alias int PixelFormat;
+alias int RotateFlipType;
+alias int CoordinateSpace;
+alias int WarpMode;
+alias int WrapMode;
+alias int FillMode;
+alias int LineJoin;
+alias int LineCap;
+alias int DashCap;
+alias int DashStyle;
+alias int PenAlignment;
+alias int ColorMatrixFlag;
+alias int ColorAdjustType;
+alias int ColorChannelFlag;
+alias int ImageLockMode;
+alias int ImageCodecFlags;
+alias int EncoderParameterValueType;
+alias int GenericFontFamilies;
+alias int FontStyle;
+alias int HatchStyle;
+alias int StringFormatFlags;
+alias int StringAlignment;
+alias int StringTrimming;
+alias int TextRenderingHint;
+alias int PenType;
+alias int LinearGradientMode;
+alias int KnownColor;
+alias int Unit;
+
+alias uint GraphicsState;
+
+/******************************************************************************
+
+	Flat GDI+ Exports (C Interface)
+
+******************************************************************************/
+
+extern (Windows):
+
+version( STATIC_GDIPLUS ){
+Status GdiplusStartup( uint* token, GdiplusStartupInput* input, GdiplusStartupOutput* output);
+void   GdiplusShutdown(uint token);
+Status GdipCreateFromHDC(Handle hdc, out Handle graphics);
+Status GdipCreateFromHDC2(Handle hdc, Handle hDevice, out Handle graphics);
+Status GdipCreateFromHWND(Handle hwnd, out Handle graphics);
+Status GdipGetImageGraphicsContext(Handle image, out Handle graphics);
+Status GdipDeleteGraphics(Handle graphics);
+Status GdipGetDC(Handle graphics, out Handle hdc);
+Status GdipReleaseDC(Handle graphics, Handle hdc);
+Status GdipSetClipGraphics(Handle graphics, Handle srcgraphics, CombineMode combineMode);
+Status GdipSetClipRectI(Handle graphics, int x, int y, int width, int height, CombineMode combineMode);
+Status GdipSetClipRect(Handle graphics, float x, float y, float width, float height, CombineMode combineMode);
+Status GdipSetClipPath(Handle graphics, Handle path, CombineMode combineMode);
+Status GdipSetClipRegion(Handle graphics, Handle region, CombineMode combineMode);
+Status GdipSetClipHrgn(Handle graphics, HRGN hRgn, CombineMode combineMode);
+
+Status GdipGetClip(Handle graphics, out Handle region);
+Status GdipResetClip(Handle graphics);
+Status GdipSaveGraphics(Handle graphics, out uint state);
+Status GdipRestoreGraphics(Handle graphics, int state);
+Status GdipFlush(Handle graphics, FlushIntention intention);
+Status GdipScaleWorldTransform(Handle graphics, float sx, float sy, MatrixOrder order);
+Status GdipRotateWorldTransform(Handle graphics, float angle, MatrixOrder order);
+Status GdipTranslateWorldTransform(Handle graphics, float dx, float dy, MatrixOrder order);
+Status GdipMultiplyWorldTransform(Handle graphics, Handle matrix, MatrixOrder order);
+Status GdipResetWorldTransform(Handle graphics);
+Status GdipBeginContainer(Handle graphics, ref GpRectF dstrect, ref GpRectF srcrect, GraphicsUnit unit, out int state);
+Status GdipBeginContainerI(Handle graphics, ref GpRect dstrect, ref GpRect srcrect, GraphicsUnit unit, out int state);
+Status GdipBeginContainer2(Handle graphics, out int state);
+Status GdipEndContainer(Handle graphics, int state);
+Status GdipGetDpiX(Handle graphics, out float dpi);
+Status GdipGetDpiY(Handle graphics, out float dpi);
+Status GdipGetPageUnit(Handle graphics, out GraphicsUnit unit);
+Status GdipSetPageUnit(Handle graphics, GraphicsUnit unit);
+Status GdipGetPageScale(Handle graphics, out float scale);
+Status GdipSetPageScale(Handle graphics, float scale);
+Status GdipGetWorldTransform(Handle graphics, Handle matrix); // out not necessary?
+Status GdipSetWorldTransform(Handle graphics, Handle matrix);
+Status GdipGetCompositingMode(Handle graphics, out CompositingMode compositingMode);
+Status GdipSetCompositingMode(Handle graphics, CompositingMode compositingMode);
+Status GdipGetCompositingQuality(Handle graphics, out CompositingQuality compositingQuality);
+Status GdipSetCompositingQuality(Handle graphics, CompositingQuality compositingQuality);
+Status GdipGetInterpolationMode(Handle graphics, out InterpolationMode interpolationMode);
+Status GdipSetInterpolationMode(Handle graphics, InterpolationMode interpolationMode);
+Status GdipGetSmoothingMode(Handle graphics, out SmoothingMode smoothingMode);
+Status GdipSetSmoothingMode(Handle graphics, SmoothingMode smoothingMode);
+Status GdipGetPixelOffsetMode(Handle graphics, out PixelOffsetMode pixelOffsetMode);
+Status GdipSetPixelOffsetMode(Handle graphics, PixelOffsetMode pixelOffsetMode);
+Status GdipGetTextContrast(Handle graphics, out uint textContrast);
+Status GdipSetTextContrast(Handle graphics, uint textContrast);
+Status GdipGraphicsClear(Handle graphics, int color);
+Status GdipDrawLine(Handle graphics, Handle pen, float x1, float y1, float x2, float y2);
+Status GdipDrawLines(Handle graphics, Handle pen, GpPointF* points, int count);
+Status GdipDrawLineI(Handle graphics, Handle pen, int x1, int y1, int x2, int y2);
+Status GdipDrawLinesI(Handle graphics, Handle pen, GpPoint* points, int count);
+Status GdipDrawArc(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle);
+Status GdipDrawArcI(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle);
+Status GdipDrawBezier(Handle graphics, Handle pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4);
+Status GdipDrawBeziers(Handle graphics, Handle pen, GpPointF* points, int count);
+Status GdipDrawBezierI(Handle graphics, Handle pen, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+Status GdipDrawBeziersI(Handle graphics, Handle pen, GpPoint* points, int count);
+Status GdipDrawRectangle(Handle graphics, Handle pen, float x, float y, float width, float height);
+Status GdipDrawRectangles(Handle graphics, Handle pen, GpRectF* rects, int count);
+Status GdipDrawRectangleI(Handle graphics, Handle pen, int x, int y, int width, int height);
+Status GdipDrawRectanglesI(Handle graphics, Handle pen, GpRect* rects, int count);
+Status GdipDrawEllipse(Handle graphics, Handle pen, float x, float y, float width, float height);
+Status GdipDrawEllipseI(Handle graphics, Handle pen, int x, int y, int width, int height);
+Status GdipDrawPie(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle);
+Status GdipDrawPieI(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle);
+Status GdipDrawPolygon(Handle graphics, Handle pen, GpPointF* points, int count);
+Status GdipDrawPolygonI(Handle graphics, Handle pen, GpPoint* points, int count);
+Status GdipDrawCurve(Handle graphics, Handle pen, GpPointF* points, int count);
+Status GdipDrawCurve2(Handle graphics, Handle pen, GpPointF* points, int count, float tension);
+Status GdipDrawCurve3(Handle graphics, Handle pen, GpPointF* points, int count, int offset, int numberOfSegments, float tension);
+Status GdipDrawCurveI(Handle graphics, Handle pen, GpPoint* points, int count);
+Status GdipDrawCurve2I(Handle graphics, Handle pen, GpPoint* points, int count, float tension);
+Status GdipDrawCurve3I(Handle graphics, Handle pen, GpPoint* points, int count, int offset, int numberOfSegments, float tension);
+Status GdipDrawClosedCurve(Handle graphics, Handle pen, GpPointF* points, int count);
+Status GdipDrawClosedCurve2(Handle graphics, Handle pen, GpPointF* points, int count, float tension);
+Status GdipDrawClosedCurveI(Handle graphics, Handle pen, GpPoint* points, int count);
+Status GdipDrawClosedCurve2I(Handle graphics, Handle pen, GpPoint* points, int count, float tension);
+Status GdipFillRectangleI(Handle graphics, Handle brush, int x, int y, int width, int height);
+Status GdipFillRectangle(Handle graphics, Handle brush, float x, float y, float width, float height);
+Status GdipFillRectanglesI(Handle graphics, Handle brush, GpRect* rects, int count);
+Status GdipFillRectangles(Handle graphics, Handle brush, GpRectF* rects, int count);
+Status GdipFillPolygon(Handle graphics, Handle brush, GpPointF* rects, int count, FillMode fillMode);
+Status GdipFillPolygonI(Handle graphics, Handle brush, GpPoint* rects, int count, FillMode fillMode);
+Status GdipFillEllipse(Handle graphics, Handle brush, float x, float y, float width, float height);
+Status GdipFillEllipseI(Handle graphics, Handle brush, int x, int y, int width, int height);
+Status GdipFillPie(Handle graphics, Handle brush, float x, float y, float width, float height, float startAngle, float sweepAngle);
+Status GdipFillPieI(Handle graphics, Handle brush, int x, int y, int width, int height, float startAngle, float sweepAngle);
+Status GdipFillPath(Handle graphics, Handle brush, Handle path);
+Status GdipFillClosedCurve(Handle graphics, Handle brush, GpPointF* points, int count);
+Status GdipFillClosedCurveI(Handle graphics, Handle brush, GpPoint* points, int count);
+Status GdipFillClosedCurve2(Handle graphics, Handle brush, GpPointF* points, int count, FillMode fillMode, float tension);
+Status GdipFillClosedCurve2I(Handle graphics, Handle brush, GpPoint* points, int count, FillMode fillMode, float tension);
+Status GdipFillRegion(Handle graphics, Handle brush, Handle region);
+Status GdipDrawString(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, Handle brush);
+Status GdipMeasureString(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, ref GpRectF boundingBox, int* codepointsFitted, int* linesFitted);
+Status GdipGetStringFormatMeasurableCharacterRangeCount(Handle format, out int count);
+Status GdipCloneStringFormat(Handle format, out Handle newFormat);
+
+Status GdipMeasureCharacterRanges(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, int regionCount, Handle* regions);
+Status GdipDrawImage(Handle graphics, Handle image, float x, float y);
+Status GdipDrawImageI(Handle graphics, Handle image, int x, int y);
+Status GdipDrawImageRect(Handle graphics, Handle image, float x, float y, float width, float height);
+Status GdipDrawImageRectI(Handle graphics, Handle image, int x, int y, int width, int height);
+Status GdipDrawImagePointRect(Handle graphics, Handle image, float x, float y, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit);
+Status GdipDrawImagePointRectI(Handle graphics, Handle image, int x, int y, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit);
+Status GdipDrawImageRectRect(Handle graphics, Handle image, float dstx, float dsty, float dstwidth, float dstheight, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
+Status GdipDrawImageRectRectI(Handle graphics, Handle image, int dstx, int dsty, int dstwidth, int dstheight, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
+Status GdipDrawImagePoints(Handle graphics, Handle image, GpPointF* dstpoints, int count);
+Status GdipDrawImagePointsI(Handle graphics, Handle image, GpPoint* dstpoints, int count);
+Status GdipDrawImagePointsRect(Handle graphics, Handle image, GpPointF* dstpoints, int count, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
+Status GdipDrawImagePointsRectI(Handle graphics, Handle image, GpPoint* dstpoints, int count, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData);
+Status GdipIsVisiblePoint(Handle graphics, float x, float y, out int result);
+Status GdipIsVisiblePointI(Handle graphics, int x, int y, out int result);
+Status GdipIsVisibleRect(Handle graphics, float x, float y, float width, float height, out int result);
+Status GdipIsVisibleRectI(Handle graphics, int x, int y, int width, int height, out int result);
+Status GdipGetTextRenderingHint(Handle graphics, out TextRenderingHint mode);
+Status GdipSetTextRenderingHint(Handle graphics, TextRenderingHint mode);
+Status GdipGetClipBounds(Handle graphics, out GpRectF rect);
+Status GdipGetClipBoundsI(Handle graphics, out GpRect rect);
+Status GdipGetVisibleClipBounds(Handle graphics, out GpRectF rect);
+Status GdipGetVisibleClipBoundsI(Handle graphics, out GpRect rect);
+Status GdipIsClipEmpty(Handle graphics, out int result);
+Status GdipIsVisibleClipEmpty(Handle graphics, out int result);
+Status GdipGetRenderingOrigin(Handle graphics, out int x, out int y);
+Status GdipSetRenderingOrigin(Handle graphics, int x, int y);
+Status GdipGetNearestColor(Handle graphics, ref int argb);
+Status GdipComment(Handle graphics, uint sizeData, ubyte* data);
+Status GdipTransformPoints(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPointF* points, int count);
+Status GdipTransformPointsI(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPoint* points, int count);
+
+Status GdipCreateMatrix(out Handle matrix);
+Status GdipCreateMatrix2(float m11, float m12, float m21, float m22, float dx, float dy, out Handle matrix);
+Status GdipCreateMatrix3(ref GpRectF rect, GpPointF* dstplg, out Handle matrix);
+Status GdipCreateMatrix3I(ref GpRect rect, GpPoint* dstplg, out Handle matrix);
+Status GdipDeleteMatrix(Handle matrix);
+Status GdipCloneMatrix(Handle matrix, out Handle cloneMatrix);
+Status GdipGetMatrixElements(Handle matrix, float* matrixOut);
+Status GdipSetMatrixElements(Handle matrix, float m11, float m12, float m21, float m22, float xy, float dy);
+Status GdipInvertMatrix(Handle matrix);
+Status GdipMultiplyMatrix(Handle matrix, Handle matrix2, MatrixOrder order);
+Status GdipScaleMatrix(Handle matrix, float scaleX, float scaleY, MatrixOrder order);
+Status GdipShearMatrix(Handle matrix, float shearX, float shearY, MatrixOrder order);
+Status GdipRotateMatrix(Handle matrix, float angle, MatrixOrder order);
+Status GdipTranslateMatrix(Handle matrix, float offsetX, float offsetY, MatrixOrder order);
+Status GdipIsMatrixIdentity(Handle matrix, out int result);
+Status GdipIsMatrixInvertible(Handle matrix, out int result);
+Status GdipTransformMatrixPoints(Handle matrix, GpPointF *pts, int count);
+
+Status GdipGetBrushType(Handle brush, out BrushType type );
+Status GdipCloneBrush(Handle brush, out Handle cloneBrush);
+Status GdipDeleteBrush(Handle brush);
+
+Status GdipCreateSolidFill(int color, out Handle brush);
+Status GdipGetSolidFillColor(Handle brush, out int color);
+Status GdipSetSolidFillColor(Handle brush, int color);
+
+Status GdipCreateTexture(Handle image, WrapMode wrapMode, out Handle texture);
+Status GdipCreateTexture2(Handle image, WrapMode wrapMode, float x, float y, float width, float height, out Handle texture);
+Status GdipCreateTexture2I(Handle image, WrapMode wrapMode, int x, int y, int width, int height, out Handle texture);
+Status GdipGetTextureImage(Handle brush, out Handle image);
+Status GdipGetTextureTransform(Handle brush, out Handle matrix);
+Status GdipSetTextureTransform(Handle brush, Handle matrix);
+Status GdipGetTextureWrapMode(Handle brush, out WrapMode wrapmode);
+Status GdipSetTextureWrapMode(Handle brush, WrapMode wrapmode);
+
+Status GdipCreateHatchBrush(HatchStyle hatchstyle, int forecol, int backcol, out Handle brush);
+Status GdipGetHatchStyle(Handle brush, out HatchStyle hatchstyle);
+Status GdipGetHatchForegroundColor(Handle brush, out int forecol);
+Status GdipGetHatchBackgroundColor(Handle brush, out int backcol);
+
+Status GdipCreateLineBrushI(ref GpPoint point1, ref GpPoint point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient);
+Status GdipCreateLineBrush(ref GpPointF point1, ref GpPointF point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient);
+Status GdipCreateLineBrushFromRectI(ref GpRect rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient);
+Status GdipCreateLineBrushFromRect(ref GpRectF rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient);
+Status GdipCreateLineBrushFromRectWithAngleI(ref GpRect rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient);
+Status GdipCreateLineBrushFromRectWithAngle(ref GpRectF rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient);
+Status GdipGetLineBlendCount(Handle brush, out int count);
+Status GdipGetLineBlend(Handle brush, float* blend, float* positions, int count);
+Status GdipSetLineBlend(Handle brush, float* blend, float* positions, int count);
+Status GdipGetLinePresetBlendCount(Handle brush, out int count);
+Status GdipGetLinePresetBlend(Handle brush, uint* blend, float* positions, int count);
+Status GdipSetLinePresetBlend(Handle brush, uint* blend, float* positions, int count);
+Status GdipGetLineWrapMode(Handle brush, out WrapMode wrapmode);
+Status GdipSetLineWrapMode(Handle brush, WrapMode wrapmode);
+Status GdipGetLineRect(Handle brush, out GpRectF rect);
+Status GdipGetLineColors(Handle brush, int* colors);
+Status GdipSetLineColors(Handle brush, int color1, int color2);
+Status GdipGetLineGammaCorrection(Handle brush, out int useGammaCorrection);
+Status GdipSetLineGammaCorrection(Handle brush, int useGammaCorrection);
+Status GdipSetLineSigmaBlend(Handle brush, float focus, float scale);
+Status GdipSetLineLinearBlend(Handle brush, float focus, float scale);
+Status GdipGetLineTransform(Handle brush, out Handle matrix);
+Status GdipSetLineTransform(Handle brush, Handle matrix);
+Status GdipResetLineTransform(Handle brush);
+Status GdipMultiplyLineTransform(Handle brush, Handle matrix, MatrixOrder order);
+Status GdipTranslateLineTransform(Handle brush, float dx, float dy, MatrixOrder order);
+Status GdipScaleLineTransform(Handle brush, float sx, float sy, MatrixOrder order);
+Status GdipRotateLineTransform(Handle brush, float angle, MatrixOrder order);
+
+Status GdipCreatePen1(int argb, float width, GraphicsUnit unit, out Handle pen);
+Status GdipCreatePen2(Handle brush, float width, GraphicsUnit unit, out Handle pen);
+Status GdipDeletePen(Handle pen);
+Status GdipClonePen(Handle pen, out Handle clonepen);
+Status GdipSetPenLineCap197819(Handle pen, LineCap startCap, LineCap endCap, DashCap dashCap);
+Status GdipGetPenStartCap(Handle pen, out LineCap startCap);
+Status GdipSetPenStartCap(Handle pen, LineCap startCap);
+Status GdipGetPenEndCap(Handle pen, out LineCap endCap);
+Status GdipSetPenEndCap(Handle pen, LineCap endCap);
+Status GdipGetPenDashCap197819(Handle pen, out DashCap endCap);
+Status GdipSetPenDashCap197819(Handle pen, DashCap endCap);
+Status GdipGetPenLineJoin(Handle pen, out LineJoin lineJoin);
+Status GdipSetPenLineJoin(Handle pen, LineJoin lineJoin);
+Status GdipGetPenMiterLimit(Handle pen, out float miterLimit);
+Status GdipSetPenMiterLimit(Handle pen, float miterLimit);
+Status GdipGetPenMode(Handle pen, out PenAlignment penMode);
+Status GdipSetPenMode(Handle pen, PenAlignment penMode);
+Status GdipGetPenTransform(Handle pen, out Handle matrix);
+Status GdipSetPenTransform(Handle pen, Handle matrix);
+Status GdipResetPenTransform(Handle pen);
+Status GdipMultiplyPenTransform(Handle pen, Handle matrix, MatrixOrder order);
+Status GdipTranslatePenTransform(Handle pen, float dx, float dy, MatrixOrder order);
+Status GdipScalePenTransform(Handle pen, float sx, float sy, MatrixOrder order);
+Status GdipRotatePenTransform(Handle pen, float angle, MatrixOrder order);
+Status GdipGetPenColor(Handle pen, out int argb);
+Status GdipSetPenColor(Handle pen, int argb);
+Status GdipGetPenWidth(Handle pen, out float width);
+Status GdipSetPenWidth(Handle pen, float width);
+Status GdipGetPenFillType(Handle pen, out PenType type);
+Status GdipGetPenBrushFill(Handle pen, out Handle brush);
+Status GdipSetPenBrushFill(Handle pen, Handle brush);
+Status GdipGetPenDashStyle(Handle pen, out DashStyle dashstyle);
+Status GdipSetPenDashStyle(Handle pen, DashStyle dashstyle);
+Status GdipGetPenDashOffset(Handle pen, out float offset);
+Status GdipSetPenDashOffset(Handle pen, float offset);
+Status GdipGetPenDashCount(Handle pen, out int count);
+Status GdipGetPenDashArray(Handle pen, float* dash, int count);
+Status GdipSetPenDashArray(Handle pen, float* dash, int count);
+Status GdipGetPenCompoundCount(Handle pen, out int count);
+Status GdipGetPenCompoundArray(Handle pen, float* dash, int count);
+Status GdipSetPenCompoundArray(Handle pen, float* dash, int count);
+
+Status GdipCreateRegion(out Handle region);
+Status GdipCreateRegionRect(ref GpRectF rect, out Handle region);
+Status GdipCreateRegionRectI(ref GpRect rect, out Handle region);
+Status GdipCreateRegionPath(Handle path, out Handle region);
+Status GdipCreateRegionHrgn(Handle hRgn, out Handle region);
+Status GdipDeleteRegion(Handle region);
+Status GdipSetInfinite(Handle region);
+Status GdipSetEmpty(Handle region);
+Status GdipCombineRegionRect(Handle region, ref GpRectF rect, CombineMode combineMode);
+Status GdipCombineRegionRectI(Handle region, ref GpRect rect, CombineMode combineMode);
+Status GdipCombineRegionPath(Handle region, Handle path, CombineMode combineMode);
+Status GdipCombineRegionRegion(Handle region, Handle region, CombineMode combineMode);
+Status GdipTranslateRegion(Handle region, float dx, float dy);
+Status GdipTranslateRegionI(Handle region, int dx, int dy);
+Status GdipTransformRegion(Handle region, Handle matrix);
+Status GdipGetRegionBounds(Handle region, Handle graphics, out GpRectF rect);
+Status GdipGetRegionHRgn(Handle region, Handle graphics, out Handle hRgn);
+Status GdipIsEmptyRegion(Handle region, Handle graphics, out int result);
+Status GdipIsInfiniteRegion(Handle region, Handle graphics, out int result);
+Status GdipIsEqualRegion(Handle region1, Handle region2, Handle graphics, out int result);
+Status GdipIsVisibleRegionPoint(Handle region, float x, float y, Handle graphics, out int result);
+Status GdipIsVisibleRegionRect(Handle region, float x, float y, float width, float height, Handle graphics, out int result);
+Status GdipIsVisibleRegionPointI(Handle region, int x, int y, Handle graphics, out int result);
+Status GdipIsVisibleRegionRectI(Handle region, int x, int y, int width, int height, Handle graphics, out int result);
+Status GdipGetRegionScansCount(Handle region, out int count, Handle matrix);
+Status GdipGetRegionScans(Handle region, GpRectF* rects, out int count, Handle matrix);
+
+Status GdipDisposeImage(Handle image);
+Status GdipImageForceValidation(Handle image);
+Status GdipLoadImageFromFileICM(wchar* filename, out Handle image);
+Status GdipLoadImageFromFile(wchar* filename, out Handle image);
+// Status GdipLoadImageFromStreamICM(IStream stream, out Handle image);
+// Status GdipLoadImageFromStream(IStream stream, out Handle image);
+// Status GdipGetImageRawFormat(Handle image, out GUID format);
+Status GdipGetImageEncodersSize(out int numEncoders, out int size);
+// Status GdipGetImageEncoders(int numEncoders, int size, GpImageCodecInfo* encoders);
+// Status GdipSaveImageToFile(Handle image, wchar* filename, ref GUID clsidEncoder, GpEncoderParameters* encoderParams);
+// Status GdipSaveImageToStream(Handle image, IStream stream, ref GUID clsidEncoder, GpEncoderParameters* encoderParams);
+// Status GdipSaveAdd(Handle image, GpEncoderParameters* encoderParams);
+// Status GdipSaveAddImage(Handle image, Handle newImage, GpEncoderParameters* encoderParams);
+Status GdipCloneImage(Handle image, out Handle cloneImage);
+Status GdipGetImageType(Handle image, out int type);
+Status GdipGetImageFlags(Handle image, out uint flags);
+Status GdipGetImageWidth(Handle image, out uint width);
+Status GdipGetImageHeight(Handle image, out uint height);
+Status GdipGetImageHorizontalResolution(Handle image, out float resolution);
+Status GdipGetImageVerticalResolution(Handle image, out float resolution);
+Status GdipGetPropertyCount(Handle image, out int numOfProperty);
+Status GdipGetPropertyIdList(Handle image, int numOfProperty, int* list);
+Status GdipGetImagePixelFormat(Handle image, out PixelFormat format);
+Status GdipGetImageDimension(Handle image, out float width, out float height);
+Status GdipGetImageThumbnail(Handle image, int thumbWidth, int thumbHeight, out Handle thumbImage, GpGetThumbnailImageAbort callback, void* callbackData);
+// Status GdipImageGetFrameCount(Handle image, ref GUID dimensionID, out int count);
+// Status GdipImageSelectActiveFrame(Handle image, ref GUID dimensionID, int frameCount);
+Status GdipImageGetFrameDimensionsCount(Handle image, out int count);
+// Status GdipImageGetFrameDimensionsList(Handle image, GUID* dimensionIDs, int count);
+Status GdipImageRotateFlip(Handle image, RotateFlipType rotateFlipType);
+Status GdipGetPropertyItemSize(Handle image, int propId, out uint propSize);
+Status GdipGetPropertyItem(Handle image, int propId, uint propSize, GpPropertyItem* buffer);
+Status GdipSetPropertyItem(Handle image, ref GpPropertyItem buffer);
+Status GdipRemovePropertyItem(Handle image, int propId);
+Status GdipGetPropertySize(Handle image, out uint totalBufferSize, ref int numProperties);
+Status GdipGetAllPropertyItems(Handle image, uint totalBufferSize, int numProperties, GpPropertyItem* allItems);
+Status GdipGetImageBounds(Handle image, out GpRectF srcRect, out GraphicsUnit srcUnit);
+// Status GdipGetEncoderParameterListSize(Handle image, ref GUID clsidEncoder, out uint size);
+// Status GdipGetEncoderParameterList(Handle image, ref GUID clsidEncoder, uint size, GpEncoderParameters* buffer);
+Status GdipGetImagePaletteSize(Handle image, out int size);
+Status GdipGetImagePalette(Handle image, GpColorPalette* palette, int size);
+Status GdipSetImagePalette(Handle image, GpColorPalette* palette);
+
+Status GdipCreateBitmapFromScan0(int width, int height, int stride, PixelFormat format, ubyte* scan0, out Handle bitmap);
+Status GdipCreateBitmapFromHBITMAP(Handle hbitmap, Handle hpalette, out Handle bitmap);
+Status GdipCreateBitmapFromHICON(Handle hicon, out Handle bitmap);
+Status GdipCreateBitmapFromFileICM(wchar* fileName, out Handle bitmap);
+Status GdipCreateBitmapFromFile(wchar* fileName, out Handle bitmap);
+// Status GdipCreateBitmapFromStreamICM(IStream stream, out Handle bitmap);
+// Status GdipCreateBitmapFromStream(IStream stream, out Handle bitmap);
+Status GdipCreateBitmapFromGraphics(int width, int height, Handle graphics, out Handle bitmap);
+Status GdipCloneBitmapArea(float x, float y, float width, float height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap);
+Status GdipCloneBitmapAreaI(int x, int y, int width, int height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap);
+Status GdipBitmapGetPixel(Handle bitmap, int x, int y, out int color);
+Status GdipBitmapSetPixel(Handle bitmap, int x, int y, int color);
+Status GdipBitmapLockBits(Handle bitmap, GpRect* rect, ImageLockMode flags, PixelFormat format, GpBitmapData* lockedBitmapData);
+Status GdipBitmapUnlockBits(Handle bitmap, GpBitmapData* lockedBitmapData);
+Status GdipBitmapSetResolution(Handle bitmap, float xdpi, float ydpi);
+Status GdipCreateHICONFromBitmap(Handle bitmap, out Handle hbmReturn);
+Status GdipCreateHBITMAPFromBitmap(Handle bitmap, out Handle hbmReturn, int background);
+
+Status GdipCreateImageAttributes(out Handle imageattr);
+Status GdipDisposeImageAttributes(Handle imageattr);
+Status GdipSetImageAttributesColorMatrix(Handle imageattr, ColorAdjustType type, int enableFlag, GpColorMatrix* colorMatrix, GpColorMatrix* grayMatrix, ColorMatrixFlag flags);
+Status GdipSetImageAttributesThreshold(Handle imageattr, ColorAdjustType type, int enableFlag, float threshold);
+Status GdipSetImageAttributesGamma(Handle imageattr, ColorAdjustType type, int enableFlag, float gamma);
+Status GdipSetImageAttributesNoOp(Handle imageattr, ColorAdjustType type, int enableFlag);
+Status GdipSetImageAttributesColorKeys(Handle imageattr, ColorAdjustType type, int enableFlag, int colorLow, int colorHigh);
+Status GdipSetImageAttributesOutputChannel(Handle imageattr, ColorAdjustType type, int enableFlag, ColorChannelFlag flags);
+Status GdipSetImageAttributesOutputChannelColorProfile(Handle imageattr, ColorAdjustType type, int enableFlag, wchar* colorProfileFilename);
+Status GdipSetImageAttributesWrapMode(Handle imageattr, WrapMode wrap, int argb, int clamp);
+
+Status GdipNewInstalledFontCollection(out Handle fontCollection);
+Status GdipNewPrivateFontCollection(out Handle fontCollection);
+Status GdipDeletePrivateFontCollection(Handle fontCollection);
+Status GdipPrivateAddFontFile(Handle fontCollection, wchar* filename);
+Status GdipPrivateAddMemoryFont(Handle fontCollection, void* memory, int length);
+Status GdipGetFontCollectionFamilyCount(Handle fontCollection, out int numFound);
+Status GdipGetFontCollectionFamilyList(Handle fontCollection, int numSought, Handle* gpfamilies, out int numFound);
+
+Status GdipCreateFontFamilyFromName(wchar* name, Handle fontCollection, out Handle FontFamily);
+Status GdipDeleteFontFamily(Handle FontFamily);
+Status GdipCloneFontFamily(Handle FontFamily, out Handle clonedFontFamily);
+Status GdipGetFamilyName(Handle family, wchar* name, int language);
+Status GdipGetGenericFontFamilyMonospace(out Handle nativeFamily);
+Status GdipGetGenericFontFamilySerif(out Handle nativeFamily);
+Status GdipGetGenericFontFamilySansSerif(out Handle nativeFamily);
+Status GdipGetEmHeight(Handle family, FontStyle style, out short EmHeight);
+Status GdipGetCellAscent(Handle family, FontStyle style, out short CellAscent);
+Status GdipGetCellDescent(Handle family, FontStyle style, out short CellDescent);
+Status GdipGetLineSpacing(Handle family, FontStyle style, out short LineSpacing);
+Status GdipIsStyleAvailable(Handle family, FontStyle style, out int IsStyleAvailable);
+
+Status GdipCreateFont(Handle fontFamily, float emSize, int style, int unit, out Handle font);
+Status GdipCreateFontFromDC(Handle hdc, out Handle font);
+Status GdipDeleteFont(Handle font);
+Status GdipCloneFont(Handle font, out Handle cloneFont);
+Status GdipGetFontSize(Handle font, out float size);
+Status GdipGetFontHeight(Handle font, Handle graphics, out float height);
+Status GdipGetFontHeightGivenDPI(Handle font, float dpi, out float height);
+Status GdipGetFontStyle(Handle font, out FontStyle style);
+Status GdipGetFontUnit(Handle font, out GraphicsUnit unit);
+Status GdipGetFamily(Handle font, out Handle family);
+Status GdipCreateFontFromLogfontW( Handle hdc, ref LOGFONTW logfont, out Handle font);
+Status GdipCreateFontFromLogfontA( Handle hdc, ref LOGFONTA logfont, out Handle font );
+
+Status GdipGetLogFontW(Handle font, Handle graphics, out LOGFONTW logfontW);
+alias GdipGetLogFontW GdipGetLogFont;
+
+Status GdipCreateStringFormat(StringFormatFlags formatAttributes, int language, out Handle format);
+Status GdipDeleteStringFormat(Handle format);
+Status GdipGetStringFormatFlags(Handle format, out StringFormatFlags flags);
+Status GdipSetStringFormatFlags(Handle format, StringFormatFlags flags);
+Status GdipGetStringFormatAlign(Handle format, out StringAlignment alignment);
+Status GdipSetStringFormatAlign(Handle format, StringAlignment alignment);
+Status GdipGetStringFormatLineAlign(Handle format, out StringAlignment alignment);
+Status GdipSetStringFormatLineAlign(Handle format, StringAlignment alignment);
+Status GdipGetStringFormatTrimming(Handle format, out StringTrimming trimming);
+Status GdipSetStringFormatTrimming(Handle format, StringTrimming trimming);
+
+Status GdipCreatePath(FillMode brushMode, out Handle path);
+Status GdipCreatePath2(GpPointF*, ubyte*, int, FillMode, out Handle);
+Status GdipCreatePath2I(GpPoint*, ubyte*, int, FillMode, out Handle);
+Status GdipDeletePath(Handle path);
+Status GdipClonePath(Handle path, out Handle clonepath);
+Status GdipResetPath(Handle path);
+Status GdipGetPathFillMode(Handle path, out FillMode fillmode);
+Status GdipSetPathFillMode(Handle path, FillMode fillmode);
+Status GdipStartPathFigure(Handle path);
+Status GdipClosePathFigure(Handle path);
+Status GdipClosePathFigures(Handle path);
+Status GdipSetPathMarker(Handle path);
+Status GdipClearPathMarkers(Handle path);
+Status GdipReversePath(Handle path);
+Status GdipGetPathLastPoint(Handle path, out GpPointF lastPoint);
+Status GdipAddPathLine(Handle path, float x1, float y1, float x2, float y2);
+Status GdipAddPathLineI(Handle path, int x1, int y1, int x2, int y2);
+Status GdipAddPathLine2(Handle path, GpPointF* points, int count);
+Status GdipAddPathLine2I(Handle path, GpPoint* points, int count);
+Status GdipAddPathArc(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle);
+Status GdipAddPathArcI(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle);
+Status GdipAddPathBezier(Handle path, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4);
+Status GdipAddPathBezierI(Handle path, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
+Status GdipAddPathBeziers(Handle path, GpPointF* points, int count);
+Status GdipAddPathBeziersI(Handle path, GpPoint* points, int count);
+Status GdipAddPathCurve(Handle path, GpPointF* points, int count);
+Status GdipAddPathCurveI(Handle path, GpPoint* points, int count);
+Status GdipAddPathCurve2(Handle path, GpPointF* points, int count, float tension);
+Status GdipAddPathCurve2I(Handle path, GpPoint* points, int count, float tension);
+Status GdipAddPathCurve3(Handle path, GpPointF* points, int count, int offset, int numberOfSegments, float tension);
+Status GdipAddPathCurve3I(Handle path, GpPoint* points, int count, int offset, int numberOfSegments, float tension);
+Status GdipAddPathClosedCurve(Handle path, GpPointF* points, int count);
+Status GdipAddPathClosedCurveI(Handle path, GpPoint* points, int count);
+Status GdipAddPathClosedCurve2(Handle path, GpPointF* points, int count, float tension);
+Status GdipAddPathClosedCurve2I(Handle path, GpPoint* points, int count, float tension);
+Status GdipAddPathRectangle(Handle path, float x, float y, float width, float height);
+Status GdipAddPathRectangleI(Handle path, int x, int y, int width, int height);
+Status GdipAddPathRectangles(Handle path, GpRectF* rects, int count);
+Status GdipAddPathRectanglesI(Handle path, GpRect* rects, int count);
+Status GdipAddPathEllipse(Handle path, float x, float y, float width, float height);
+Status GdipAddPathEllipseI(Handle path, int x, int y, int width, int height);
+Status GdipAddPathPie(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle);
+Status GdipAddPathPieI(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle);
+Status GdipAddPathPolygon(Handle path, GpPointF* points, int count);
+Status GdipAddPathPolygonI(Handle path, GpPoint* points, int count);
+Status GdipAddPathPath(Handle path, Handle addingPath, int connect);
+Status GdipAddPathString(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRectF layoutRect, Handle format);
+Status GdipAddPathStringI(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRect layoutRect, Handle format);
+Status GdipTransformPath(Handle path, Handle matrix);
+Status GdipGetPathWorldBounds(Handle path, out GpRectF bounds, Handle matrix, Handle pen);
+Status GdipFlattenPath(Handle path, Handle matrix, float flatness);
+Status GdipWidenPath(Handle path, Handle pen, Handle matrix, float flatness);
+Status GdipWindingModeOutline(Handle path, Handle matrix, float flatness);
+Status GdipWarpPath(Handle path, Handle matrix, GpPointF* points, int count, float srcx, float srcy, float srcwidth, float srcwidth, WarpMode warpMode, float flatness);
+Status GdipGetPointCount(Handle path, out int count);
+Status GdipGetPathTypes(Handle path, byte* types, int count);
+Status GdipGetPathPoints(Handle path, GpPointF* points, int count);
+Status GdipIsVisiblePathPoint(Handle path, float x, float y, Handle graphics, out int result);
+Status GdipIsVisiblePathPointI(Handle path, int x, int y, Handle graphics, out int result);
+Status GdipIsOutlineVisiblePathPoint(Handle path, float x, float y, Handle pen, Handle graphics, out int result);
+Status GdipIsOutlineVisiblePathPointI(Handle path, int x, int y, Handle pen, Handle graphics, out int result);
+Status GdipDrawPath(Handle graphics, Handle pen, Handle path);
+
+
+Status GdipCreatePathIter(out Handle iterator, Handle path);
+Status GdipDeletePathIter(Handle iterator);
+Status GdipPathIterNextSubpath(Handle iterator, out int resultCount, out int startIndex, out int endIndex, out int isClosed);
+Status GdipPathIterNextSubpathPath(Handle iterator, out int resultCount, Handle path, out int isClosed);
+Status GdipPathIterNextPathType(Handle iterator, out int resultCount, out ubyte pathType, out int startIndex, out int endIndex);
+Status GdipPathIterNextMarker(Handle iterator, out int resultCount, out int startIndex, out int endIndex);
+Status GdipPathIterNextMarkerPath(Handle iterator, out int resultCount, Handle path);
+Status GdipPathIterGetCount(Handle iterator, out int count);
+Status GdipPathIterGetSubpathCount(Handle iterator, out int count);
+Status GdipPathIterHasCurve(Handle iterator, out int hasCurve);
+Status GdipPathIterRewind(Handle iterator);
+Status GdipPathIterEnumerate(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int count);
+Status GdipPathIterCopyData(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int startIndex, int endIndex);
+
+Status GdipCreatePathGradient(GpPointF* points, int count, WrapMode wrapMode, out Handle polyGradient);
+Status GdipCreatePathGradientI(GpPoint* points, int count, WrapMode wrapMode, out Handle polyGradient);
+Status GdipCreatePathGradientFromPath(Handle path, out Handle polyGradient);
+Status GdipGetPathGradientCenterColor(Handle brush, out int colors);
+Status GdipSetPathGradientCenterColor(Handle brush, int colors);
+Status GdipGetPathGradientSurroundColorCount(Handle brush, out int count);
+Status GdipGetPathGradientSurroundColorsWithCount(Handle brush, int* color, ref int count);
+Status GdipSetPathGradientSurroundColorsWithCount(Handle brush, int* color, ref int count);
+Status GdipGetPathGradientCenterPoint(Handle brush, ref GpPointF point);
+Status GdipSetPathGradientCenterPoint(Handle brush, ref GpPointF point);
+Status GdipGetPathGradientRect(Handle brush, ref GpRectF rect);
+Status GdipGetPathGradientBlendCount(Handle brush, out int count);
+Status GdipGetPathGradientBlend(Handle brush, float* blend, float* positions, int count);
+Status GdipSetPathGradientBlend(Handle brush, float* blend, float* positions, int count);
+Status GdipGetPathGradientPresetBlendCount(Handle brush, out int count);
+Status GdipGetPathGradientPresetBlend(Handle brush, int* blend, float* positions, int count);
+Status GdipSetPathGradientPresetBlend(Handle brush, int* blend, float* positions, int count);
+Status GdipSetPathGradientSigmaBlend(Handle brush, float focus, float scale);
+Status GdipSetPathGradientLinearBlend(Handle brush, float focus, float scale);
+Status GdipGetPathGradientTransform(Handle brush, out Handle matrix);
+Status GdipSetPathGradientTransform(Handle brush, Handle matrix);
+Status GdipResetPathGradientTransform(Handle brush);
+Status GdipMultiplyPathGradientTransform(Handle brush, Handle matrix, MatrixOrder order);
+Status GdipRotatePathGradientTransform(Handle brush, float angle, MatrixOrder order);
+Status GdipTranslatePathGradientTransform(Handle brush, float dx, float dy, MatrixOrder order);
+Status GdipScalePathGradientTransform(Handle brush, float sx, float sy, MatrixOrder order);
+Status GdipGetPathGradientFocusScales(Handle brush, out float xScale, out float yScale);
+Status GdipSetPathGradientFocusScales(Handle brush, float xScale, float yScale);
+Status GdipGetPathGradientWrapMode(Handle brush, out WrapMode wrapMode);
+Status GdipSetPathGradientWrapMode(Handle brush, WrapMode wrapMode);
+
+//added
+
+Status GdipResetTextureTransform( Handle brush );
+Status GdipScaleTextureTransform( Handle brush, float sx, float sy, MatrixOrder order );
+Status GdipTranslateTextureTransform( Handle brush, float dx, float dy, MatrixOrder order);
+Status GdipStringFormatGetGenericDefault(out Handle format);
+Status GdipStringFormatGetGenericTypographic(out Handle format);
+Status GdipSetStringFormatHotkeyPrefix(Handle format, int hotkeyPrefix);
+Status GdipSetStringFormatTabStops( Handle format, float firstTabOffset, int count, float* tabStops);
+
+void loadLib_Gdip(){
+    // do nothing in this version
+}
+
+}
+else{ // version(!STATIC_GDIPLUS)
+Status function( uint* token, GdiplusStartupInput* input, GdiplusStartupOutput* output) GdiplusStartup;
+void   function(uint token) GdiplusShutdown;
+Status function(Handle hdc, out Handle graphics) GdipCreateFromHDC;
+Status function(Handle hdc, Handle hDevice, out Handle graphics) GdipCreateFromHDC2;
+Status function(Handle hwnd, out Handle graphics) GdipCreateFromHWND;
+Status function(Handle image, out Handle graphics) GdipGetImageGraphicsContext;
+Status function(Handle graphics) GdipDeleteGraphics;
+Status function(Handle graphics, out Handle hdc) GdipGetDC;
+Status function(Handle graphics, Handle hdc) GdipReleaseDC;
+Status function(Handle graphics, Handle srcgraphics, CombineMode combineMode) GdipSetClipGraphics;
+Status function(Handle graphics, int x, int y, int width, int height, CombineMode combineMode) GdipSetClipRectI;
+Status function(Handle graphics, float x, float y, float width, float height, CombineMode combineMode) GdipSetClipRect;
+Status function(Handle graphics, Handle path, CombineMode combineMode) GdipSetClipPath;
+Status function(Handle graphics, Handle region, CombineMode combineMode) GdipSetClipRegion;
+Status function(Handle graphics, HRGN hRgn, CombineMode combineMode) GdipSetClipHrgn;
+Status function(Handle graphics, out Handle region) GdipGetClip;
+Status function(Handle graphics) GdipResetClip;
+Status function(Handle graphics, out uint state) GdipSaveGraphics;
+Status function(Handle graphics, int state) GdipRestoreGraphics;
+Status function(Handle graphics, FlushIntention intention) GdipFlush;
+Status function(Handle graphics, float sx, float sy, MatrixOrder order) GdipScaleWorldTransform;
+Status function(Handle graphics, float angle, MatrixOrder order) GdipRotateWorldTransform;
+Status function(Handle graphics, float dx, float dy, MatrixOrder order) GdipTranslateWorldTransform;
+Status function(Handle graphics, Handle matrix, MatrixOrder order) GdipMultiplyWorldTransform;
+Status function(Handle graphics) GdipResetWorldTransform;
+Status function(Handle graphics, ref GpRectF dstrect, ref GpRectF srcrect, GraphicsUnit unit, out int state) GdipBeginContainer;
+Status function(Handle graphics, ref GpRect dstrect, ref GpRect srcrect, GraphicsUnit unit, out int state) GdipBeginContainerI;
+Status function(Handle graphics, out int state) GdipBeginContainer2;
+Status function(Handle graphics, int state) GdipEndContainer;
+Status function(Handle graphics, out float dpi) GdipGetDpiX;
+Status function(Handle graphics, out float dpi) GdipGetDpiY;
+Status function(Handle graphics, out GraphicsUnit unit) GdipGetPageUnit;
+Status function(Handle graphics, GraphicsUnit unit) GdipSetPageUnit;
+Status function(Handle graphics, out float scale) GdipGetPageScale;
+Status function(Handle graphics, float scale) GdipSetPageScale;
+Status function(Handle graphics, Handle matrix) GdipGetWorldTransform;
+Status function(Handle graphics, Handle matrix) GdipSetWorldTransform;
+Status function(Handle graphics, out CompositingMode compositingMode) GdipGetCompositingMode;
+Status function(Handle graphics, CompositingMode compositingMode) GdipSetCompositingMode;
+Status function(Handle graphics, out CompositingQuality compositingQuality) GdipGetCompositingQuality;
+Status function(Handle graphics, CompositingQuality compositingQuality) GdipSetCompositingQuality;
+Status function(Handle graphics, out InterpolationMode interpolationMode) GdipGetInterpolationMode;
+Status function(Handle graphics, InterpolationMode interpolationMode) GdipSetInterpolationMode;
+Status function(Handle graphics, out SmoothingMode smoothingMode) GdipGetSmoothingMode;
+Status function(Handle graphics, SmoothingMode smoothingMode) GdipSetSmoothingMode;
+Status function(Handle graphics, out PixelOffsetMode pixelOffsetMode) GdipGetPixelOffsetMode;
+Status function(Handle graphics, PixelOffsetMode pixelOffsetMode) GdipSetPixelOffsetMode;
+Status function(Handle graphics, out uint textContrast) GdipGetTextContrast;
+Status function(Handle graphics, uint textContrast) GdipSetTextContrast;
+Status function(Handle graphics, int color) GdipGraphicsClear;
+Status function(Handle graphics, Handle pen, float x1, float y1, float x2, float y2) GdipDrawLine;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawLines;
+Status function(Handle graphics, Handle pen, int x1, int y1, int x2, int y2) GdipDrawLineI;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawLinesI;
+Status function(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipDrawArc;
+Status function(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipDrawArcI;
+Status function(Handle graphics, Handle pen, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) GdipDrawBezier;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawBeziers;
+Status function(Handle graphics, Handle pen, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) GdipDrawBezierI;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawBeziersI;
+Status function(Handle graphics, Handle pen, float x, float y, float width, float height) GdipDrawRectangle;
+Status function(Handle graphics, Handle pen, GpRectF* rects, int count) GdipDrawRectangles;
+Status function(Handle graphics, Handle pen, int x, int y, int width, int height) GdipDrawRectangleI;
+Status function(Handle graphics, Handle pen, GpRect* rects, int count) GdipDrawRectanglesI;
+Status function(Handle graphics, Handle pen, float x, float y, float width, float height) GdipDrawEllipse;
+Status function(Handle graphics, Handle pen, int x, int y, int width, int height) GdipDrawEllipseI;
+Status function(Handle graphics, Handle pen, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipDrawPie;
+Status function(Handle graphics, Handle pen, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipDrawPieI;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawPolygon;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawPolygonI;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawCurve;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count, float tension) GdipDrawCurve2;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count, int offset, int numberOfSegments, float tension) GdipDrawCurve3;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawCurveI;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count, float tension) GdipDrawCurve2I;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count, int offset, int numberOfSegments, float tension) GdipDrawCurve3I;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count) GdipDrawClosedCurve;
+Status function(Handle graphics, Handle pen, GpPointF* points, int count, float tension) GdipDrawClosedCurve2;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count) GdipDrawClosedCurveI;
+Status function(Handle graphics, Handle pen, GpPoint* points, int count, float tension) GdipDrawClosedCurve2I;
+Status function(Handle graphics, Handle brush, int x, int y, int width, int height) GdipFillRectangleI;
+Status function(Handle graphics, Handle brush, float x, float y, float width, float height) GdipFillRectangle;
+Status function(Handle graphics, Handle brush, GpRect* rects, int count) GdipFillRectanglesI;
+Status function(Handle graphics, Handle brush, GpRectF* rects, int count) GdipFillRectangles;
+Status function(Handle graphics, Handle brush, GpPointF* rects, int count, FillMode fillMode) GdipFillPolygon;
+Status function(Handle graphics, Handle brush, GpPoint* rects, int count, FillMode fillMode) GdipFillPolygonI;
+Status function(Handle graphics, Handle brush, float x, float y, float width, float height) GdipFillEllipse;
+Status function(Handle graphics, Handle brush, int x, int y, int width, int height) GdipFillEllipseI;
+Status function(Handle graphics, Handle brush, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipFillPie;
+Status function(Handle graphics, Handle brush, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipFillPieI;
+Status function(Handle graphics, Handle brush, Handle path) GdipFillPath;
+Status function(Handle graphics, Handle brush, GpPointF* points, int count) GdipFillClosedCurve;
+Status function(Handle graphics, Handle brush, GpPoint* points, int count) GdipFillClosedCurveI;
+Status function(Handle graphics, Handle brush, GpPointF* points, int count, FillMode fillMode, float tension) GdipFillClosedCurve2;
+Status function(Handle graphics, Handle brush, GpPoint* points, int count, FillMode fillMode, float tension) GdipFillClosedCurve2I;
+Status function(Handle graphics, Handle brush, Handle region) GdipFillRegion;
+Status function(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, Handle brush) GdipDrawString;
+Status function(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, ref GpRectF boundingBox, int* codepointsFitted, int* linesFitted) GdipMeasureString;
+Status function(Handle format, out int count) GdipGetStringFormatMeasurableCharacterRangeCount;
+Status function(Handle format, out Handle newFormat) GdipCloneStringFormat;
+Status function(Handle graphics, wchar* string, int length, Handle font, ref GpRectF layoutRect, Handle stringFormat, int regionCount, Handle* regions) GdipMeasureCharacterRanges;
+Status function(Handle graphics, Handle image, float x, float y) GdipDrawImage;
+Status function(Handle graphics, Handle image, int x, int y) GdipDrawImageI;
+Status function(Handle graphics, Handle image, float x, float y, float width, float height) GdipDrawImageRect;
+Status function(Handle graphics, Handle image, int x, int y, int width, int height) GdipDrawImageRectI;
+Status function(Handle graphics, Handle image, float x, float y, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit) GdipDrawImagePointRect;
+Status function(Handle graphics, Handle image, int x, int y, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit) GdipDrawImagePointRectI;
+Status function(Handle graphics, Handle image, float dstx, float dsty, float dstwidth, float dstheight, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImageRectRect;
+Status function(Handle graphics, Handle image, int dstx, int dsty, int dstwidth, int dstheight, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImageRectRectI;
+Status function(Handle graphics, Handle image, GpPointF* dstpoints, int count) GdipDrawImagePoints;
+Status function(Handle graphics, Handle image, GpPoint* dstpoints, int count) GdipDrawImagePointsI;
+Status function(Handle graphics, Handle image, GpPointF* dstpoints, int count, float srcx, float srcy, float srcwidth, float srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImagePointsRect;
+Status function(Handle graphics, Handle image, GpPoint* dstpoints, int count, int srcx, int srcy, int srcwidth, int srcheight, GraphicsUnit srcUnit, Handle imageAttributes, GpDrawImageAbort callback, void* callbakcData) GdipDrawImagePointsRectI;
+Status function(Handle graphics, float x, float y, out int result) GdipIsVisiblePoint;
+Status function(Handle graphics, int x, int y, out int result) GdipIsVisiblePointI;
+Status function(Handle graphics, float x, float y, float width, float height, out int result) GdipIsVisibleRect;
+Status function(Handle graphics, int x, int y, int width, int height, out int result) GdipIsVisibleRectI;
+Status function(Handle graphics, out TextRenderingHint mode) GdipGetTextRenderingHint;
+Status function(Handle graphics, TextRenderingHint mode) GdipSetTextRenderingHint;
+Status function(Handle graphics, out GpRectF rect) GdipGetClipBounds;
+Status function(Handle graphics, out GpRect rect) GdipGetClipBoundsI;
+Status function(Handle graphics, out GpRectF rect) GdipGetVisibleClipBounds;
+Status function(Handle graphics, out GpRect rect) GdipGetVisibleClipBoundsI;
+Status function(Handle graphics, out int result) GdipIsClipEmpty;
+Status function(Handle graphics, out int result) GdipIsVisibleClipEmpty;
+Status function(Handle graphics, out int x, out int y) GdipGetRenderingOrigin;
+Status function(Handle graphics, int x, int y) GdipSetRenderingOrigin;
+Status function(Handle graphics, ref int argb) GdipGetNearestColor;
+Status function(Handle graphics, uint sizeData, ubyte* data) GdipComment;
+Status function(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPointF* points, int count) GdipTransformPoints;
+Status function(Handle graphics, CoordinateSpace destSpace, CoordinateSpace srcSpace, GpPoint* points, int count) GdipTransformPointsI;
+Status function(out Handle matrix) GdipCreateMatrix;
+Status function(float m11, float m12, float m21, float m22, float dx, float dy, out Handle matrix) GdipCreateMatrix2;
+Status function(ref GpRectF rect, GpPointF* dstplg, out Handle matrix) GdipCreateMatrix3;
+Status function(ref GpRect rect, GpPoint* dstplg, out Handle matrix) GdipCreateMatrix3I;
+Status function(Handle matrix) GdipDeleteMatrix;
+Status function(Handle matrix, out Handle cloneMatrix) GdipCloneMatrix;
+Status function(Handle matrix, float* matrixOut) GdipGetMatrixElements;
+Status function(Handle matrix, float m11, float m12, float m21, float m22, float xy, float dy) GdipSetMatrixElements;
+Status function(Handle matrix) GdipInvertMatrix;
+Status function(Handle matrix, Handle matrix2, MatrixOrder order) GdipMultiplyMatrix;
+Status function(Handle matrix, float scaleX, float scaleY, MatrixOrder order) GdipScaleMatrix;
+Status function(Handle matrix, float shearX, float shearY, MatrixOrder order) GdipShearMatrix;
+Status function(Handle matrix, float angle, MatrixOrder order) GdipRotateMatrix;
+Status function(Handle matrix, float offsetX, float offsetY, MatrixOrder order) GdipTranslateMatrix;
+Status function(Handle matrix, out int result) GdipIsMatrixIdentity;
+Status function(Handle matrix, out int result) GdipIsMatrixInvertible;
+Status function(Handle matrix, GpPointF *pts, int count) GdipTransformMatrixPoints;
+Status function(Handle brush, out BrushType type ) GdipGetBrushType;
+Status function(Handle brush, out Handle cloneBrush) GdipCloneBrush;
+Status function(Handle brush) GdipDeleteBrush;
+Status function(int color, out Handle brush) GdipCreateSolidFill;
+Status function(Handle brush, out int color) GdipGetSolidFillColor;
+Status function(Handle brush, int color) GdipSetSolidFillColor;
+Status function(Handle image, WrapMode wrapMode, out Handle texture) GdipCreateTexture;
+Status function(Handle image, WrapMode wrapMode, float x, float y, float width, float height, out Handle texture) GdipCreateTexture2;
+Status function(Handle image, WrapMode wrapMode, int x, int y, int width, int height, out Handle texture) GdipCreateTexture2I;
+Status function(Handle brush, out Handle image) GdipGetTextureImage;
+Status function(Handle brush, out Handle matrix) GdipGetTextureTransform;
+Status function(Handle brush, Handle matrix) GdipSetTextureTransform;
+Status function(Handle brush, out WrapMode wrapmode) GdipGetTextureWrapMode;
+Status function(Handle brush, WrapMode wrapmode) GdipSetTextureWrapMode;
+Status function(HatchStyle hatchstyle, int forecol, int backcol, out Handle brush) GdipCreateHatchBrush;
+Status function(Handle brush, out HatchStyle hatchstyle) GdipGetHatchStyle;
+Status function(Handle brush, out int forecol) GdipGetHatchForegroundColor;
+Status function(Handle brush, out int backcol) GdipGetHatchBackgroundColor;
+Status function(ref GpPoint point1, ref GpPoint point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushI;
+Status function(ref GpPointF point1, ref GpPointF point2, int color1, int color2, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrush;
+Status function(ref GpRect rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRectI;
+Status function(ref GpRectF rect, int color1, int color2, LinearGradientMode mode, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRect;
+Status function(ref GpRect rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRectWithAngleI;
+Status function(ref GpRectF rect, int color1, int color2, float angle, int isAngleScalable, WrapMode wrapMode, out Handle lineGradient) GdipCreateLineBrushFromRectWithAngle;
+Status function(Handle brush, out int count) GdipGetLineBlendCount;
+Status function(Handle brush, float* blend, float* positions, int count) GdipGetLineBlend;
+Status function(Handle brush, float* blend, float* positions, int count) GdipSetLineBlend;
+Status function(Handle brush, out int count) GdipGetLinePresetBlendCount;
+Status function(Handle brush, uint* blend, float* positions, int count) GdipGetLinePresetBlend;
+Status function(Handle brush, uint* blend, float* positions, int count) GdipSetLinePresetBlend;
+Status function(Handle brush, out WrapMode wrapmode) GdipGetLineWrapMode;
+Status function(Handle brush, WrapMode wrapmode) GdipSetLineWrapMode;
+Status function(Handle brush, out GpRectF rect) GdipGetLineRect;
+Status function(Handle brush, int* colors) GdipGetLineColors;
+Status function(Handle brush, int color1, int color2) GdipSetLineColors;
+Status function(Handle brush, out int useGammaCorrection) GdipGetLineGammaCorrection;
+Status function(Handle brush, int useGammaCorrection) GdipSetLineGammaCorrection;
+Status function(Handle brush, float focus, float scale) GdipSetLineSigmaBlend;
+Status function(Handle brush, float focus, float scale) GdipSetLineLinearBlend;
+Status function(Handle brush, out Handle matrix) GdipGetLineTransform;
+Status function(Handle brush, Handle matrix) GdipSetLineTransform;
+Status function(Handle brush) GdipResetLineTransform;
+Status function(Handle brush, Handle matrix, MatrixOrder order) GdipMultiplyLineTransform;
+Status function(Handle brush, float dx, float dy, MatrixOrder order) GdipTranslateLineTransform;
+Status function(Handle brush, float sx, float sy, MatrixOrder order) GdipScaleLineTransform;
+Status function(Handle brush, float angle, MatrixOrder order) GdipRotateLineTransform;
+Status function(int argb, float width, GraphicsUnit unit, out Handle pen) GdipCreatePen1;
+Status function(Handle brush, float width, GraphicsUnit unit, out Handle pen) GdipCreatePen2;
+Status function(Handle pen) GdipDeletePen;
+Status function(Handle pen, out Handle clonepen) GdipClonePen;
+Status function(Handle pen, LineCap startCap, LineCap endCap, DashCap dashCap) GdipSetPenLineCap197819;
+Status function(Handle pen, out LineCap startCap) GdipGetPenStartCap;
+Status function(Handle pen, LineCap startCap) GdipSetPenStartCap;
+Status function(Handle pen, out LineCap endCap) GdipGetPenEndCap;
+Status function(Handle pen, LineCap endCap) GdipSetPenEndCap;
+Status function(Handle pen, out DashCap endCap) GdipGetPenDashCap197819;
+Status function(Handle pen, DashCap endCap) GdipSetPenDashCap197819;
+Status function(Handle pen, out LineJoin lineJoin) GdipGetPenLineJoin;
+Status function(Handle pen, LineJoin lineJoin) GdipSetPenLineJoin;
+Status function(Handle pen, out float miterLimit) GdipGetPenMiterLimit;
+Status function(Handle pen, float miterLimit) GdipSetPenMiterLimit;
+Status function(Handle pen, out PenAlignment penMode) GdipGetPenMode;
+Status function(Handle pen, PenAlignment penMode) GdipSetPenMode;
+Status function(Handle pen, out Handle matrix) GdipGetPenTransform;
+Status function(Handle pen, Handle matrix) GdipSetPenTransform;
+Status function(Handle pen) GdipResetPenTransform;
+Status function(Handle pen, Handle matrix, MatrixOrder order) GdipMultiplyPenTransform;
+Status function(Handle pen, float dx, float dy, MatrixOrder order) GdipTranslatePenTransform;
+Status function(Handle pen, float sx, float sy, MatrixOrder order) GdipScalePenTransform;
+Status function(Handle pen, float angle, MatrixOrder order) GdipRotatePenTransform;
+Status function(Handle pen, out int argb) GdipGetPenColor;
+Status function(Handle pen, int argb) GdipSetPenColor;
+Status function(Handle pen, out float width) GdipGetPenWidth;
+Status function(Handle pen, float width) GdipSetPenWidth;
+Status function(Handle pen, out PenType type) GdipGetPenFillType;
+Status function(Handle pen, out Handle brush) GdipGetPenBrushFill;
+Status function(Handle pen, Handle brush) GdipSetPenBrushFill;
+Status function(Handle pen, out DashStyle dashstyle) GdipGetPenDashStyle;
+Status function(Handle pen, DashStyle dashstyle) GdipSetPenDashStyle;
+Status function(Handle pen, out float offset) GdipGetPenDashOffset;
+Status function(Handle pen, float offset) GdipSetPenDashOffset;
+Status function(Handle pen, out int count) GdipGetPenDashCount;
+Status function(Handle pen, float* dash, int count) GdipGetPenDashArray;
+Status function(Handle pen, float* dash, int count) GdipSetPenDashArray;
+Status function(Handle pen, out int count) GdipGetPenCompoundCount;
+Status function(Handle pen, float* dash, int count) GdipGetPenCompoundArray;
+Status function(Handle pen, float* dash, int count) GdipSetPenCompoundArray;
+Status function(out Handle region) GdipCreateRegion;
+Status function(ref GpRectF rect, out Handle region) GdipCreateRegionRect;
+Status function(ref GpRect rect, out Handle region) GdipCreateRegionRectI;
+Status function(Handle path, out Handle region) GdipCreateRegionPath;
+Status function(Handle hRgn, out Handle region) GdipCreateRegionHrgn;
+Status function(Handle region) GdipDeleteRegion;
+Status function(Handle region) GdipSetInfinite;
+Status function(Handle region) GdipSetEmpty;
+Status function(Handle region, ref GpRectF rect, CombineMode combineMode) GdipCombineRegionRect;
+Status function(Handle region, ref GpRect rect, CombineMode combineMode) GdipCombineRegionRectI;
+Status function(Handle region, Handle path, CombineMode combineMode) GdipCombineRegionPath;
+Status function(Handle region, Handle region, CombineMode combineMode) GdipCombineRegionRegion;
+Status function(Handle region, float dx, float dy) GdipTranslateRegion;
+Status function(Handle region, int dx, int dy) GdipTranslateRegionI;
+Status function(Handle region, Handle matrix) GdipTransformRegion;
+Status function(Handle region, Handle graphics, out GpRectF rect) GdipGetRegionBounds;
+Status function(Handle region, Handle graphics, out Handle hRgn) GdipGetRegionHRgn;
+Status function(Handle region, Handle graphics, out int result) GdipIsEmptyRegion;
+Status function(Handle region, Handle graphics, out int result) GdipIsInfiniteRegion;
+Status function(Handle region1, Handle region2, Handle graphics, out int result) GdipIsEqualRegion;
+Status function(Handle region, float x, float y, Handle graphics, out int result) GdipIsVisibleRegionPoint;
+Status function(Handle region, float x, float y, float width, float height, Handle graphics, out int result) GdipIsVisibleRegionRect;
+Status function(Handle region, int x, int y, Handle graphics, out int result) GdipIsVisibleRegionPointI;
+Status function(Handle region, int x, int y, int width, int height, Handle graphics, out int result) GdipIsVisibleRegionRectI;
+Status function(Handle region, out int count, Handle matrix) GdipGetRegionScansCount;
+Status function(Handle region, GpRectF* rects, out int count, Handle matrix) GdipGetRegionScans;
+Status function(Handle image) GdipDisposeImage;
+Status function(Handle image) GdipImageForceValidation;
+Status function(wchar* filename, out Handle image) GdipLoadImageFromFileICM;
+Status function(wchar* filename, out Handle image) GdipLoadImageFromFile;
+Status function(out int numEncoders, out int size) GdipGetImageEncodersSize;
+Status function(Handle image, out Handle cloneImage) GdipCloneImage;
+Status function(Handle image, out int type) GdipGetImageType;
+Status function(Handle image, out uint flags) GdipGetImageFlags;
+Status function(Handle image, out uint width) GdipGetImageWidth;
+Status function(Handle image, out uint height) GdipGetImageHeight;
+Status function(Handle image, out float resolution) GdipGetImageHorizontalResolution;
+Status function(Handle image, out float resolution) GdipGetImageVerticalResolution;
+Status function(Handle image, out int numOfProperty) GdipGetPropertyCount;
+Status function(Handle image, int numOfProperty, int* list) GdipGetPropertyIdList;
+Status function(Handle image, out PixelFormat format) GdipGetImagePixelFormat;
+Status function(Handle image, out float width, out float height) GdipGetImageDimension;
+Status function(Handle image, int thumbWidth, int thumbHeight, out Handle thumbImage, GpGetThumbnailImageAbort callback, void* callbackData) GdipGetImageThumbnail;
+Status function(Handle image, out int count) GdipImageGetFrameDimensionsCount;
+Status function(Handle image, RotateFlipType rotateFlipType) GdipImageRotateFlip;
+Status function(Handle image, int propId, out uint propSize) GdipGetPropertyItemSize;
+Status function(Handle image, int propId, uint propSize, GpPropertyItem* buffer) GdipGetPropertyItem;
+Status function(Handle image, ref GpPropertyItem buffer) GdipSetPropertyItem;
+Status function(Handle image, int propId) GdipRemovePropertyItem;
+Status function(Handle image, out uint totalBufferSize, ref int numProperties) GdipGetPropertySize;
+Status function(Handle image, uint totalBufferSize, int numProperties, GpPropertyItem* allItems) GdipGetAllPropertyItems;
+Status function(Handle image, out GpRectF srcRect, out GraphicsUnit srcUnit) GdipGetImageBounds;
+Status function(Handle image, out int size) GdipGetImagePaletteSize;
+Status function(Handle image, GpColorPalette* palette, int size) GdipGetImagePalette;
+Status function(Handle image, GpColorPalette* palette) GdipSetImagePalette;
+Status function(int width, int height, int stride, PixelFormat format, ubyte* scan0, out Handle bitmap) GdipCreateBitmapFromScan0;
+Status function(Handle hbitmap, Handle hpalette, out Handle bitmap) GdipCreateBitmapFromHBITMAP;
+Status function(Handle hicon, out Handle bitmap) GdipCreateBitmapFromHICON;
+Status function(wchar* fileName, out Handle bitmap) GdipCreateBitmapFromFileICM;
+Status function(wchar* fileName, out Handle bitmap) GdipCreateBitmapFromFile;
+Status function(int width, int height, Handle graphics, out Handle bitmap) GdipCreateBitmapFromGraphics;
+Status function(float x, float y, float width, float height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap) GdipCloneBitmapArea;
+Status function(int x, int y, int width, int height, PixelFormat format, Handle srcbitmap, out Handle dstbitmap) GdipCloneBitmapAreaI;
+Status function(Handle bitmap, int x, int y, out int color) GdipBitmapGetPixel;
+Status function(Handle bitmap, int x, int y, int color) GdipBitmapSetPixel;
+Status function(Handle bitmap, GpRect* rect, ImageLockMode flags, PixelFormat format, GpBitmapData* lockedBitmapData) GdipBitmapLockBits;
+Status function(Handle bitmap, GpBitmapData* lockedBitmapData) GdipBitmapUnlockBits;
+Status function(Handle bitmap, float xdpi, float ydpi) GdipBitmapSetResolution;
+Status function(Handle bitmap, out Handle hbmReturn) GdipCreateHICONFromBitmap;
+Status function(Handle bitmap, out Handle hbmReturn, int background) GdipCreateHBITMAPFromBitmap;
+Status function(out Handle imageattr) GdipCreateImageAttributes;
+Status function(Handle imageattr) GdipDisposeImageAttributes;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, GpColorMatrix* colorMatrix, GpColorMatrix* grayMatrix, ColorMatrixFlag flags) GdipSetImageAttributesColorMatrix;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, float threshold) GdipSetImageAttributesThreshold;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, float gamma) GdipSetImageAttributesGamma;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag) GdipSetImageAttributesNoOp;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, int colorLow, int colorHigh) GdipSetImageAttributesColorKeys;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, ColorChannelFlag flags) GdipSetImageAttributesOutputChannel;
+Status function(Handle imageattr, ColorAdjustType type, int enableFlag, wchar* colorProfileFilename) GdipSetImageAttributesOutputChannelColorProfile;
+Status function(Handle imageattr, WrapMode wrap, int argb, int clamp) GdipSetImageAttributesWrapMode;
+Status function(out Handle fontCollection) GdipNewInstalledFontCollection;
+Status function(out Handle fontCollection) GdipNewPrivateFontCollection;
+Status function(Handle fontCollection) GdipDeletePrivateFontCollection;
+Status function(Handle fontCollection, wchar* filename) GdipPrivateAddFontFile;
+Status function(Handle fontCollection, void* memory, int length) GdipPrivateAddMemoryFont;
+Status function(Handle fontCollection, out int numFound) GdipGetFontCollectionFamilyCount;
+Status function(Handle fontCollection, int numSought, Handle* gpfamilies, out int numFound) GdipGetFontCollectionFamilyList;
+Status function(wchar* name, Handle fontCollection, out Handle FontFamily) GdipCreateFontFamilyFromName;
+Status function(Handle FontFamily) GdipDeleteFontFamily;
+Status function(Handle FontFamily, out Handle clonedFontFamily) GdipCloneFontFamily;
+Status function(Handle family, wchar* name, int language) GdipGetFamilyName;
+Status function(out Handle nativeFamily) GdipGetGenericFontFamilyMonospace;
+Status function(out Handle nativeFamily) GdipGetGenericFontFamilySerif;
+Status function(out Handle nativeFamily) GdipGetGenericFontFamilySansSerif;
+Status function(Handle family, FontStyle style, out short EmHeight) GdipGetEmHeight;
+Status function(Handle family, FontStyle style, out short CellAscent) GdipGetCellAscent;
+Status function(Handle family, FontStyle style, out short CellDescent) GdipGetCellDescent;
+Status function(Handle family, FontStyle style, out short LineSpacing) GdipGetLineSpacing;
+Status function(Handle family, FontStyle style, out int IsStyleAvailable) GdipIsStyleAvailable;
+Status function(Handle fontFamily, float emSize, int style, int unit, out Handle font) GdipCreateFont;
+Status function(Handle hdc, out Handle font) GdipCreateFontFromDC;
+Status function(Handle font) GdipDeleteFont;
+Status function(Handle font, out Handle cloneFont) GdipCloneFont;
+Status function(Handle font, out float size) GdipGetFontSize;
+Status function(Handle font, Handle graphics, out float height) GdipGetFontHeight;
+Status function(Handle font, float dpi, out float height) GdipGetFontHeightGivenDPI;
+Status function(Handle font, out FontStyle style) GdipGetFontStyle;
+Status function(Handle font, out GraphicsUnit unit) GdipGetFontUnit;
+Status function(Handle font, out Handle family) GdipGetFamily;
+Status function( Handle hdc, ref LOGFONTW logfont, out Handle font) GdipCreateFontFromLogfontW;
+Status function( Handle hdc, ref LOGFONTA logfont, out Handle font ) GdipCreateFontFromLogfontA;
+Status function(Handle font, Handle graphics, out LOGFONTW logfontW) GdipGetLogFontW;
+Status function(StringFormatFlags formatAttributes, int language, out Handle format) GdipCreateStringFormat;
+Status function(Handle format) GdipDeleteStringFormat;
+Status function(Handle format, out StringFormatFlags flags) GdipGetStringFormatFlags;
+Status function(Handle format, StringFormatFlags flags) GdipSetStringFormatFlags;
+Status function(Handle format, out StringAlignment alignment) GdipGetStringFormatAlign;
+Status function(Handle format, StringAlignment alignment) GdipSetStringFormatAlign;
+Status function(Handle format, out StringAlignment alignment) GdipGetStringFormatLineAlign;
+Status function(Handle format, StringAlignment alignment) GdipSetStringFormatLineAlign;
+Status function(Handle format, out StringTrimming trimming) GdipGetStringFormatTrimming;
+Status function(Handle format, StringTrimming trimming) GdipSetStringFormatTrimming;
+Status function(FillMode brushMode, out Handle path) GdipCreatePath;
+Status function(GpPointF*, ubyte*, int, FillMode, out Handle) GdipCreatePath2;
+Status function(GpPoint*, ubyte*, int, FillMode, out Handle) GdipCreatePath2I;
+Status function(Handle path) GdipDeletePath;
+Status function(Handle path, out Handle clonepath) GdipClonePath;
+Status function(Handle path) GdipResetPath;
+Status function(Handle path, out FillMode fillmode) GdipGetPathFillMode;
+Status function(Handle path, FillMode fillmode) GdipSetPathFillMode;
+Status function(Handle path) GdipStartPathFigure;
+Status function(Handle path) GdipClosePathFigure;
+Status function(Handle path) GdipClosePathFigures;
+Status function(Handle path) GdipSetPathMarker;
+Status function(Handle path) GdipClearPathMarkers;
+Status function(Handle path) GdipReversePath;
+Status function(Handle path, out GpPointF lastPoint) GdipGetPathLastPoint;
+Status function(Handle path, float x1, float y1, float x2, float y2) GdipAddPathLine;
+Status function(Handle path, int x1, int y1, int x2, int y2) GdipAddPathLineI;
+Status function(Handle path, GpPointF* points, int count) GdipAddPathLine2;
+Status function(Handle path, GpPoint* points, int count) GdipAddPathLine2I;
+Status function(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipAddPathArc;
+Status function(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipAddPathArcI;
+Status function(Handle path, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) GdipAddPathBezier;
+Status function(Handle path, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) GdipAddPathBezierI;
+Status function(Handle path, GpPointF* points, int count) GdipAddPathBeziers;
+Status function(Handle path, GpPoint* points, int count) GdipAddPathBeziersI;
+Status function(Handle path, GpPointF* points, int count) GdipAddPathCurve;
+Status function(Handle path, GpPoint* points, int count) GdipAddPathCurveI;
+Status function(Handle path, GpPointF* points, int count, float tension) GdipAddPathCurve2;
+Status function(Handle path, GpPoint* points, int count, float tension) GdipAddPathCurve2I;
+Status function(Handle path, GpPointF* points, int count, int offset, int numberOfSegments, float tension) GdipAddPathCurve3;
+Status function(Handle path, GpPoint* points, int count, int offset, int numberOfSegments, float tension) GdipAddPathCurve3I;
+Status function(Handle path, GpPointF* points, int count) GdipAddPathClosedCurve;
+Status function(Handle path, GpPoint* points, int count) GdipAddPathClosedCurveI;
+Status function(Handle path, GpPointF* points, int count, float tension) GdipAddPathClosedCurve2;
+Status function(Handle path, GpPoint* points, int count, float tension) GdipAddPathClosedCurve2I;
+Status function(Handle path, float x, float y, float width, float height) GdipAddPathRectangle;
+Status function(Handle path, int x, int y, int width, int height) GdipAddPathRectangleI;
+Status function(Handle path, GpRectF* rects, int count) GdipAddPathRectangles;
+Status function(Handle path, GpRect* rects, int count) GdipAddPathRectanglesI;
+Status function(Handle path, float x, float y, float width, float height) GdipAddPathEllipse;
+Status function(Handle path, int x, int y, int width, int height) GdipAddPathEllipseI;
+Status function(Handle path, float x, float y, float width, float height, float startAngle, float sweepAngle) GdipAddPathPie;
+Status function(Handle path, int x, int y, int width, int height, float startAngle, float sweepAngle) GdipAddPathPieI;
+Status function(Handle path, GpPointF* points, int count) GdipAddPathPolygon;
+Status function(Handle path, GpPoint* points, int count) GdipAddPathPolygonI;
+Status function(Handle path, Handle addingPath, int connect) GdipAddPathPath;
+Status function(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRectF layoutRect, Handle format) GdipAddPathString;
+Status function(Handle path, wchar* string, int length, Handle family, FontStyle style, float emSize, ref GpRect layoutRect, Handle format) GdipAddPathStringI;
+Status function(Handle path, Handle matrix) GdipTransformPath;
+Status function(Handle path, out GpRectF bounds, Handle matrix, Handle pen) GdipGetPathWorldBounds;
+Status function(Handle path, Handle matrix, float flatness) GdipFlattenPath;
+Status function(Handle path, Handle pen, Handle matrix, float flatness) GdipWidenPath;
+Status function(Handle path, Handle matrix, float flatness) GdipWindingModeOutline;
+Status function(Handle path, Handle matrix, GpPointF* points, int count, float srcx, float srcy, float srcwidth, float srcwidth, WarpMode warpMode, float flatness) GdipWarpPath;
+Status function(Handle path, out int count) GdipGetPointCount;
+Status function(Handle path, byte* types, int count) GdipGetPathTypes;
+Status function(Handle path, GpPointF* points, int count) GdipGetPathPoints;
+Status function(Handle path, float x, float y, Handle graphics, out int result) GdipIsVisiblePathPoint;
+Status function(Handle path, int x, int y, Handle graphics, out int result) GdipIsVisiblePathPointI;
+Status function(Handle path, float x, float y, Handle pen, Handle graphics, out int result) GdipIsOutlineVisiblePathPoint;
+Status function(Handle path, int x, int y, Handle pen, Handle graphics, out int result) GdipIsOutlineVisiblePathPointI;
+Status function(Handle graphics, Handle pen, Handle path) GdipDrawPath;
+Status function(out Handle iterator, Handle path) GdipCreatePathIter;
+Status function(Handle iterator) GdipDeletePathIter;
+Status function(Handle iterator, out int resultCount, out int startIndex, out int endIndex, out int isClosed) GdipPathIterNextSubpath;
+Status function(Handle iterator, out int resultCount, Handle path, out int isClosed) GdipPathIterNextSubpathPath;
+Status function(Handle iterator, out int resultCount, out ubyte pathType, out int startIndex, out int endIndex) GdipPathIterNextPathType;
+Status function(Handle iterator, out int resultCount, out int startIndex, out int endIndex) GdipPathIterNextMarker;
+Status function(Handle iterator, out int resultCount, Handle path) GdipPathIterNextMarkerPath;
+Status function(Handle iterator, out int count) GdipPathIterGetCount;
+Status function(Handle iterator, out int count) GdipPathIterGetSubpathCount;
+Status function(Handle iterator, out int hasCurve) GdipPathIterHasCurve;
+Status function(Handle iterator) GdipPathIterRewind;
+Status function(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int count) GdipPathIterEnumerate;
+Status function(Handle iterator, out int resultCount, GpPointF* points, ubyte* types, int startIndex, int endIndex) GdipPathIterCopyData;
+Status function(GpPointF* points, int count, WrapMode wrapMode, out Handle polyGradient) GdipCreatePathGradient;
+Status function(GpPoint* points, int count, WrapMode wrapMode, out Handle polyGradient) GdipCreatePathGradientI;
+Status function(Handle path, out Handle polyGradient) GdipCreatePathGradientFromPath;
+Status function(Handle brush, out int colors) GdipGetPathGradientCenterColor;
+Status function(Handle brush, int colors) GdipSetPathGradientCenterColor;
+Status function(Handle brush, out int count) GdipGetPathGradientSurroundColorCount;
+Status function(Handle brush, int* color, ref int count) GdipGetPathGradientSurroundColorsWithCount;
+Status function(Handle brush, int* color, ref int count) GdipSetPathGradientSurroundColorsWithCount;
+Status function(Handle brush, ref GpPointF point) GdipGetPathGradientCenterPoint;
+Status function(Handle brush, ref GpPointF point) GdipSetPathGradientCenterPoint;
+Status function(Handle brush, ref GpRectF rect) GdipGetPathGradientRect;
+Status function(Handle brush, out int count) GdipGetPathGradientBlendCount;
+Status function(Handle brush, float* blend, float* positions, int count) GdipGetPathGradientBlend;
+Status function(Handle brush, float* blend, float* positions, int count) GdipSetPathGradientBlend;
+Status function(Handle brush, out int count) GdipGetPathGradientPresetBlendCount;
+Status function(Handle brush, int* blend, float* positions, int count) GdipGetPathGradientPresetBlend;
+Status function(Handle brush, int* blend, float* positions, int count) GdipSetPathGradientPresetBlend;
+Status function(Handle brush, float focus, float scale) GdipSetPathGradientSigmaBlend;
+Status function(Handle brush, float focus, float scale) GdipSetPathGradientLinearBlend;
+Status function(Handle brush, out Handle matrix) GdipGetPathGradientTransform;
+Status function(Handle brush, Handle matrix) GdipSetPathGradientTransform;
+Status function(Handle brush) GdipResetPathGradientTransform;
+Status function(Handle brush, Handle matrix, MatrixOrder order) GdipMultiplyPathGradientTransform;
+Status function(Handle brush, float angle, MatrixOrder order) GdipRotatePathGradientTransform;
+Status function(Handle brush, float dx, float dy, MatrixOrder order) GdipTranslatePathGradientTransform;
+Status function(Handle brush, float sx, float sy, MatrixOrder order) GdipScalePathGradientTransform;
+Status function(Handle brush, out float xScale, out float yScale) GdipGetPathGradientFocusScales;
+Status function(Handle brush, float xScale, float yScale) GdipSetPathGradientFocusScales;
+Status function(Handle brush, out WrapMode wrapMode) GdipGetPathGradientWrapMode;
+Status function(Handle brush, WrapMode wrapMode) GdipSetPathGradientWrapMode;
+Status function( Handle brush ) GdipResetTextureTransform;
+Status function( Handle brush, float sx, float sy, MatrixOrder order ) GdipScaleTextureTransform;
+Status function( Handle brush, float dx, float dy, MatrixOrder order) GdipTranslateTextureTransform;
+Status function(out Handle format) GdipStringFormatGetGenericDefault;
+Status function(out Handle format) GdipStringFormatGetGenericTypographic;
+Status function(Handle format, int hotkeyPrefix) GdipSetStringFormatHotkeyPrefix;
+Status function( Handle format, float firstTabOffset, int count, float* tabStops) GdipSetStringFormatTabStops;
+
+struct Symbol {
+    char[] name;
+    void** symbol;
+}
+
+Symbol[] symbols = [
+    { "GdiplusStartup", cast(void**)& GdiplusStartup },
+    { "GdiplusShutdown", cast(void**)& GdiplusShutdown },
+    { "GdipCreateFromHDC", cast(void**)& GdipCreateFromHDC },
+    { "GdipCreateFromHDC2", cast(void**)& GdipCreateFromHDC2 },
+    { "GdipCreateFromHWND", cast(void**)& GdipCreateFromHWND },
+    { "GdipGetImageGraphicsContext", cast(void**)& GdipGetImageGraphicsContext },
+    { "GdipDeleteGraphics", cast(void**)& GdipDeleteGraphics },
+    { "GdipGetDC", cast(void**)& GdipGetDC },
+    { "GdipReleaseDC", cast(void**)& GdipReleaseDC },
+    { "GdipSetClipGraphics", cast(void**)& GdipSetClipGraphics },
+    { "GdipSetClipRectI", cast(void**)& GdipSetClipRectI },
+    { "GdipSetClipRect", cast(void**)& GdipSetClipRect },
+    { "GdipSetClipPath", cast(void**)& GdipSetClipPath },
+    { "GdipSetClipRegion", cast(void**)& GdipSetClipRegion },
+    { "GdipSetClipHrgn", cast(void**)& GdipSetClipHrgn },
+    { "GdipGetClip", cast(void**)& GdipGetClip },
+    { "GdipResetClip", cast(void**)& GdipResetClip },
+    { "GdipSaveGraphics", cast(void**)& GdipSaveGraphics },
+    { "GdipRestoreGraphics", cast(void**)& GdipRestoreGraphics },
+    { "GdipFlush", cast(void**)& GdipFlush },
+    { "GdipScaleWorldTransform", cast(void**)& GdipScaleWorldTransform },
+    { "GdipRotateWorldTransform", cast(void**)& GdipRotateWorldTransform },
+    { "GdipTranslateWorldTransform", cast(void**)& GdipTranslateWorldTransform },
+    { "GdipMultiplyWorldTransform", cast(void**)& GdipMultiplyWorldTransform },
+    { "GdipResetWorldTransform", cast(void**)& GdipResetWorldTransform },
+    { "GdipBeginContainer", cast(void**)& GdipBeginContainer },
+    { "GdipBeginContainerI", cast(void**)& GdipBeginContainerI },
+    { "GdipBeginContainer2", cast(void**)& GdipBeginContainer2 },
+    { "GdipEndContainer", cast(void**)& GdipEndContainer },
+    { "GdipGetDpiX", cast(void**)& GdipGetDpiX },
+    { "GdipGetDpiY", cast(void**)& GdipGetDpiY },
+    { "GdipGetPageUnit", cast(void**)& GdipGetPageUnit },
+    { "GdipSetPageUnit", cast(void**)& GdipSetPageUnit },
+    { "GdipGetPageScale", cast(void**)& GdipGetPageScale },
+    { "GdipSetPageScale", cast(void**)& GdipSetPageScale },
+    { "GdipGetWorldTransform", cast(void**)& GdipGetWorldTransform },
+    { "GdipSetWorldTransform", cast(void**)& GdipSetWorldTransform },
+    { "GdipGetCompositingMode", cast(void**)& GdipGetCompositingMode },
+    { "GdipSetCompositingMode", cast(void**)& GdipSetCompositingMode },
+    { "GdipGetCompositingQuality", cast(void**)& GdipGetCompositingQuality },
+    { "GdipSetCompositingQuality", cast(void**)& GdipSetCompositingQuality },
+    { "GdipGetInterpolationMode", cast(void**)& GdipGetInterpolationMode },
+    { "GdipSetInterpolationMode", cast(void**)& GdipSetInterpolationMode },
+    { "GdipGetSmoothingMode", cast(void**)& GdipGetSmoothingMode },
+    { "GdipSetSmoothingMode", cast(void**)& GdipSetSmoothingMode },
+    { "GdipGetPixelOffsetMode", cast(void**)& GdipGetPixelOffsetMode },
+    { "GdipSetPixelOffsetMode", cast(void**)& GdipSetPixelOffsetMode },
+    { "GdipGetTextContrast", cast(void**)& GdipGetTextContrast },
+    { "GdipSetTextContrast", cast(void**)& GdipSetTextContrast },
+    { "GdipGraphicsClear", cast(void**)& GdipGraphicsClear },
+    { "GdipDrawLine", cast(void**)& GdipDrawLine },
+    { "GdipDrawLines", cast(void**)& GdipDrawLines },
+    { "GdipDrawLineI", cast(void**)& GdipDrawLineI },
+    { "GdipDrawLinesI", cast(void**)& GdipDrawLinesI },
+    { "GdipDrawArc", cast(void**)& GdipDrawArc },
+    { "GdipDrawArcI", cast(void**)& GdipDrawArcI },
+    { "GdipDrawBezier", cast(void**)& GdipDrawBezier },
+    { "GdipDrawBeziers", cast(void**)& GdipDrawBeziers },
+    { "GdipDrawBezierI", cast(void**)& GdipDrawBezierI },
+    { "GdipDrawBeziersI", cast(void**)& GdipDrawBeziersI },
+    { "GdipDrawRectangle", cast(void**)& GdipDrawRectangle },
+    { "GdipDrawRectangles", cast(void**)& GdipDrawRectangles },
+    { "GdipDrawRectangleI", cast(void**)& GdipDrawRectangleI },
+    { "GdipDrawRectanglesI", cast(void**)& GdipDrawRectanglesI },
+    { "GdipDrawEllipse", cast(void**)& GdipDrawEllipse },
+    { "GdipDrawEllipseI", cast(void**)& GdipDrawEllipseI },
+    { "GdipDrawPie", cast(void**)& GdipDrawPie },
+    { "GdipDrawPieI", cast(void**)& GdipDrawPieI },
+    { "GdipDrawPolygon", cast(void**)& GdipDrawPolygon },
+    { "GdipDrawPolygonI", cast(void**)& GdipDrawPolygonI },
+    { "GdipDrawCurve", cast(void**)& GdipDrawCurve },
+    { "GdipDrawCurve2", cast(void**)& GdipDrawCurve2 },
+    { "GdipDrawCurve3", cast(void**)& GdipDrawCurve3 },
+    { "GdipDrawCurveI", cast(void**)& GdipDrawCurveI },
+    { "GdipDrawCurve2I", cast(void**)& GdipDrawCurve2I },
+    { "GdipDrawCurve3I", cast(void**)& GdipDrawCurve3I },
+    { "GdipDrawClosedCurve", cast(void**)& GdipDrawClosedCurve },
+    { "GdipDrawClosedCurve2", cast(void**)& GdipDrawClosedCurve2 },
+    { "GdipDrawClosedCurveI", cast(void**)& GdipDrawClosedCurveI },
+    { "GdipDrawClosedCurve2I", cast(void**)& GdipDrawClosedCurve2I },
+    { "GdipFillRectangleI", cast(void**)& GdipFillRectangleI },
+    { "GdipFillRectangle", cast(void**)& GdipFillRectangle },
+    { "GdipFillRectanglesI", cast(void**)& GdipFillRectanglesI },
+    { "GdipFillRectangles", cast(void**)& GdipFillRectangles },
+    { "GdipFillPolygon", cast(void**)& GdipFillPolygon },
+    { "GdipFillPolygonI", cast(void**)& GdipFillPolygonI },
+    { "GdipFillEllipse", cast(void**)& GdipFillEllipse },
+    { "GdipFillEllipseI", cast(void**)& GdipFillEllipseI },
+    { "GdipFillPie", cast(void**)& GdipFillPie },
+    { "GdipFillPieI", cast(void**)& GdipFillPieI },
+    { "GdipFillPath", cast(void**)& GdipFillPath },
+    { "GdipFillClosedCurve", cast(void**)& GdipFillClosedCurve },
+    { "GdipFillClosedCurveI", cast(void**)& GdipFillClosedCurveI },
+    { "GdipFillClosedCurve2", cast(void**)& GdipFillClosedCurve2 },
+    { "GdipFillClosedCurve2I", cast(void**)& GdipFillClosedCurve2I },
+    { "GdipFillRegion", cast(void**)& GdipFillRegion },
+    { "GdipDrawString", cast(void**)& GdipDrawString },
+    { "GdipMeasureString", cast(void**)& GdipMeasureString },
+    { "GdipGetStringFormatMeasurableCharacterRangeCount", cast(void**)& GdipGetStringFormatMeasurableCharacterRangeCount },
+    { "GdipCloneStringFormat", cast(void**)& GdipCloneStringFormat },
+    { "GdipMeasureCharacterRanges", cast(void**)& GdipMeasureCharacterRanges },
+    { "GdipDrawImage", cast(void**)& GdipDrawImage },
+    { "GdipDrawImageI", cast(void**)& GdipDrawImageI },
+    { "GdipDrawImageRect", cast(void**)& GdipDrawImageRect },
+    { "GdipDrawImageRectI", cast(void**)& GdipDrawImageRectI },
+    { "GdipDrawImagePointRect", cast(void**)& GdipDrawImagePointRect },
+    { "GdipDrawImagePointRectI", cast(void**)& GdipDrawImagePointRectI },
+    { "GdipDrawImageRectRect", cast(void**)& GdipDrawImageRectRect },
+    { "GdipDrawImageRectRectI", cast(void**)& GdipDrawImageRectRectI },
+    { "GdipDrawImagePoints", cast(void**)& GdipDrawImagePoints },
+    { "GdipDrawImagePointsI", cast(void**)& GdipDrawImagePointsI },
+    { "GdipDrawImagePointsRect", cast(void**)& GdipDrawImagePointsRect },
+    { "GdipDrawImagePointsRectI", cast(void**)& GdipDrawImagePointsRectI },
+    { "GdipIsVisiblePoint", cast(void**)& GdipIsVisiblePoint },
+    { "GdipIsVisiblePointI", cast(void**)& GdipIsVisiblePointI },
+    { "GdipIsVisibleRect", cast(void**)& GdipIsVisibleRect },
+    { "GdipIsVisibleRectI", cast(void**)& GdipIsVisibleRectI },
+    { "GdipGetTextRenderingHint", cast(void**)& GdipGetTextRenderingHint },
+    { "GdipSetTextRenderingHint", cast(void**)& GdipSetTextRenderingHint },
+    { "GdipGetClipBounds", cast(void**)& GdipGetClipBounds },
+    { "GdipGetClipBoundsI", cast(void**)& GdipGetClipBoundsI },
+    { "GdipGetVisibleClipBounds", cast(void**)& GdipGetVisibleClipBounds },
+    { "GdipGetVisibleClipBoundsI", cast(void**)& GdipGetVisibleClipBoundsI },
+    { "GdipIsClipEmpty", cast(void**)& GdipIsClipEmpty },
+    { "GdipIsVisibleClipEmpty", cast(void**)& GdipIsVisibleClipEmpty },
+    { "GdipGetRenderingOrigin", cast(void**)& GdipGetRenderingOrigin },
+    { "GdipSetRenderingOrigin", cast(void**)& GdipSetRenderingOrigin },
+    { "GdipGetNearestColor", cast(void**)& GdipGetNearestColor },
+    { "GdipComment", cast(void**)& GdipComment },
+    { "GdipTransformPoints", cast(void**)& GdipTransformPoints },
+    { "GdipTransformPointsI", cast(void**)& GdipTransformPointsI },
+    { "GdipCreateMatrix", cast(void**)& GdipCreateMatrix },
+    { "GdipCreateMatrix2", cast(void**)& GdipCreateMatrix2 },
+    { "GdipCreateMatrix3", cast(void**)& GdipCreateMatrix3 },
+    { "GdipCreateMatrix3I", cast(void**)& GdipCreateMatrix3I },
+    { "GdipDeleteMatrix", cast(void**)& GdipDeleteMatrix },
+    { "GdipCloneMatrix", cast(void**)& GdipCloneMatrix },
+    { "GdipGetMatrixElements", cast(void**)& GdipGetMatrixElements },
+    { "GdipSetMatrixElements", cast(void**)& GdipSetMatrixElements },
+    { "GdipInvertMatrix", cast(void**)& GdipInvertMatrix },
+    { "GdipMultiplyMatrix", cast(void**)& GdipMultiplyMatrix },
+    { "GdipScaleMatrix", cast(void**)& GdipScaleMatrix },
+    { "GdipShearMatrix", cast(void**)& GdipShearMatrix },
+    { "GdipRotateMatrix", cast(void**)& GdipRotateMatrix },
+    { "GdipTranslateMatrix", cast(void**)& GdipTranslateMatrix },
+    { "GdipIsMatrixIdentity", cast(void**)& GdipIsMatrixIdentity },
+    { "GdipIsMatrixInvertible", cast(void**)& GdipIsMatrixInvertible },
+    { "GdipTransformMatrixPoints", cast(void**)& GdipTransformMatrixPoints },
+    { "GdipGetBrushType", cast(void**)& GdipGetBrushType },
+    { "GdipCloneBrush", cast(void**)& GdipCloneBrush },
+    { "GdipDeleteBrush", cast(void**)& GdipDeleteBrush },
+    { "GdipCreateSolidFill", cast(void**)& GdipCreateSolidFill },
+    { "GdipGetSolidFillColor", cast(void**)& GdipGetSolidFillColor },
+    { "GdipSetSolidFillColor", cast(void**)& GdipSetSolidFillColor },
+    { "GdipCreateTexture", cast(void**)& GdipCreateTexture },
+    { "GdipCreateTexture2", cast(void**)& GdipCreateTexture2 },
+    { "GdipCreateTexture2I", cast(void**)& GdipCreateTexture2I },
+    { "GdipGetTextureImage", cast(void**)& GdipGetTextureImage },
+    { "GdipGetTextureTransform", cast(void**)& GdipGetTextureTransform },
+    { "GdipSetTextureTransform", cast(void**)& GdipSetTextureTransform },
+    { "GdipGetTextureWrapMode", cast(void**)& GdipGetTextureWrapMode },
+    { "GdipSetTextureWrapMode", cast(void**)& GdipSetTextureWrapMode },
+    { "GdipCreateHatchBrush", cast(void**)& GdipCreateHatchBrush },
+    { "GdipGetHatchStyle", cast(void**)& GdipGetHatchStyle },
+    { "GdipGetHatchForegroundColor", cast(void**)& GdipGetHatchForegroundColor },
+    { "GdipGetHatchBackgroundColor", cast(void**)& GdipGetHatchBackgroundColor },
+    { "GdipCreateLineBrushI", cast(void**)& GdipCreateLineBrushI },
+    { "GdipCreateLineBrush", cast(void**)& GdipCreateLineBrush },
+    { "GdipCreateLineBrushFromRectI", cast(void**)& GdipCreateLineBrushFromRectI },
+    { "GdipCreateLineBrushFromRect", cast(void**)& GdipCreateLineBrushFromRect },
+    { "GdipCreateLineBrushFromRectWithAngleI", cast(void**)& GdipCreateLineBrushFromRectWithAngleI },
+    { "GdipCreateLineBrushFromRectWithAngle", cast(void**)& GdipCreateLineBrushFromRectWithAngle },
+    { "GdipGetLineBlendCount", cast(void**)& GdipGetLineBlendCount },
+    { "GdipGetLineBlend", cast(void**)& GdipGetLineBlend },
+    { "GdipSetLineBlend", cast(void**)& GdipSetLineBlend },
+    { "GdipGetLinePresetBlendCount", cast(void**)& GdipGetLinePresetBlendCount },
+    { "GdipGetLinePresetBlend", cast(void**)& GdipGetLinePresetBlend },
+    { "GdipSetLinePresetBlend", cast(void**)& GdipSetLinePresetBlend },
+    { "GdipGetLineWrapMode", cast(void**)& GdipGetLineWrapMode },
+    { "GdipSetLineWrapMode", cast(void**)& GdipSetLineWrapMode },
+    { "GdipGetLineRect", cast(void**)& GdipGetLineRect },
+    { "GdipGetLineColors", cast(void**)& GdipGetLineColors },
+    { "GdipSetLineColors", cast(void**)& GdipSetLineColors },
+    { "GdipGetLineGammaCorrection", cast(void**)& GdipGetLineGammaCorrection },
+    { "GdipSetLineGammaCorrection", cast(void**)& GdipSetLineGammaCorrection },
+    { "GdipSetLineSigmaBlend", cast(void**)& GdipSetLineSigmaBlend },
+    { "GdipSetLineLinearBlend", cast(void**)& GdipSetLineLinearBlend },
+    { "GdipGetLineTransform", cast(void**)& GdipGetLineTransform },
+    { "GdipSetLineTransform", cast(void**)& GdipSetLineTransform },
+    { "GdipResetLineTransform", cast(void**)& GdipResetLineTransform },
+    { "GdipMultiplyLineTransform", cast(void**)& GdipMultiplyLineTransform },
+    { "GdipTranslateLineTransform", cast(void**)& GdipTranslateLineTransform },
+    { "GdipScaleLineTransform", cast(void**)& GdipScaleLineTransform },
+    { "GdipRotateLineTransform", cast(void**)& GdipRotateLineTransform },
+    { "GdipCreatePen1", cast(void**)& GdipCreatePen1 },
+    { "GdipCreatePen2", cast(void**)& GdipCreatePen2 },
+    { "GdipDeletePen", cast(void**)& GdipDeletePen },
+    { "GdipClonePen", cast(void**)& GdipClonePen },
+    { "GdipSetPenLineCap197819", cast(void**)& GdipSetPenLineCap197819 },
+    { "GdipGetPenStartCap", cast(void**)& GdipGetPenStartCap },
+    { "GdipSetPenStartCap", cast(void**)& GdipSetPenStartCap },
+    { "GdipGetPenEndCap", cast(void**)& GdipGetPenEndCap },
+    { "GdipSetPenEndCap", cast(void**)& GdipSetPenEndCap },
+    { "GdipGetPenDashCap197819", cast(void**)& GdipGetPenDashCap197819 },
+    { "GdipSetPenDashCap197819", cast(void**)& GdipSetPenDashCap197819 },
+    { "GdipGetPenLineJoin", cast(void**)& GdipGetPenLineJoin },
+    { "GdipSetPenLineJoin", cast(void**)& GdipSetPenLineJoin },
+    { "GdipGetPenMiterLimit", cast(void**)& GdipGetPenMiterLimit },
+    { "GdipSetPenMiterLimit", cast(void**)& GdipSetPenMiterLimit },
+    { "GdipGetPenMode", cast(void**)& GdipGetPenMode },
+    { "GdipSetPenMode", cast(void**)& GdipSetPenMode },
+    { "GdipGetPenTransform", cast(void**)& GdipGetPenTransform },
+    { "GdipSetPenTransform", cast(void**)& GdipSetPenTransform },
+    { "GdipResetPenTransform", cast(void**)& GdipResetPenTransform },
+    { "GdipMultiplyPenTransform", cast(void**)& GdipMultiplyPenTransform },
+    { "GdipTranslatePenTransform", cast(void**)& GdipTranslatePenTransform },
+    { "GdipScalePenTransform", cast(void**)& GdipScalePenTransform },
+    { "GdipRotatePenTransform", cast(void**)& GdipRotatePenTransform },
+    { "GdipGetPenColor", cast(void**)& GdipGetPenColor },
+    { "GdipSetPenColor", cast(void**)& GdipSetPenColor },
+    { "GdipGetPenWidth", cast(void**)& GdipGetPenWidth },
+    { "GdipSetPenWidth", cast(void**)& GdipSetPenWidth },
+    { "GdipGetPenFillType", cast(void**)& GdipGetPenFillType },
+    { "GdipGetPenBrushFill", cast(void**)& GdipGetPenBrushFill },
+    { "GdipSetPenBrushFill", cast(void**)& GdipSetPenBrushFill },
+    { "GdipGetPenDashStyle", cast(void**)& GdipGetPenDashStyle },
+    { "GdipSetPenDashStyle", cast(void**)& GdipSetPenDashStyle },
+    { "GdipGetPenDashOffset", cast(void**)& GdipGetPenDashOffset },
+    { "GdipSetPenDashOffset", cast(void**)& GdipSetPenDashOffset },
+    { "GdipGetPenDashCount", cast(void**)& GdipGetPenDashCount },
+    { "GdipGetPenDashArray", cast(void**)& GdipGetPenDashArray },
+    { "GdipSetPenDashArray", cast(void**)& GdipSetPenDashArray },
+    { "GdipGetPenCompoundCount", cast(void**)& GdipGetPenCompoundCount },
+    { "GdipGetPenCompoundArray", cast(void**)& GdipGetPenCompoundArray },
+    { "GdipSetPenCompoundArray", cast(void**)& GdipSetPenCompoundArray },
+    { "GdipCreateRegion", cast(void**)& GdipCreateRegion },
+    { "GdipCreateRegionRect", cast(void**)& GdipCreateRegionRect },
+    { "GdipCreateRegionRectI", cast(void**)& GdipCreateRegionRectI },
+    { "GdipCreateRegionPath", cast(void**)& GdipCreateRegionPath },
+    { "GdipCreateRegionHrgn", cast(void**)& GdipCreateRegionHrgn },
+    { "GdipDeleteRegion", cast(void**)& GdipDeleteRegion },
+    { "GdipSetInfinite", cast(void**)& GdipSetInfinite },
+    { "GdipSetEmpty", cast(void**)& GdipSetEmpty },
+    { "GdipCombineRegionRect", cast(void**)& GdipCombineRegionRect },
+    { "GdipCombineRegionRectI", cast(void**)& GdipCombineRegionRectI },
+    { "GdipCombineRegionPath", cast(void**)& GdipCombineRegionPath },
+    { "GdipCombineRegionRegion", cast(void**)& GdipCombineRegionRegion },
+    { "GdipTranslateRegion", cast(void**)& GdipTranslateRegion },
+    { "GdipTranslateRegionI", cast(void**)& GdipTranslateRegionI },
+    { "GdipTransformRegion", cast(void**)& GdipTransformRegion },
+    { "GdipGetRegionBounds", cast(void**)& GdipGetRegionBounds },
+    { "GdipGetRegionHRgn", cast(void**)& GdipGetRegionHRgn },
+    { "GdipIsEmptyRegion", cast(void**)& GdipIsEmptyRegion },
+    { "GdipIsInfiniteRegion", cast(void**)& GdipIsInfiniteRegion },
+    { "GdipIsEqualRegion", cast(void**)& GdipIsEqualRegion },
+    { "GdipIsVisibleRegionPoint", cast(void**)& GdipIsVisibleRegionPoint },
+    { "GdipIsVisibleRegionRect", cast(void**)& GdipIsVisibleRegionRect },
+    { "GdipIsVisibleRegionPointI", cast(void**)& GdipIsVisibleRegionPointI },
+    { "GdipIsVisibleRegionRectI", cast(void**)& GdipIsVisibleRegionRectI },
+    { "GdipGetRegionScansCount", cast(void**)& GdipGetRegionScansCount },
+    { "GdipGetRegionScans", cast(void**)& GdipGetRegionScans },
+    { "GdipDisposeImage", cast(void**)& GdipDisposeImage },
+    { "GdipImageForceValidation", cast(void**)& GdipImageForceValidation },
+    { "GdipLoadImageFromFileICM", cast(void**)& GdipLoadImageFromFileICM },
+    { "GdipLoadImageFromFile", cast(void**)& GdipLoadImageFromFile },
+    { "GdipGetImageEncodersSize", cast(void**)& GdipGetImageEncodersSize },
+    { "GdipCloneImage", cast(void**)& GdipCloneImage },
+    { "GdipGetImageType", cast(void**)& GdipGetImageType },
+    { "GdipGetImageFlags", cast(void**)& GdipGetImageFlags },
+    { "GdipGetImageWidth", cast(void**)& GdipGetImageWidth },
+    { "GdipGetImageHeight", cast(void**)& GdipGetImageHeight },
+    { "GdipGetImageHorizontalResolution", cast(void**)& GdipGetImageHorizontalResolution },
+    { "GdipGetImageVerticalResolution", cast(void**)& GdipGetImageVerticalResolution },
+    { "GdipGetPropertyCount", cast(void**)& GdipGetPropertyCount },
+    { "GdipGetPropertyIdList", cast(void**)& GdipGetPropertyIdList },
+    { "GdipGetImagePixelFormat", cast(void**)& GdipGetImagePixelFormat },
+    { "GdipGetImageDimension", cast(void**)& GdipGetImageDimension },
+    { "GdipGetImageThumbnail", cast(void**)& GdipGetImageThumbnail },
+    { "GdipImageGetFrameDimensionsCount", cast(void**)& GdipImageGetFrameDimensionsCount },
+    { "GdipImageRotateFlip", cast(void**)& GdipImageRotateFlip },
+    { "GdipGetPropertyItemSize", cast(void**)& GdipGetPropertyItemSize },
+    { "GdipGetPropertyItem", cast(void**)& GdipGetPropertyItem },
+    { "GdipSetPropertyItem", cast(void**)& GdipSetPropertyItem },
+    { "GdipRemovePropertyItem", cast(void**)& GdipRemovePropertyItem },
+    { "GdipGetPropertySize", cast(void**)& GdipGetPropertySize },
+    { "GdipGetAllPropertyItems", cast(void**)& GdipGetAllPropertyItems },
+    { "GdipGetImageBounds", cast(void**)& GdipGetImageBounds },
+    { "GdipGetImagePaletteSize", cast(void**)& GdipGetImagePaletteSize },
+    { "GdipGetImagePalette", cast(void**)& GdipGetImagePalette },
+    { "GdipSetImagePalette", cast(void**)& GdipSetImagePalette },
+    { "GdipCreateBitmapFromScan0", cast(void**)& GdipCreateBitmapFromScan0 },
+    { "GdipCreateBitmapFromHBITMAP", cast(void**)& GdipCreateBitmapFromHBITMAP },
+    { "GdipCreateBitmapFromHICON", cast(void**)& GdipCreateBitmapFromHICON },
+    { "GdipCreateBitmapFromFileICM", cast(void**)& GdipCreateBitmapFromFileICM },
+    { "GdipCreateBitmapFromFile", cast(void**)& GdipCreateBitmapFromFile },
+    { "GdipCreateBitmapFromGraphics", cast(void**)& GdipCreateBitmapFromGraphics },
+    { "GdipCloneBitmapArea", cast(void**)& GdipCloneBitmapArea },
+    { "GdipCloneBitmapAreaI", cast(void**)& GdipCloneBitmapAreaI },
+    { "GdipBitmapGetPixel", cast(void**)& GdipBitmapGetPixel },
+    { "GdipBitmapSetPixel", cast(void**)& GdipBitmapSetPixel },
+    { "GdipBitmapLockBits", cast(void**)& GdipBitmapLockBits },
+    { "GdipBitmapUnlockBits", cast(void**)& GdipBitmapUnlockBits },
+    { "GdipBitmapSetResolution", cast(void**)& GdipBitmapSetResolution },
+    { "GdipCreateHICONFromBitmap", cast(void**)& GdipCreateHICONFromBitmap },
+    { "GdipCreateHBITMAPFromBitmap", cast(void**)& GdipCreateHBITMAPFromBitmap },
+    { "GdipCreateImageAttributes", cast(void**)& GdipCreateImageAttributes },
+    { "GdipDisposeImageAttributes", cast(void**)& GdipDisposeImageAttributes },
+    { "GdipSetImageAttributesColorMatrix", cast(void**)& GdipSetImageAttributesColorMatrix },
+    { "GdipSetImageAttributesThreshold", cast(void**)& GdipSetImageAttributesThreshold },
+    { "GdipSetImageAttributesGamma", cast(void**)& GdipSetImageAttributesGamma },
+    { "GdipSetImageAttributesNoOp", cast(void**)& GdipSetImageAttributesNoOp },
+    { "GdipSetImageAttributesColorKeys", cast(void**)& GdipSetImageAttributesColorKeys },
+    { "GdipSetImageAttributesOutputChannel", cast(void**)& GdipSetImageAttributesOutputChannel },
+    { "GdipSetImageAttributesOutputChannelColorProfile", cast(void**)& GdipSetImageAttributesOutputChannelColorProfile },
+    { "GdipSetImageAttributesWrapMode", cast(void**)& GdipSetImageAttributesWrapMode },
+    { "GdipNewInstalledFontCollection", cast(void**)& GdipNewInstalledFontCollection },
+    { "GdipNewPrivateFontCollection", cast(void**)& GdipNewPrivateFontCollection },
+    { "GdipDeletePrivateFontCollection", cast(void**)& GdipDeletePrivateFontCollection },
+    { "GdipPrivateAddFontFile", cast(void**)& GdipPrivateAddFontFile },
+    { "GdipPrivateAddMemoryFont", cast(void**)& GdipPrivateAddMemoryFont },
+    { "GdipGetFontCollectionFamilyCount", cast(void**)& GdipGetFontCollectionFamilyCount },
+    { "GdipGetFontCollectionFamilyList", cast(void**)& GdipGetFontCollectionFamilyList },
+    { "GdipCreateFontFamilyFromName", cast(void**)& GdipCreateFontFamilyFromName },
+    { "GdipDeleteFontFamily", cast(void**)& GdipDeleteFontFamily },
+    { "GdipCloneFontFamily", cast(void**)& GdipCloneFontFamily },
+    { "GdipGetFamilyName", cast(void**)& GdipGetFamilyName },
+    { "GdipGetGenericFontFamilyMonospace", cast(void**)& GdipGetGenericFontFamilyMonospace },
+    { "GdipGetGenericFontFamilySerif", cast(void**)& GdipGetGenericFontFamilySerif },
+    { "GdipGetGenericFontFamilySansSerif", cast(void**)& GdipGetGenericFontFamilySansSerif },
+    { "GdipGetEmHeight", cast(void**)& GdipGetEmHeight },
+    { "GdipGetCellAscent", cast(void**)& GdipGetCellAscent },
+    { "GdipGetCellDescent", cast(void**)& GdipGetCellDescent },
+    { "GdipGetLineSpacing", cast(void**)& GdipGetLineSpacing },
+    { "GdipIsStyleAvailable", cast(void**)& GdipIsStyleAvailable },
+    { "GdipCreateFont", cast(void**)& GdipCreateFont },
+    { "GdipCreateFontFromDC", cast(void**)& GdipCreateFontFromDC },
+    { "GdipDeleteFont", cast(void**)& GdipDeleteFont },
+    { "GdipCloneFont", cast(void**)& GdipCloneFont },
+    { "GdipGetFontSize", cast(void**)& GdipGetFontSize },
+    { "GdipGetFontHeight", cast(void**)& GdipGetFontHeight },
+    { "GdipGetFontHeightGivenDPI", cast(void**)& GdipGetFontHeightGivenDPI },
+    { "GdipGetFontStyle", cast(void**)& GdipGetFontStyle },
+    { "GdipGetFontUnit", cast(void**)& GdipGetFontUnit },
+    { "GdipGetFamily", cast(void**)& GdipGetFamily },
+    { "GdipCreateFontFromLogfontW", cast(void**)& GdipCreateFontFromLogfontW },
+    { "GdipCreateFontFromLogfontA", cast(void**)& GdipCreateFontFromLogfontA },
+    { "GdipGetLogFontW", cast(void**)& GdipGetLogFontW },
+    { "GdipCreateStringFormat", cast(void**)& GdipCreateStringFormat },
+    { "GdipDeleteStringFormat", cast(void**)& GdipDeleteStringFormat },
+    { "GdipGetStringFormatFlags", cast(void**)& GdipGetStringFormatFlags },
+    { "GdipSetStringFormatFlags", cast(void**)& GdipSetStringFormatFlags },
+    { "GdipGetStringFormatAlign", cast(void**)& GdipGetStringFormatAlign },
+    { "GdipSetStringFormatAlign", cast(void**)& GdipSetStringFormatAlign },
+    { "GdipGetStringFormatLineAlign", cast(void**)& GdipGetStringFormatLineAlign },
+    { "GdipSetStringFormatLineAlign", cast(void**)& GdipSetStringFormatLineAlign },
+    { "GdipGetStringFormatTrimming", cast(void**)& GdipGetStringFormatTrimming },
+    { "GdipSetStringFormatTrimming", cast(void**)& GdipSetStringFormatTrimming },
+    { "GdipCreatePath", cast(void**)& GdipCreatePath },
+    { "GdipCreatePath2", cast(void**)& GdipCreatePath2 },
+    { "GdipCreatePath2I", cast(void**)& GdipCreatePath2I },
+    { "GdipDeletePath", cast(void**)& GdipDeletePath },
+    { "GdipClonePath", cast(void**)& GdipClonePath },
+    { "GdipResetPath", cast(void**)& GdipResetPath },
+    { "GdipGetPathFillMode", cast(void**)& GdipGetPathFillMode },
+    { "GdipSetPathFillMode", cast(void**)& GdipSetPathFillMode },
+    { "GdipStartPathFigure", cast(void**)& GdipStartPathFigure },
+    { "GdipClosePathFigure", cast(void**)& GdipClosePathFigure },
+    { "GdipClosePathFigures", cast(void**)& GdipClosePathFigures },
+    { "GdipSetPathMarker", cast(void**)& GdipSetPathMarker },
+    { "GdipClearPathMarkers", cast(void**)& GdipClearPathMarkers },
+    { "GdipReversePath", cast(void**)& GdipReversePath },
+    { "GdipGetPathLastPoint", cast(void**)& GdipGetPathLastPoint },
+    { "GdipAddPathLine", cast(void**)& GdipAddPathLine },
+    { "GdipAddPathLineI", cast(void**)& GdipAddPathLineI },
+    { "GdipAddPathLine2", cast(void**)& GdipAddPathLine2 },
+    { "GdipAddPathLine2I", cast(void**)& GdipAddPathLine2I },
+    { "GdipAddPathArc", cast(void**)& GdipAddPathArc },
+    { "GdipAddPathArcI", cast(void**)& GdipAddPathArcI },
+    { "GdipAddPathBezier", cast(void**)& GdipAddPathBezier },
+    { "GdipAddPathBezierI", cast(void**)& GdipAddPathBezierI },
+    { "GdipAddPathBeziers", cast(void**)& GdipAddPathBeziers },
+    { "GdipAddPathBeziersI", cast(void**)& GdipAddPathBeziersI },
+    { "GdipAddPathCurve", cast(void**)& GdipAddPathCurve },
+    { "GdipAddPathCurveI", cast(void**)& GdipAddPathCurveI },
+    { "GdipAddPathCurve2", cast(void**)& GdipAddPathCurve2 },
+    { "GdipAddPathCurve2I", cast(void**)& GdipAddPathCurve2I },
+    { "GdipAddPathCurve3", cast(void**)& GdipAddPathCurve3 },
+    { "GdipAddPathCurve3I", cast(void**)& GdipAddPathCurve3I },
+    { "GdipAddPathClosedCurve", cast(void**)& GdipAddPathClosedCurve },
+    { "GdipAddPathClosedCurveI", cast(void**)& GdipAddPathClosedCurveI },
+    { "GdipAddPathClosedCurve2", cast(void**)& GdipAddPathClosedCurve2 },
+    { "GdipAddPathClosedCurve2I", cast(void**)& GdipAddPathClosedCurve2I },
+    { "GdipAddPathRectangle", cast(void**)& GdipAddPathRectangle },
+    { "GdipAddPathRectangleI", cast(void**)& GdipAddPathRectangleI },
+    { "GdipAddPathRectangles", cast(void**)& GdipAddPathRectangles },
+    { "GdipAddPathRectanglesI", cast(void**)& GdipAddPathRectanglesI },
+    { "GdipAddPathEllipse", cast(void**)& GdipAddPathEllipse },
+    { "GdipAddPathEllipseI", cast(void**)& GdipAddPathEllipseI },
+    { "GdipAddPathPie", cast(void**)& GdipAddPathPie },
+    { "GdipAddPathPieI", cast(void**)& GdipAddPathPieI },
+    { "GdipAddPathPolygon", cast(void**)& GdipAddPathPolygon },
+    { "GdipAddPathPolygonI", cast(void**)& GdipAddPathPolygonI },
+    { "GdipAddPathPath", cast(void**)& GdipAddPathPath },
+    { "GdipAddPathString", cast(void**)& GdipAddPathString },
+    { "GdipAddPathStringI", cast(void**)& GdipAddPathStringI },
+    { "GdipTransformPath", cast(void**)& GdipTransformPath },
+    { "GdipGetPathWorldBounds", cast(void**)& GdipGetPathWorldBounds },
+    { "GdipFlattenPath", cast(void**)& GdipFlattenPath },
+    { "GdipWidenPath", cast(void**)& GdipWidenPath },
+    { "GdipWindingModeOutline", cast(void**)& GdipWindingModeOutline },
+    { "GdipWarpPath", cast(void**)& GdipWarpPath },
+    { "GdipGetPointCount", cast(void**)& GdipGetPointCount },
+    { "GdipGetPathTypes", cast(void**)& GdipGetPathTypes },
+    { "GdipGetPathPoints", cast(void**)& GdipGetPathPoints },
+    { "GdipIsVisiblePathPoint", cast(void**)& GdipIsVisiblePathPoint },
+    { "GdipIsVisiblePathPointI", cast(void**)& GdipIsVisiblePathPointI },
+    { "GdipIsOutlineVisiblePathPoint", cast(void**)& GdipIsOutlineVisiblePathPoint },
+    { "GdipIsOutlineVisiblePathPointI", cast(void**)& GdipIsOutlineVisiblePathPointI },
+    { "GdipDrawPath", cast(void**)& GdipDrawPath },
+    { "GdipCreatePathIter", cast(void**)& GdipCreatePathIter },
+    { "GdipDeletePathIter", cast(void**)& GdipDeletePathIter },
+    { "GdipPathIterNextSubpath", cast(void**)& GdipPathIterNextSubpath },
+    { "GdipPathIterNextSubpathPath", cast(void**)& GdipPathIterNextSubpathPath },
+    { "GdipPathIterNextPathType", cast(void**)& GdipPathIterNextPathType },
+    { "GdipPathIterNextMarker", cast(void**)& GdipPathIterNextMarker },
+    { "GdipPathIterNextMarkerPath", cast(void**)& GdipPathIterNextMarkerPath },
+    { "GdipPathIterGetCount", cast(void**)& GdipPathIterGetCount },
+    { "GdipPathIterGetSubpathCount", cast(void**)& GdipPathIterGetSubpathCount },
+    { "GdipPathIterHasCurve", cast(void**)& GdipPathIterHasCurve },
+    { "GdipPathIterRewind", cast(void**)& GdipPathIterRewind },
+    { "GdipPathIterEnumerate", cast(void**)& GdipPathIterEnumerate },
+    { "GdipPathIterCopyData", cast(void**)& GdipPathIterCopyData },
+    { "GdipCreatePathGradient", cast(void**)& GdipCreatePathGradient },
+    { "GdipCreatePathGradientI", cast(void**)& GdipCreatePathGradientI },
+    { "GdipCreatePathGradientFromPath", cast(void**)& GdipCreatePathGradientFromPath },
+    { "GdipGetPathGradientCenterColor", cast(void**)& GdipGetPathGradientCenterColor },
+    { "GdipSetPathGradientCenterColor", cast(void**)& GdipSetPathGradientCenterColor },
+    { "GdipGetPathGradientSurroundColorCount", cast(void**)& GdipGetPathGradientSurroundColorCount },
+    { "GdipGetPathGradientSurroundColorsWithCount", cast(void**)& GdipGetPathGradientSurroundColorsWithCount },
+    { "GdipSetPathGradientSurroundColorsWithCount", cast(void**)& GdipSetPathGradientSurroundColorsWithCount },
+    { "GdipGetPathGradientCenterPoint", cast(void**)& GdipGetPathGradientCenterPoint },
+    { "GdipSetPathGradientCenterPoint", cast(void**)& GdipSetPathGradientCenterPoint },
+    { "GdipGetPathGradientRect", cast(void**)& GdipGetPathGradientRect },
+    { "GdipGetPathGradientBlendCount", cast(void**)& GdipGetPathGradientBlendCount },
+    { "GdipGetPathGradientBlend", cast(void**)& GdipGetPathGradientBlend },
+    { "GdipSetPathGradientBlend", cast(void**)& GdipSetPathGradientBlend },
+    { "GdipGetPathGradientPresetBlendCount", cast(void**)& GdipGetPathGradientPresetBlendCount },
+    { "GdipGetPathGradientPresetBlend", cast(void**)& GdipGetPathGradientPresetBlend },
+    { "GdipSetPathGradientPresetBlend", cast(void**)& GdipSetPathGradientPresetBlend },
+    { "GdipSetPathGradientSigmaBlend", cast(void**)& GdipSetPathGradientSigmaBlend },
+    { "GdipSetPathGradientLinearBlend", cast(void**)& GdipSetPathGradientLinearBlend },
+    { "GdipGetPathGradientTransform", cast(void**)& GdipGetPathGradientTransform },
+    { "GdipSetPathGradientTransform", cast(void**)& GdipSetPathGradientTransform },
+    { "GdipResetPathGradientTransform", cast(void**)& GdipResetPathGradientTransform },
+    { "GdipMultiplyPathGradientTransform", cast(void**)& GdipMultiplyPathGradientTransform },
+    { "GdipRotatePathGradientTransform", cast(void**)& GdipRotatePathGradientTransform },
+    { "GdipTranslatePathGradientTransform", cast(void**)& GdipTranslatePathGradientTransform },
+    { "GdipScalePathGradientTransform", cast(void**)& GdipScalePathGradientTransform },
+    { "GdipGetPathGradientFocusScales", cast(void**)& GdipGetPathGradientFocusScales },
+    { "GdipSetPathGradientFocusScales", cast(void**)& GdipSetPathGradientFocusScales },
+    { "GdipGetPathGradientWrapMode", cast(void**)& GdipGetPathGradientWrapMode },
+    { "GdipSetPathGradientWrapMode", cast(void**)& GdipSetPathGradientWrapMode },
+    { "GdipResetTextureTransform", cast(void**)& GdipResetTextureTransform },
+    { "GdipScaleTextureTransform", cast(void**)& GdipScaleTextureTransform },
+    { "GdipTranslateTextureTransform", cast(void**)& GdipTranslateTextureTransform },
+    { "GdipStringFormatGetGenericDefault", cast(void**)& GdipStringFormatGetGenericDefault },
+    { "GdipStringFormatGetGenericTypographic", cast(void**)& GdipStringFormatGetGenericTypographic },
+    { "GdipSetStringFormatHotkeyPrefix", cast(void**)& GdipSetStringFormatHotkeyPrefix },
+    { "GdipSetStringFormatTabStops", cast(void**)& GdipSetStringFormatTabStops },
+];
+
+
+void loadLib_Gdip(){
+    if (auto lib = SharedLib.load(`gdiplus.dll`)) {
+        foreach( inout s; symbols ){
+            *s.symbol = lib.getSymbol( s.name.ptr );
+            if( s.symbol is null ){
+                Trace.formatln("gdiplus.dll: Symbol '{}' not found", s.name );
+            }
+        }
+    } else {
+        Trace.formatln("Could not load the library gdiplus.dll");
+    }
+}
+
+}
+
+/******************************************************************************
+
+******************************************************************************/
+/+
+private uint initToken;
+private bool isShutdown;
+
+public int startup() {
+  static GdiplusStartupInput input = { 1, null, 0, 0 };
+  static GdiplusStartupOutput output;
+
+  return GdiplusStartup(initToken, input, output);
+}
+
+public void shutdown() {
+  // GC.collect();
+  isShutdown = true;
+
+  GdiplusShutdown(initToken);
+}
++/
--- a/dwt/internal/ole/win32/COM.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/ole/win32/COM.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,879 +1,879 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- * Port to the D programming language:
- *     Shawn Liu
- *     Frank Benoit <benoit@tionex.de>
- *******************************************************************************/
-module dwt.internal.ole.win32.COM;
-
-
-public import dwt.internal.ole.win32.COMTYPES;
-private import dwt.internal.ole.win32.OAIDL;
-private import dwt.internal.ole.win32.OBJIDL;
-private import dwt.internal.ole.win32.OLEIDL;
-private import dwt.internal.ole.win32.DOCOBJ;
-private import dwt.internal.ole.win32.EXDISP;
-private import dwt.internal.ole.win32.MSHTMHST;
-private import dwt.internal.ole.win32.extras;
-private import dwt.internal.ole.win32.ifs;
-private import dwt.internal.ole.win32.COMAPI;
-import dwt.dwthelper.utils;
-
-private alias dwt.internal.ole.win32.COMAPI COMAPI;
-
-
-public import dwt.internal.win32.OS;
-
-template IIDFromStringT(String g) {
-   static if (g.length == 38)
-     const GUID IIDFromStringT = IIDFromStringT!(g[1..$-1]);
-   else static if (g.length == 36)
-     const GUID IIDFromStringT = {
-        mixin("0x" ~ g[0..8]),
-        mixin("0x" ~ g[9..13]),
-        mixin("0x" ~ g[14..18]),
-        [
-            mixin("0x" ~ g[19..21]),
-            mixin("0x" ~ g[21..23]),
-            mixin("0x" ~ g[24..26]),
-            mixin("0x" ~ g[26..28]),
-            mixin("0x" ~ g[28..30]),
-            mixin("0x" ~ g[30..32]),
-            mixin("0x" ~ g[32..34]),
-            mixin("0x" ~ g[34..36]) ] };
-   else
-     static assert(false, "Incorrect format for GUID. "~g);
-}
-
-
-public class COM : OS {
-
-	//private import std.c.windows.com;
-
-	// all the GUID
-	// GUIDs for Home Page Browser
-
-    /** GUID Constants */
-    public static const GUID IIDJavaBeansBridge = IIDFromStringT!("{8AD9C840-044E-11D1-B3E9-00805F499D93}"); //$NON-NLS-1$
-    public static const GUID IIDShockwaveActiveXControl = IIDFromStringT!("{166B1BCA-3F9C-11CF-8075-444553540000}"); //$NON-NLS-1$
-    public static const GUID IIDIEditorSiteTime = IIDFromStringT!("{6BD2AEFE-7876-45e6-A6E7-3BFCDF6540AA}"); //$NON-NLS-1$
-    public static const GUID IIDIEditorSiteProperty = IIDFromStringT!("{D381A1F4-2326-4f3c-AFB9-B7537DB9E238}"); //$NON-NLS-1$
-    public static const GUID IIDIEditorBaseProperty = IIDFromStringT!("{61E55B0B-2647-47c4-8C89-E736EF15D636}"); //$NON-NLS-1$
-    public static const GUID IIDIEditorSite = IIDFromStringT!("{CDD88AB9-B01D-426E-B0F0-30973E9A074B}"); //$NON-NLS-1$
-    public static const GUID IIDIEditorService = IIDFromStringT!("{BEE283FE-7B42-4FF3-8232-0F07D43ABCF1}"); //$NON-NLS-1$
-    public static const GUID IIDIEditorManager = IIDFromStringT!("{EFDE08C4-BE87-4B1A-BF84-15FC30207180}"); //$NON-NLS-1$
-    public static const GUID IIDIAccessible = IIDFromStringT!("{618736E0-3C3D-11CF-810C-00AA00389B71}"); //$NON-NLS-1$
-    //public static const GUID IIDIAccessibleHandler = IIDFromStringT!("{03022430-ABC4-11D0-BDE2-00AA001A1953}"); //$NON-NLS-1$
-    //public static const GUID IIDIAccessor = IIDFromStringT!("{0C733A8C-2A1C-11CE-ADE5-00AA0044773D}"); //$NON-NLS-1$
-    public static const GUID IIDIAdviseSink = IIDFromStringT!("{0000010F-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIAdviseSink2 = IIDFromStringT!("{00000125-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIBindCtx = IIDFromStringT!("{0000000E-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIClassFactory = IIDFromStringT!("{00000001-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIClassFactory2 = IIDFromStringT!("{B196B28F-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    public static const GUID IIDIConnectionPoint = IIDFromStringT!("{B196B286-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    public static const GUID IIDIConnectionPointContainer = IIDFromStringT!("{B196B284-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    //public static const GUID IIDICreateErrorInfo = IIDFromStringT!("{22F03340-547D-101B-8E65-08002B2BD119}"); //$NON-NLS-1$
-    //public static const GUID IIDICreateTypeInfo = IIDFromStringT!("{00020405-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDICreateTypeLib = IIDFromStringT!("{00020406-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIDataAdviseHolder = IIDFromStringT!("{00000110-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIDataObject = IIDFromStringT!("{0000010E-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIDispatch = IIDFromStringT!("{00020400-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIDocHostUIHandler = IIDFromStringT!("{BD3F23C0-D43E-11CF-893B-00AA00BDCE1A}"); //$NON-NLS-1$
-    public static const GUID IIDIDocHostShowUI = IIDFromStringT!("{C4D244B0-D43E-11CF-893B-00AA00BDCE1A}"); //$NON-NLS-1$
-    public static const GUID IIDIDropSource = IIDFromStringT!("{00000121-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIDropTarget = IIDFromStringT!("{00000122-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIEnumConnectionPoints = IIDFromStringT!("{B196B285-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    //public static const GUID IIDIEnumConnections = IIDFromStringT!("{B196B287-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    public static const GUID IIDIEnumFORMATETC = IIDFromStringT!("{00000103-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIEnumMoniker = IIDFromStringT!("{00000102-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIEnumOLEVERB = IIDFromStringT!("{00000104-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIEnumSTATDATA = IIDFromStringT!("{00000105-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIEnumSTATSTG = IIDFromStringT!("{0000000D-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIEnumString = IIDFromStringT!("{00000101-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIEnumUnknown = IIDFromStringT!("{00000100-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIEnumVARIANT = IIDFromStringT!("{00020404-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIErrorInfo = IIDFromStringT!("{1CF2B120-547D-101B-8E65-08002B2BD119}"); //$NON-NLS-1$
-    //public static const GUID IIDIErrorLog = IIDFromStringT!("{3127CA40-446E-11CE-8135-00AA004BB851}"); //$NON-NLS-1$
-    //public static const GUID IIDIExternalConnection = IIDFromStringT!("{00000019-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIFont = IIDFromStringT!("{BEF6E002-A874-101A-8BBA-00AA00300CAB}"); //$NON-NLS-1$
-    //public static const GUID IIDIFontDisp = IIDFromStringT!("{BEF6E003-A874-101A-8BBA-00AA00300CAB}"); //$NON-NLS-1$
-    public static const /*GUID*/ String IIDIHTMLDocumentEvents2 = /*IIDFromStringT!(*/"{3050F613-98B5-11CF-BB82-00AA00BDCE0B}"/*)*/;
-    public static const GUID IIDIInternetSecurityManager = IIDFromStringT!("{79eac9ee-baf9-11ce-8c82-00aa004ba90b}"); //$NON-NLS-1$
-    //public static const GUID IIDILockBytes = IIDFromStringT!("{0000000A-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIMalloc = IIDFromStringT!("{00000002-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIMallocSpy = IIDFromStringT!("{0000001D-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIMarshal = IIDFromStringT!("{00000003-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIMessageFilter = IIDFromStringT!("{00000016-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIMoniker = IIDFromStringT!("{0000000F-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIOleAdviseHolder = IIDFromStringT!("{00000111-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIOleCache = IIDFromStringT!("{0000011E-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIOleCache2 = IIDFromStringT!("{00000128-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIOleCacheControl = IIDFromStringT!("{00000129-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIOleClientSite = IIDFromStringT!("{00000118-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIOleCommandTarget = IIDFromStringT!("{B722BCCB-4E68-101B-A2BC-00AA00404770}"); //$NON-NLS-1$
-    public static const GUID IIDIOleContainer = IIDFromStringT!("{0000011B-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIOleControl = IIDFromStringT!("{B196B288-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    public static const GUID IIDIOleControlSite = IIDFromStringT!("{B196B289-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    public static const GUID IIDIOleDocument = IIDFromStringT!("{B722BCC5-4E68-101B-A2BC-00AA00404770}"); //$NON-NLS-1$
-    public static const GUID IIDIOleDocumentSite = IIDFromStringT!("{B722BCC7-4E68-101B-A2BC-00AA00404770}"); //$NON-NLS-1$
-    public static const GUID IIDIOleInPlaceActiveObject = IIDFromStringT!("{00000117-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIOleInPlaceFrame = IIDFromStringT!("{00000116-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIOleInPlaceObject = IIDFromStringT!("{00000113-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIOleInPlaceSite = IIDFromStringT!("{00000119-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIOleInPlaceUIWindow = IIDFromStringT!("{00000115-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIOleItemContainer = IIDFromStringT!("{0000011C-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIOleLink = IIDFromStringT!("{0000011D-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIOleObject = IIDFromStringT!("{00000112-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIOleWindow = IIDFromStringT!("{00000114-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIParseDisplayName = IIDFromStringT!("{0000011A-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIPerPropertyBrowsing = IIDFromStringT!("{376BD3AA-3845-101B-84ED-08002B2EC713}"); //$NON-NLS-1$
-    public static const GUID IIDIPersist = IIDFromStringT!("{0000010C-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIPersistFile = IIDFromStringT!("{0000010B-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIPersistMemory = IIDFromStringT!("{BD1AE5E0-A6AE-11CE-BD37-504200C10000}"); //$NON-NLS-1$
-    //public static const GUID IIDIPersistPropertyBag = IIDFromStringT!("{37D84F60-42CB-11CE-8135-00AA004BB851}"); //$NON-NLS-1$
-    public static const GUID IIDIPersistStorage = IIDFromStringT!("{0000010A-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIPersistStream = IIDFromStringT!("{00000109-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIPersistStreamInit = IIDFromStringT!("{7FD52380-4E07-101B-AE2D-08002B2EC713}"); //$NON-NLS-1$
-    //public static const GUID IIDIPicture = IIDFromStringT!("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"); //$NON-NLS-1$
-    //public static const GUID IIDIPictureDisp = IIDFromStringT!("{7BF80981-BF32-101A-8BBB-00AA00300CAB}"); //$NON-NLS-1$
-    //public static const GUID IIDIPropertyBag = IIDFromStringT!("{55272A00-42CB-11CE-8135-00AA004BB851}"); //$NON-NLS-1$
-    public static const GUID IIDIPropertyNotifySink = IIDFromStringT!("{9BFBBC02-EFF1-101A-84ED-00AA00341D07}"); //$NON-NLS-1$
-    //public static const GUID IIDIPropertyPage = IIDFromStringT!("{B196B28D-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    //public static const GUID IIDIPropertyPage2 = IIDFromStringT!("{01E44665-24AC-101B-84ED-08002B2EC713}"); //$NON-NLS-1$
-    //public static const GUID IIDIPropertyPageSite = IIDFromStringT!("{B196B28C-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    public static const GUID IIDIProvideClassInfo = IIDFromStringT!("{B196B283-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    public static const GUID IIDIProvideClassInfo2 = IIDFromStringT!("{A6BC3AC0-DBAA-11CE-9DE3-00AA004BB851}"); //$NON-NLS-1$
-    //public static const GUID IIDIPSFactoryBuffer = IIDFromStringT!("{D5F569D0-593B-101A-B569-08002B2DBF7A}"); //$NON-NLS-1$
-    //public static const GUID IIDIRootStorage = IIDFromStringT!("{00000012-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIROTData = IIDFromStringT!("{F29F6BC0-5021-11CE-AA15-00006901293F}"); //$NON-NLS-1$
-    //public static const GUID IIDIRpcChannelBuffer = IIDFromStringT!("{D5F56B60-593B-101A-B569-08002B2DBF7A}"); //$NON-NLS-1$
-    //public static const GUID IIDIRpcProxyBuffer = IIDFromStringT!("{D5F56A34-593B-101A-B569-08002B2DBF7A}"); //$NON-NLS-1$
-    //public static const GUID IIDIRpcStubBuffer = IIDFromStringT!("{D5F56AFC-593B-101A-B569-08002B2DBF7A}"); //$NON-NLS-1$
-    //public static const GUID IIDIRunnableObject = IIDFromStringT!("{00000126-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIRunningObjectTable = IIDFromStringT!("{00000010-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDISimpleFrameSite = IIDFromStringT!("{742B0E01-14E6-101B-914E-00AA00300CAB}"); //$NON-NLS-1$
-    public static const GUID IIDIServiceProvider = IIDFromStringT!("{6d5140c1-7436-11ce-8034-00aa006009fa}"); //$NON-NLS-1$
-    public static const GUID IIDISpecifyPropertyPages = IIDFromStringT!("{B196B28B-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
-    //public static const GUID IIDIStdMarshalInfo = IIDFromStringT!("{00000018-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIStorage = IIDFromStringT!("{0000000B-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIStream = IIDFromStringT!("{0000000C-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDISupportErrorInfo = IIDFromStringT!("{DF0B3D60-548F-101B-8E65-08002B2BD119}"); //$NON-NLS-1$
-    //public static const GUID IIDITypeComp = IIDFromStringT!("{00020403-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDITypeLib = IIDFromStringT!("{00020402-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIUnknown = IIDFromStringT!("{00000000-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    //public static const GUID IIDIViewObject = IIDFromStringT!("{0000010D-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID IIDIViewObject2 = IIDFromStringT!("{00000127-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-    public static const GUID CGID_DocHostCommandHandler = IIDFromStringT!("{f38bc242-b950-11d1-8918-00c04fc2c836}"); //$NON-NLS-1$
-    public static const GUID CGID_Explorer = IIDFromStringT!("{000214D0-0000-0000-C000-000000000046}"); //$NON-NLS-1$
-
-
-
-	/* Constants */
-    //public static const int ADVF_DATAONSTOP = 64;
-    //public static const int ADVF_NODATA = 1;
-    //public static const int ADVF_ONLYONCE = 2;
-    //public static const int ADVF_PRIMEFIRST = 4;
-    //public static const int ADVFCACHE_FORCEBUILTIN = 16;
-    //public static const int ADVFCACHE_NOHANDLER = 8;
-    //public static const int ADVFCACHE_ONSAVE = 32;
-    public static const int CF_TEXT = 1;
-    public static const int CF_BITMAP = 2;
-    public static const int CF_METAFILEPICT = 3;
-    public static const int CF_SYLK = 4;
-    public static const int CF_DIF = 5;
-    public static const int CF_TIFF = 6;
-    public static const int CF_OEMTEXT = 7;
-    public static const int CF_DIB = 8;
-    public static const int CF_PALETTE = 9;
-    public static const int CF_PENDATA = 10;
-    public static const int CF_RIFF = 11;
-    public static const int CF_WAVE = 12;
-    public static const int CF_UNICODETEXT = 13;
-    public static const int CF_ENHMETAFILE = 14;
-    public static const int CF_HDROP = 15;
-    public static const int CF_LOCALE = 16;
-    public static const int CF_MAX = 17;
-    public static const int CLSCTX_INPROC_HANDLER = 2;
-    public static const int CLSCTX_INPROC_SERVER = 1;
-    public static const int CLSCTX_LOCAL_SERVER = 4;
-    public static const int CLSCTX_REMOTE_SERVER = 16;
-    public static const int CO_E_CLASSSTRING = -2147221005;
-    //public static const int COINIT_APARTMENTTHREADED = 2;
-    //public static const int COINIT_DISABLE_OLE1DDE = 4;
-    //public static const int COINIT_MULTITHREADED = 0;
-    //public static const int COINIT_SPEED_OVER_MEMORY = 8;
-    public static const int DATADIR_GET = 1;
-    public static const int DATADIR_SET = 2;
-    public static const int DISP_E_EXCEPTION = 0x80020009;
-    public static const int DISP_E_MEMBERNOTFOUND = -2147352573;
-    public static const int DISP_E_UNKNOWNINTERFACE = 0x80020001;
-    //public static const int DISPID_AMBIENT_APPEARANCE = -716;
-    //public static const int DISPID_AMBIENT_AUTOCLIP = -715;
-    public static const int DISPID_AMBIENT_BACKCOLOR = -701;
-    //public static const int DISPID_AMBIENT_CHARSET = -727;
-    //public static const int DISPID_AMBIENT_CODEPAGE = -725;
-    //public static const int DISPID_AMBIENT_DISPLAYASDEFAULT = -713;
-    //public static const int DISPID_AMBIENT_DISPLAYNAME = -702;
-    public static const int DISPID_AMBIENT_FONT = -703;
-    public static const int DISPID_AMBIENT_FORECOLOR = -704;
-    public static const int DISPID_AMBIENT_LOCALEID = -705;
-    public static const int DISPID_AMBIENT_MESSAGEREFLECT = -706;
-    public static const int DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501;
-    //public static const int DISPID_AMBIENT_PALETTE = -726;
-    //public static const int DISPID_AMBIENT_RIGHTTOLEFT = -732;
-    //public static const int DISPID_AMBIENT_SCALEUNITS = -707;
-    public static const int DISPID_AMBIENT_SHOWGRABHANDLES = -711;
-    public static const int DISPID_AMBIENT_SHOWHATCHING = -712;
-    public static const int DISPID_AMBIENT_SILENT = -5502;
-    public static const int DISPID_AMBIENT_SUPPORTSMNEMONICS = -714;
-    //public static const int DISPID_AMBIENT_TEXTALIGN = -708;
-    //public static const int DISPID_AMBIENT_TOPTOBOTTOM = -733;
-    //public static const int DISPID_AMBIENT_TRANSFERPRIORITY = -728;
-    public static const int DISPID_AMBIENT_UIDEAD = -710;
-    public static const int DISPID_AMBIENT_USERMODE = -709;
-    public static const int DISPID_BACKCOLOR = -501;
-    public static const int DISPID_FONT = -512;
-    public static const int DISPID_FONT_BOLD = 3;
-    public static const int DISPID_FONT_CHARSET = 8;
-    public static const int DISPID_FONT_ITALIC = 4;
-    public static const int DISPID_FONT_NAME = 0;
-    public static const int DISPID_FONT_SIZE = 2;
-    public static const int DISPID_FONT_STRIKE = 6;
-    public static const int DISPID_FONT_UNDER = 5;
-    public static const int DISPID_FONT_WEIGHT = 7;
-    public static const int DISPID_FORECOLOR = -513;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONDBLCLICK = 0xFFFFFDA7;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONDRAGEND = 0x80010015;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONDRAGSTART = 0x8001000B;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONKEYDOWN = 0xFFFFFDA6;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONKEYPRESS = 0xFFFFFDA5;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONKEYUP = 0xFFFFFDA4;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOUT = 0x80010009;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOVER = 0x80010008;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEMOVE = 0xFFFFFDA2;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEDOWN = 0xFFFFFDA3;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEUP = 0xFFFFFDA1;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONSTOP = 0x00000402;
-    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEWHEEL = 1033;
-
-    //public static const int DISPID_READYSTATE = -525;
-    //public static const int DISPID_READYSTATECHANGE = -609;
-    public static const int DRAGDROP_S_DROP = 0x00040100;
-    public static const int DRAGDROP_S_CANCEL = 0x00040101;
-    public static const int DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102;
-    public static const int DROPEFFECT_NONE = 0;
-    public static const int DROPEFFECT_COPY = 1;
-    public static const int DROPEFFECT_MOVE = 2;
-    public static const int DROPEFFECT_LINK = 4;
-    public static const int DROPEFFECT_SCROLL = 0x80000000;
-    public static final int DSH_ALLOWDROPDESCRIPTIONTEXT = 0x1;
-    public static const int DV_E_FORMATETC = -2147221404;
-    public static const int DV_E_STGMEDIUM = -2147221402;
-    public static const int DV_E_TYMED = -2147221399;
-    public static const int DVASPECT_CONTENT = 1;
-    //public static const int DVASPECT_DOCPRINT = 8;
-    //public static const int DVASPECT_ICON = 4;
-    //public static const int DVASPECT_THUMBNAIL = 2;
-    public static const int E_FAIL = -2147467259;
-    public static const int E_INVALIDARG = -2147024809;
-    public static const int E_NOINTERFACE = -2147467262;
-    public static const int E_NOTIMPL = -2147467263;
-    public static const int E_NOTSUPPORTED = 0x80040100;
-    //public static const int E_NOTLICENSED = -2147221230;
-    public static const int E_OUTOFMEMORY = -2147024882;
-    //public static const int E_POINTER = -2147467261;
-    public static const int GMEM_FIXED = 0;
-    //public static const int GMEM_MOVABLE = 2;
-    //public static const int GMEM_NODISCARD = 32;
-    public static const int GMEM_ZEROINIT = 64;
-    public static const int GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1;
-    public static const int IMPLTYPEFLAG_FDEFAULT = 1;
-    //public static const int IMPLTYPEFLAG_FDEFAULTVTABLE = 2048;
-    public static const int IMPLTYPEFLAG_FRESTRICTED = 4;
-    public static const int IMPLTYPEFLAG_FSOURCE = 2;
-    public static const int LOCALE_SYSTEM_DEFAULT = 1024;
-    public static const int LOCALE_USER_DEFAULT = 2048;
-    //public static const int MEMCTX_TASK = 1;
-    //public static const int OLEACTIVATEAUTO = 3;
-    //public static const int OLEACTIVATEDOUBLECLICK = 2;
-    //public static const int OLEACTIVATEGETFOCUS = 1;
-    //public static const int OLEACTIVATEMANUAL = 0;
-    //public static const int OLEAUTOMATIC = 0;
-    //public static const int OLECHANGED = 0;
-    public static const int OLECLOSE_NOSAVE = 1;
-    //public static const int OLECLOSE_PROMPTSAVE = 2;
-    public static const int OLECLOSE_SAVEIFDIRTY = 0;
-    //public static const int OLECLOSED = 2;
-    //public static const int OLECONTF_EMBEDDINGS = 1;
-    //public static const int OLECONTF_LINKS = 2;
-    //public static const int OLECONTF_ONLYIFRUNNING = 16;
-    //public static const int OLECONTF_ONLYUSER = 8;
-    //public static const int OLECONTF_OTHERS = 4;
-    //public static const int OLEDEACTIVATEMANUAL = 1;
-    //public static const int OLEDEACTIVATEONLOSEFOCUS = 0;
-    //public static const int OLEDECBORDER = 1;
-    //public static const int OLEDECBORDERANDNIBS = 3;
-    //public static const int OLEDECNIBS = 2;
-    //public static const int OLEDECNONE = 0;
-    //public static const int OLEDISPLAYCONTENT = 0;
-    //public static const int OLEDISPLAYICON = 1;
-    //public static const int OLEEITHER = 2;
-    public static const int OLEEMBEDDED = 1;
-    //public static const int OLEFROZEN = 1;
-    public static const int OLEIVERB_DISCARDUNDOSTATE = -6;
-    //public static const int OLEIVERB_HIDE = -3;
-    public static const int OLEIVERB_INPLACEACTIVATE = -5;
-    //public static const int OLEIVERB_OPEN = -2;
-    public static const int OLEIVERB_PRIMARY = 0;
-    //public static const int OLEIVERB_PROPERTIES = -7;
-    //public static const int OLEIVERB_SHOW = -1;
-    //public static const int OLEIVERB_UIACTIVATE = -4;
-    public static const int OLELINKED = 0;
-    //public static const int OLEMANUAL = 2;
-    //public static const int OLEMISC_ACTIVATEWHENVISIBLE = 256;
-    //public static const int OLEMISC_ACTSLIKEBUTTON = 4096;
-    //public static const int OLEMISC_ACTSLIKELABEL = 8192;
-    //public static const int OLEMISC_ALIGNABLE = 32768;
-    //public static const int OLEMISC_ALWAYSRUN = 2048;
-    //public static const int OLEMISC_CANLINKBYOLE1 = 32;
-    //public static const int OLEMISC_CANTLINKINSIDE = 16;
-    //public static const int OLEMISC_IGNOREACTIVATEWHENVISIBLE = 524288;
-    //public static const int OLEMISC_IMEMODE = 262144;
-    //public static const int OLEMISC_INSERTNOTREPLACE = 4;
-    //public static const int OLEMISC_INSIDEOUT = 128;
-    //public static const int OLEMISC_INVISIBLEATRUNTIME = 1024;
-    //public static const int OLEMISC_ISLINKOBJECT = 64;
-    //public static const int OLEMISC_NOUIACTIVATE = 16384;
-    //public static const int OLEMISC_ONLYICONIC = 2;
-    //public static const int OLEMISC_RECOMPOSEONRESIZE = 1;
-    //public static const int OLEMISC_RENDERINGISDEVICEINDEPENDENT = 512;
-    //public static const int OLEMISC_SETCLIENTSITEFIRST = 131072;
-    //public static const int OLEMISC_SIMPLEFRAME = 65536;
-    //public static const int OLEMISC_STATIC = 8;
-    //public static const int OLEMISC_SUPPORTSMULTILEVELUNDO = 2097152;
-    //public static const int OLEMISC_WANTSTOMENUMERGE = 1048576;
-    //public static const int OLENONE = 3;
-    //public static const int OLERENAMED = 3;
-    //public static const int OLERENDER_ASIS = 3;
-    public static const int OLERENDER_DRAW = 1;
-    //public static const int OLERENDER_FORMAT = 2;
-    //public static const int OLERENDER_NONE = 0;
-    //public static const int OLESAVED = 1;
-    //public static const int OLESIZEAUTOSIZE = 2;
-    //public static const int OLESIZECLIP = 0;
-    //public static const int OLESIZESTRETCH = 1;
-    //public static const int OLESIZEZOOM = 3;
-    //public static const int OLEWHICHMK_CONTAINER = 1;
-    //public static const int OLEWHICHMK_OBJFULL = 3;
-    //public static const int OLEWHICHMK_OBJREL = 2;
-    public static const int S_FALSE = 1;
-    public static const int S_OK = 0;
-    public static const int STG_E_FILENOTFOUND = 0x80030002;
-    public static const int STG_S_CONVERTED = 0x00030200;
-    //public static const int STGC_CONSOLIDATE = 8;
-    //public static const int STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4;
-    public static const int STGC_DEFAULT = 0;
-    //public static const int STGC_ONLYIFCURRENT = 2;
-    //public static const int STGC_OVERWRITE = 1;
-    public static const int STGM_CONVERT = 0x00020000;
-    public static const int STGM_CREATE = 0x00001000;
-    public static const int STGM_DELETEONRELEASE = 0x04000000;
-    public static const int STGM_DIRECT = 0x00000000;
-    public static const int STGM_DIRECT_SWMR = 0x00400000;
-    public static const int STGM_FAILIFTHERE = 0x00000000;
-    public static const int STGM_NOSCRATCH = 0x00100000;
-    public static const int STGM_NOSNAPSHOT = 0x00200000;
-    public static const int STGM_PRIORITY = 0x00040000;
-    public static const int STGM_READ = 0x00000000;
-    public static const int STGM_READWRITE = 0x00000002;
-    public static const int STGM_SHARE_DENY_NONE = 0x00000040;
-    public static const int STGM_SHARE_DENY_READ = 0x00000030;
-    public static const int STGM_SHARE_DENY_WRITE = 0x00000020;
-    public static const int STGM_SHARE_EXCLUSIVE = 0x00000010;
-    public static const int STGM_SIMPLE = 0x08000000;
-    public static const int STGM_TRANSACTED = 0x00010000;
-    public static const int STGM_WRITE = 0x00000001;
-    public static const int STGTY_STORAGE = 1;
-    public static const int STGTY_STREAM = 2;
-    public static const int STGTY_LOCKBYTES = 3;
-    public static const int STGTY_PROPERTY = 4;
-    //public static const int TYMED_ENHMF = 64;
-    //public static const int TYMED_FILE = 2;
-    //public static const int TYMED_GDI = 16;
-    public static const int TYMED_HGLOBAL = 1;
-    //public static const int TYMED_ISTORAGE = 8;
-    //public static const int TYMED_ISTREAM = 4;
-    //public static const int TYMED_MFPICT = 32;
-    //public static const int TYMED_NULL = 0;
-    public static const short DISPATCH_METHOD = 0x1;
-    public static const short DISPATCH_PROPERTYGET = 0x2;
-    public static const short DISPATCH_PROPERTYPUT = 0x4;
-    public static const short DISPATCH_PROPERTYPUTREF = 0x8;
-    //public static const short DISPID_CONSTRUCTOR = -6;
-    //public static const short DISPID_DESTRUCTOR = -7;
-    //public static const short DISPID_EVALUATE = -5;
-    //public static const short DISPID_NEWENUM = -4;
-    public static const short DISPID_PROPERTYPUT = -3;
-    //public static const short DISPID_UNKNOWN = -1;
-    //public static const short DISPID_VALUE = 0;
-    public static const short VT_BOOL = 11;
-    public static const short VT_BSTR = 8;
-    public static const short VT_BYREF = 16384;
-    public static const short VT_CY = 6;
-    public static const short VT_DATE = 7;
-    public static const short VT_DISPATCH = 9;
-    public static const short VT_EMPTY = 0;
-    public static const short VT_ERROR = 10;
-    public static const short VT_I1 = 16;
-    public static const short VT_I2 = 2;
-    public static const short VT_I4 = 3;
-    public static const short VT_I8 = 20;
-    public static const short VT_NULL = 1;
-    public static const short VT_R4 = 4;
-    public static const short VT_R8 = 5;
-    public static const short VT_UI1 = 17;
-    public static const short VT_UI2 = 18;
-    public static const short VT_UI4 = 19;
-    public static const short VT_UNKNOWN = 13;
-    public static const short VT_VARIANT = 12;
-    public static const short VARIANT_TRUE = -1;
-    public static const short VARIANT_FALSE = 0;
-
-
-// alias dwt.internal.ole.win32.comapi.
-// public static GUID* IIDFromString(String lpsz) {
-// 	GUID* lpiid = new GUID();
-// 	if (COM.IIDFromString(Converter.StrToWCHARz(lpsz), lpiid) == COM.S_OK)
-// 		return lpiid;
-// 	return null;
-// }
-
-alias COMAPI.CLSIDFromProgID CLSIDFromProgID;
-alias COMAPI.CLSIDFromString CLSIDFromString;
-alias COMAPI.CoCreateInstance CoCreateInstance;
-alias COMAPI.CoFreeUnusedLibraries CoFreeUnusedLibraries;
-alias COMAPI.CoGetClassObject CoGetClassObject;
-alias COMAPI.CoLockObjectExternal CoLockObjectExternal;
-alias COMAPI.CoTaskMemAlloc CoTaskMemAlloc;
-alias COMAPI.CoTaskMemFree CoTaskMemFree;
-alias COMAPI.CreateStdAccessibleObject CreateStdAccessibleObject;
-alias COMAPI.CreateStreamOnHGlobal CreateStreamOnHGlobal;
-alias COMAPI.DoDragDrop DoDragDrop;
-alias COMAPI.GetClassFile GetClassFile;
-alias COMAPI.IIDFromString IIDFromString;
-alias COMAPI.IsEqualGUID IsEqualGUID;
-alias COMAPI.LresultFromObject LresultFromObject;
-alias COMAPI.OleCreate OleCreate;
-alias COMAPI.OleCreateFromFile OleCreateFromFile;
-alias COMAPI.OleCreatePropertyFrame OleCreatePropertyFrame;
-alias COMAPI.OleDraw OleDraw;
-alias COMAPI.OleFlushClipboard OleFlushClipboard;
-alias COMAPI.OleGetClipboard OleGetClipboard;
-alias COMAPI.OleIsCurrentClipboard OleIsCurrentClipboard;
-alias COMAPI.OleIsRunning OleIsRunning;
-alias COMAPI.OleLoad OleLoad;
-alias COMAPI.OleRun OleRun;
-alias COMAPI.OleSave OleSave;
-alias COMAPI.OleSetClipboard OleSetClipboard;
-alias COMAPI.OleSetContainedObject OleSetContainedObject;
-alias COMAPI.OleSetMenuDescriptor OleSetMenuDescriptor;
-alias COMAPI.OleTranslateColor OleTranslateColor;
-alias COMAPI.ProgIDFromCLSID ProgIDFromCLSID;
-alias COMAPI.RegisterDragDrop RegisterDragDrop;
-alias COMAPI.ReleaseStgMedium ReleaseStgMedium;
-alias COMAPI.RevokeDragDrop RevokeDragDrop;
-alias COMAPI.SHDoDragDrop SHDoDragDrop;
-alias COMAPI.StgCreateDocfile StgCreateDocfile;
-alias COMAPI.StgIsStorageFile StgIsStorageFile;
-alias COMAPI.StgOpenStorage StgOpenStorage;
-alias COMAPI.StringFromCLSID StringFromCLSID;
-alias COMAPI.SysAllocString SysAllocString;
-alias COMAPI.SysFreeString SysFreeString;
-alias COMAPI.SysStringByteLen SysStringByteLen;
-alias COMAPI.VariantChangeType VariantChangeType;
-alias COMAPI.VariantClear VariantClear;
-alias COMAPI.VariantCopy VariantCopy;
-alias COMAPI.VariantInit VariantInit;
-alias COMAPI.WriteClassStg WriteClassStg;
-
-/**
- * <Shawn Liu>
- * VtbCall partially kept, use VtbCall instead of automation can promote performace
- * and VtbCall doesn't need prototype of interface declaration
- */
-
-public static int VtblCall(int fnNumber, void* ppVtbl) {
-	Function1 fn = cast(Function1)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0){
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1){
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2){
-	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3){
-	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2, arg3);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4){
-	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5){
-	Function7 fn = cast(Function7)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6){
-	Function8 fn = cast(Function8)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7){
-	Function9 fn = cast(Function9)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
-}
-
-/*
-public static int VtblCall(int fnNumber, void* ppVtbl) {
-	Function1 fn = cast(Function1)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0){
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, void* arg0){
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)arg0);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, wchar* arg0) {
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)arg0);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, wchar* arg0, wchar* arg1){
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)arg0, cast(int)arg1);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, wchar* arg0, int arg1) {
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)arg0, arg1);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, wchar* arg0, int arg1, int arg2, int arg3, int[] arg4) {
-	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)arg0, arg1, arg2, arg3, cast(int)cast(int*)arg4);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, wchar* arg0, int arg1, int arg2, int arg3, int arg4, int[] arg5) {
-	Function7 fn = cast(Function7)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)arg0, arg1, arg2, arg3, arg4, cast(int)cast(int*)arg5);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int[] arg0) {
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)cast(int*)arg0);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int[] arg1) {
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)cast(int*)arg1);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1) {
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int[] arg2) {
-	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, cast(int)cast(int*)arg2);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2) {
-	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int[] arg3) {
-	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2, cast(int)cast(int*)arg3);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, DVTARGETDEVICE* arg2, SIZE* arg3) {
-	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, cast(int)(arg2), cast(int)(arg3));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, GUID* arg2, int arg3, int[] arg4) {
-	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, cast(int)(arg2), arg3, cast(int)cast(int*)arg4);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, FORMATETC* arg1, int[] arg2) {
-	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)(arg1), cast(int)cast(int*)arg2);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, GUID* arg1) {
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)(arg1));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, GUID* arg1, int arg2, int arg3) {
-	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)(arg1), arg2, arg3);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, GUID* arg1, int arg2, int arg3, DISPPARAMS* arg4, int arg5, EXCEPINFO* arg6, int[] arg7) {
-	Function9 fn = cast(Function9)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)(arg1), arg2, arg3, cast(int)(arg4), arg5, cast(int)(arg6), cast(int)cast(int*)arg7);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, STATSTG* arg1, int[] arg2) {
-	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)(arg1), cast(int)cast(int*)arg2);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, MSG* arg0) {
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, MSG* arg1, int arg2, int arg3, int arg4, RECT* arg5) {
-	Function7 fn = cast(Function7)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)(arg1), arg2, arg3, arg4, cast(int)(arg5));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, SIZE* arg1) {
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)(arg1));
-}
-
-// TODO: the type of BOOL ???
-// conflict with  VtblCall(int, int, int, int);
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, bool arg1) {
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)arg1);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, CAUUID* arg0) {
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, CONTROLINFO* arg0) {
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, FORMATETC* arg0) {
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, FORMATETC* arg0, STGMEDIUM* arg1) {
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0), cast(int)(arg1));
-}
-// TODO: BOOL type ???
-public static int VtblCall(int fnNumber, void* ppVtbl, FORMATETC* arg0, STGMEDIUM* arg1, int arg2) {
-	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0), cast(int)(arg1), arg2);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, GUID* arg0) {
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0));
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, GUID* arg0, int[] arg1) {
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0), cast(int)cast(int*)arg1);
-}
-
-public static int VtblCall(int fnNumber, void* ppVtbl, GUID* arg0, int arg1, int arg2, int arg3, int[] arg4) {
-	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0), arg1, arg2, arg3, cast(int)cast(int*)arg4);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, GUID* arg0, int arg1, int arg2, int arg3, int arg4) {
-	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0), arg1, arg2, arg3, arg4);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, GUID* arg0, int arg1, OLECMD* arg2, OLECMDTEXT* arg3) {
-	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0), arg1, cast(int)(arg2), cast(int)(arg3));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, LICINFO* arg0) {
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, RECT* arg0, int arg1, int arg2) {
-	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0), arg1, arg2);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, RECT* arg0, RECT* arg1) {
-	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0), cast(int)(arg1));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, RECT* arg0) {
-	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, cast(int)(arg0));
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int[] arg1, int[] arg2, int[] arg3, int[] arg4) {
-	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)cast(int*)arg1, cast(int)cast(int*)arg2, cast(int)cast(int*)arg3, cast(int)cast(int*)arg4);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int[] arg1, int arg2, int[] arg3) {
-	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, cast(int)cast(int*)arg1, arg2, cast(int)cast(int*)arg3);
-}
-
-
-// Start ACCESSIBILITY
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3) {
-	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2, arg3);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4) {
-	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) {
-	Function7 fn = cast(Function7)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
-}
-public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7) {
-	Function9 fn = cast(Function9)(*cast(int **)ppVtbl)[fnNumber];
-	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
-}
-
-*/
-
-
-public static const int CHILDID_SELF = 0;
-public static const int CO_E_OBJNOTCONNECTED = 0x800401FD;
-
-//public static const int ROLE_SYSTEM_TITLEBAR = 0x1;
-public static const int ROLE_SYSTEM_MENUBAR = 0x2;
-public static const int ROLE_SYSTEM_SCROLLBAR = 0x3;
-//public static const int ROLE_SYSTEM_GRIP = 0x4;
-//public static const int ROLE_SYSTEM_SOUND = 0x5;
-//public static const int ROLE_SYSTEM_CURSOR = 0x6;
-//public static const int ROLE_SYSTEM_CARET = 0x7;
-//public static const int ROLE_SYSTEM_ALERT = 0x8;
-public static const int ROLE_SYSTEM_WINDOW = 0x9;
-public static const int ROLE_SYSTEM_CLIENT = 0xa;
-public static const int ROLE_SYSTEM_MENUPOPUP = 0xb;
-public static const int ROLE_SYSTEM_MENUITEM = 0xc;
-public static const int ROLE_SYSTEM_TOOLTIP = 0xd;
-//public static const int ROLE_SYSTEM_APPLICATION = 0xe;
-//public static const int ROLE_SYSTEM_DOCUMENT = 0xf;
-//public static const int ROLE_SYSTEM_PANE = 0x10;
-//public static const int ROLE_SYSTEM_CHART = 0x11;
-public static const int ROLE_SYSTEM_DIALOG = 0x12;
-//public static const int ROLE_SYSTEM_BORDER = 0x13;
-//public static const int ROLE_SYSTEM_GROUPING = 0x14;
-public static const int ROLE_SYSTEM_SEPARATOR = 0x15;
-public static const int ROLE_SYSTEM_TOOLBAR = 0x16;
-//public static const int ROLE_SYSTEM_STATUSBAR = 0x17;
-public static const int ROLE_SYSTEM_TABLE = 0x18;
-public static const int ROLE_SYSTEM_COLUMNHEADER = 0x19;
-public static const int ROLE_SYSTEM_ROWHEADER = 0x1a;
-//public static const int ROLE_SYSTEM_COLUMN = 0x1b;
-//public static const int ROLE_SYSTEM_ROW = 0x1c;
-public static const int ROLE_SYSTEM_CELL = 0x1d;
-public static const int ROLE_SYSTEM_LINK = 0x1e;
-//public static const int ROLE_SYSTEM_HELPBALLOON = 0x1f;
-//public static const int ROLE_SYSTEM_CHARACTER = 0x20;
-public static const int ROLE_SYSTEM_LIST = 0x21;
-public static const int ROLE_SYSTEM_LISTITEM = 0x22;
-public static const int ROLE_SYSTEM_OUTLINE = 0x23;
-public static const int ROLE_SYSTEM_OUTLINEITEM = 0x24;
-public static const int ROLE_SYSTEM_PAGETAB = 0x25;
-//public static const int ROLE_SYSTEM_PROPERTYPAGE = 0x26;
-//public static const int ROLE_SYSTEM_INDICATOR = 0x27;
-//public static const int ROLE_SYSTEM_GRAPHIC = 0x28;
-public static const int ROLE_SYSTEM_STATICTEXT = 0x29;
-public static const int ROLE_SYSTEM_TEXT = 0x2a;
-public static const int ROLE_SYSTEM_PUSHBUTTON = 0x2b;
-public static const int ROLE_SYSTEM_CHECKBUTTON = 0x2c;
-public static const int ROLE_SYSTEM_RADIOBUTTON = 0x2d;
-public static const int ROLE_SYSTEM_COMBOBOX = 0x2e;
-//public static const int ROLE_SYSTEM_DROPLIST = 0x2f;
-public static const int ROLE_SYSTEM_PROGRESSBAR = 0x30;
-//public static const int ROLE_SYSTEM_DIAL = 0x31;
-//public static const int ROLE_SYSTEM_HOTKEYFIELD = 0x32;
-public static const int ROLE_SYSTEM_SLIDER = 0x33;
-//public static const int ROLE_SYSTEM_SPINBUTTON = 0x34;
-//public static const int ROLE_SYSTEM_DIAGRAM = 0x35;
-//public static const int ROLE_SYSTEM_ANIMATION = 0x36;
-//public static const int ROLE_SYSTEM_EQUATION = 0x37;
-//public static const int ROLE_SYSTEM_BUTTONDROPDOWN = 0x38;
-//public static const int ROLE_SYSTEM_BUTTONMENU = 0x39;
-//public static const int ROLE_SYSTEM_BUTTONDROPDOWNGRID = 0x3a;
-//public static const int ROLE_SYSTEM_WHITESPACE = 0x3b;
-public static const int ROLE_SYSTEM_PAGETABLIST = 0x3c;
-//public static const int ROLE_SYSTEM_CLOCK = 0x3d;
-
-public static const int STATE_SYSTEM_NORMAL = 0;
-//public static const int STATE_SYSTEM_UNAVAILABLE = 0x1;
-public static const int STATE_SYSTEM_SELECTED = 0x2;
-public static const int STATE_SYSTEM_FOCUSED = 0x4;
-public static const int STATE_SYSTEM_PRESSED = 0x8;
-public static const int STATE_SYSTEM_CHECKED = 0x10;
-public static const int STATE_SYSTEM_MIXED = 0x20;
-//public static const int STATE_SYSTEM_INDETERMINATE = STATE_SYSTEM_MIXED;
-public static const int STATE_SYSTEM_READONLY = 0x40;
-public static const int STATE_SYSTEM_HOTTRACKED = 0x80;
-//public static const int STATE_SYSTEM_DEFAULT = 0x100;
-public static const int STATE_SYSTEM_EXPANDED = 0x200;
-public static const int STATE_SYSTEM_COLLAPSED = 0x400;
-public static const int STATE_SYSTEM_BUSY = 0x800;
-//public static const int STATE_SYSTEM_FLOATING = 0x1000;
-//public static const int STATE_SYSTEM_MARQUEED = 0x2000;
-//public static const int STATE_SYSTEM_ANIMATED = 0x4000;
-public static const int STATE_SYSTEM_INVISIBLE = 0x8000;
-public static const int STATE_SYSTEM_OFFSCREEN = 0x10000;
-public static const int STATE_SYSTEM_SIZEABLE = 0x20000;
-//public static const int STATE_SYSTEM_MOVEABLE = 0x40000;
-//public static const int STATE_SYSTEM_SELFVOICING = 0x80000;
-public static const int STATE_SYSTEM_FOCUSABLE = 0x100000;
-public static const int STATE_SYSTEM_SELECTABLE = 0x200000;
-public static const int STATE_SYSTEM_LINKED = 0x400000;
-//public static const int STATE_SYSTEM_TRAVERSED = 0x800000;
-public static const int STATE_SYSTEM_MULTISELECTABLE = 0x1000000;
-//public static const int STATE_SYSTEM_EXTSELECTABLE = 0x2000000;
-//public static const int STATE_SYSTEM_ALERT_LOW = 0x4000000;
-//public static const int STATE_SYSTEM_ALERT_MEDIUM = 0x8000000;
-//public static const int STATE_SYSTEM_ALERT_HIGH = 0x10000000;
-//public static const int STATE_SYSTEM_PROTECTED = 0x20000000;
-//public static const int STATE_SYSTEM_VALID = 0x3fffffff;
-
-/* End ACCESSIBILITY */
-
-}
-
-/**
- * <Shawn> difference between WCHARzToStr(pwstr, -1) :
- * BSTRToStr() internally call WCHARzToStr(pwstr, length) with length set,
- * instead to determine the null ended, this mean BSTRToStr() can get string
- * which has embedded null characters.
- */
-// BSTR is aliased to wchar*
-// Note : Free the "bstr" memory if freeTheString is true, default false
-String BSTRToStr( /*BSTR*/ inout wchar* bstr, bool freeTheString = false){
-    if(bstr is null) return null;
-    int size = (SysStringByteLen(bstr) + 1)/wchar.sizeof;
-    String result = WCHARzToStr(bstr, size);
-    if(freeTheString) {
-        // free the string and set ptr to null
-        SysFreeString(bstr);
-        bstr = null;
-    }
-    return result;
-}
-
-
-
-
-
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ *     Shawn Liu
+ *     Frank Benoit <benoit@tionex.de>
+ *******************************************************************************/
+module dwt.internal.ole.win32.COM;
+
+
+public import dwt.internal.ole.win32.COMTYPES;
+private import dwt.internal.ole.win32.OAIDL;
+private import dwt.internal.ole.win32.OBJIDL;
+private import dwt.internal.ole.win32.OLEIDL;
+private import dwt.internal.ole.win32.DOCOBJ;
+private import dwt.internal.ole.win32.EXDISP;
+private import dwt.internal.ole.win32.MSHTMHST;
+private import dwt.internal.ole.win32.extras;
+private import dwt.internal.ole.win32.ifs;
+private import dwt.internal.ole.win32.COMAPI;
+import dwt.dwthelper.utils;
+
+private alias dwt.internal.ole.win32.COMAPI COMAPI;
+
+
+public import dwt.internal.win32.OS;
+
+template IIDFromStringT(String g) {
+   static if (g.length == 38)
+     const GUID IIDFromStringT = IIDFromStringT!(g[1..$-1]);
+   else static if (g.length == 36)
+     const GUID IIDFromStringT = {
+        mixin("0x" ~ g[0..8]),
+        mixin("0x" ~ g[9..13]),
+        mixin("0x" ~ g[14..18]),
+        [
+            mixin("0x" ~ g[19..21]),
+            mixin("0x" ~ g[21..23]),
+            mixin("0x" ~ g[24..26]),
+            mixin("0x" ~ g[26..28]),
+            mixin("0x" ~ g[28..30]),
+            mixin("0x" ~ g[30..32]),
+            mixin("0x" ~ g[32..34]),
+            mixin("0x" ~ g[34..36]) ] };
+   else
+     static assert(false, "Incorrect format for GUID. "~g);
+}
+
+
+public class COM : OS {
+
+	//private import std.c.windows.com;
+
+	// all the GUID
+	// GUIDs for Home Page Browser
+
+    /** GUID Constants */
+    public static const GUID IIDJavaBeansBridge = IIDFromStringT!("{8AD9C840-044E-11D1-B3E9-00805F499D93}"); //$NON-NLS-1$
+    public static const GUID IIDShockwaveActiveXControl = IIDFromStringT!("{166B1BCA-3F9C-11CF-8075-444553540000}"); //$NON-NLS-1$
+    public static const GUID IIDIEditorSiteTime = IIDFromStringT!("{6BD2AEFE-7876-45e6-A6E7-3BFCDF6540AA}"); //$NON-NLS-1$
+    public static const GUID IIDIEditorSiteProperty = IIDFromStringT!("{D381A1F4-2326-4f3c-AFB9-B7537DB9E238}"); //$NON-NLS-1$
+    public static const GUID IIDIEditorBaseProperty = IIDFromStringT!("{61E55B0B-2647-47c4-8C89-E736EF15D636}"); //$NON-NLS-1$
+    public static const GUID IIDIEditorSite = IIDFromStringT!("{CDD88AB9-B01D-426E-B0F0-30973E9A074B}"); //$NON-NLS-1$
+    public static const GUID IIDIEditorService = IIDFromStringT!("{BEE283FE-7B42-4FF3-8232-0F07D43ABCF1}"); //$NON-NLS-1$
+    public static const GUID IIDIEditorManager = IIDFromStringT!("{EFDE08C4-BE87-4B1A-BF84-15FC30207180}"); //$NON-NLS-1$
+    public static const GUID IIDIAccessible = IIDFromStringT!("{618736E0-3C3D-11CF-810C-00AA00389B71}"); //$NON-NLS-1$
+    //public static const GUID IIDIAccessibleHandler = IIDFromStringT!("{03022430-ABC4-11D0-BDE2-00AA001A1953}"); //$NON-NLS-1$
+    //public static const GUID IIDIAccessor = IIDFromStringT!("{0C733A8C-2A1C-11CE-ADE5-00AA0044773D}"); //$NON-NLS-1$
+    public static const GUID IIDIAdviseSink = IIDFromStringT!("{0000010F-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIAdviseSink2 = IIDFromStringT!("{00000125-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIBindCtx = IIDFromStringT!("{0000000E-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIClassFactory = IIDFromStringT!("{00000001-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIClassFactory2 = IIDFromStringT!("{B196B28F-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    public static const GUID IIDIConnectionPoint = IIDFromStringT!("{B196B286-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    public static const GUID IIDIConnectionPointContainer = IIDFromStringT!("{B196B284-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    //public static const GUID IIDICreateErrorInfo = IIDFromStringT!("{22F03340-547D-101B-8E65-08002B2BD119}"); //$NON-NLS-1$
+    //public static const GUID IIDICreateTypeInfo = IIDFromStringT!("{00020405-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDICreateTypeLib = IIDFromStringT!("{00020406-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIDataAdviseHolder = IIDFromStringT!("{00000110-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIDataObject = IIDFromStringT!("{0000010E-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIDispatch = IIDFromStringT!("{00020400-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIDocHostUIHandler = IIDFromStringT!("{BD3F23C0-D43E-11CF-893B-00AA00BDCE1A}"); //$NON-NLS-1$
+    public static const GUID IIDIDocHostShowUI = IIDFromStringT!("{C4D244B0-D43E-11CF-893B-00AA00BDCE1A}"); //$NON-NLS-1$
+    public static const GUID IIDIDropSource = IIDFromStringT!("{00000121-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIDropTarget = IIDFromStringT!("{00000122-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIEnumConnectionPoints = IIDFromStringT!("{B196B285-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    //public static const GUID IIDIEnumConnections = IIDFromStringT!("{B196B287-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    public static const GUID IIDIEnumFORMATETC = IIDFromStringT!("{00000103-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIEnumMoniker = IIDFromStringT!("{00000102-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIEnumOLEVERB = IIDFromStringT!("{00000104-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIEnumSTATDATA = IIDFromStringT!("{00000105-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIEnumSTATSTG = IIDFromStringT!("{0000000D-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIEnumString = IIDFromStringT!("{00000101-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIEnumUnknown = IIDFromStringT!("{00000100-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIEnumVARIANT = IIDFromStringT!("{00020404-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIErrorInfo = IIDFromStringT!("{1CF2B120-547D-101B-8E65-08002B2BD119}"); //$NON-NLS-1$
+    //public static const GUID IIDIErrorLog = IIDFromStringT!("{3127CA40-446E-11CE-8135-00AA004BB851}"); //$NON-NLS-1$
+    //public static const GUID IIDIExternalConnection = IIDFromStringT!("{00000019-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIFont = IIDFromStringT!("{BEF6E002-A874-101A-8BBA-00AA00300CAB}"); //$NON-NLS-1$
+    //public static const GUID IIDIFontDisp = IIDFromStringT!("{BEF6E003-A874-101A-8BBA-00AA00300CAB}"); //$NON-NLS-1$
+    public static const /*GUID*/ String IIDIHTMLDocumentEvents2 = /*IIDFromStringT!(*/"{3050F613-98B5-11CF-BB82-00AA00BDCE0B}"/*)*/;
+    public static const GUID IIDIInternetSecurityManager = IIDFromStringT!("{79eac9ee-baf9-11ce-8c82-00aa004ba90b}"); //$NON-NLS-1$
+    //public static const GUID IIDILockBytes = IIDFromStringT!("{0000000A-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIMalloc = IIDFromStringT!("{00000002-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIMallocSpy = IIDFromStringT!("{0000001D-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIMarshal = IIDFromStringT!("{00000003-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIMessageFilter = IIDFromStringT!("{00000016-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIMoniker = IIDFromStringT!("{0000000F-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIOleAdviseHolder = IIDFromStringT!("{00000111-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIOleCache = IIDFromStringT!("{0000011E-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIOleCache2 = IIDFromStringT!("{00000128-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIOleCacheControl = IIDFromStringT!("{00000129-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIOleClientSite = IIDFromStringT!("{00000118-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIOleCommandTarget = IIDFromStringT!("{B722BCCB-4E68-101B-A2BC-00AA00404770}"); //$NON-NLS-1$
+    public static const GUID IIDIOleContainer = IIDFromStringT!("{0000011B-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIOleControl = IIDFromStringT!("{B196B288-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    public static const GUID IIDIOleControlSite = IIDFromStringT!("{B196B289-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    public static const GUID IIDIOleDocument = IIDFromStringT!("{B722BCC5-4E68-101B-A2BC-00AA00404770}"); //$NON-NLS-1$
+    public static const GUID IIDIOleDocumentSite = IIDFromStringT!("{B722BCC7-4E68-101B-A2BC-00AA00404770}"); //$NON-NLS-1$
+    public static const GUID IIDIOleInPlaceActiveObject = IIDFromStringT!("{00000117-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIOleInPlaceFrame = IIDFromStringT!("{00000116-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIOleInPlaceObject = IIDFromStringT!("{00000113-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIOleInPlaceSite = IIDFromStringT!("{00000119-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIOleInPlaceUIWindow = IIDFromStringT!("{00000115-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIOleItemContainer = IIDFromStringT!("{0000011C-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIOleLink = IIDFromStringT!("{0000011D-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIOleObject = IIDFromStringT!("{00000112-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIOleWindow = IIDFromStringT!("{00000114-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIParseDisplayName = IIDFromStringT!("{0000011A-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIPerPropertyBrowsing = IIDFromStringT!("{376BD3AA-3845-101B-84ED-08002B2EC713}"); //$NON-NLS-1$
+    public static const GUID IIDIPersist = IIDFromStringT!("{0000010C-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIPersistFile = IIDFromStringT!("{0000010B-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIPersistMemory = IIDFromStringT!("{BD1AE5E0-A6AE-11CE-BD37-504200C10000}"); //$NON-NLS-1$
+    //public static const GUID IIDIPersistPropertyBag = IIDFromStringT!("{37D84F60-42CB-11CE-8135-00AA004BB851}"); //$NON-NLS-1$
+    public static const GUID IIDIPersistStorage = IIDFromStringT!("{0000010A-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIPersistStream = IIDFromStringT!("{00000109-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIPersistStreamInit = IIDFromStringT!("{7FD52380-4E07-101B-AE2D-08002B2EC713}"); //$NON-NLS-1$
+    //public static const GUID IIDIPicture = IIDFromStringT!("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"); //$NON-NLS-1$
+    //public static const GUID IIDIPictureDisp = IIDFromStringT!("{7BF80981-BF32-101A-8BBB-00AA00300CAB}"); //$NON-NLS-1$
+    //public static const GUID IIDIPropertyBag = IIDFromStringT!("{55272A00-42CB-11CE-8135-00AA004BB851}"); //$NON-NLS-1$
+    public static const GUID IIDIPropertyNotifySink = IIDFromStringT!("{9BFBBC02-EFF1-101A-84ED-00AA00341D07}"); //$NON-NLS-1$
+    //public static const GUID IIDIPropertyPage = IIDFromStringT!("{B196B28D-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    //public static const GUID IIDIPropertyPage2 = IIDFromStringT!("{01E44665-24AC-101B-84ED-08002B2EC713}"); //$NON-NLS-1$
+    //public static const GUID IIDIPropertyPageSite = IIDFromStringT!("{B196B28C-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    public static const GUID IIDIProvideClassInfo = IIDFromStringT!("{B196B283-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    public static const GUID IIDIProvideClassInfo2 = IIDFromStringT!("{A6BC3AC0-DBAA-11CE-9DE3-00AA004BB851}"); //$NON-NLS-1$
+    //public static const GUID IIDIPSFactoryBuffer = IIDFromStringT!("{D5F569D0-593B-101A-B569-08002B2DBF7A}"); //$NON-NLS-1$
+    //public static const GUID IIDIRootStorage = IIDFromStringT!("{00000012-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIROTData = IIDFromStringT!("{F29F6BC0-5021-11CE-AA15-00006901293F}"); //$NON-NLS-1$
+    //public static const GUID IIDIRpcChannelBuffer = IIDFromStringT!("{D5F56B60-593B-101A-B569-08002B2DBF7A}"); //$NON-NLS-1$
+    //public static const GUID IIDIRpcProxyBuffer = IIDFromStringT!("{D5F56A34-593B-101A-B569-08002B2DBF7A}"); //$NON-NLS-1$
+    //public static const GUID IIDIRpcStubBuffer = IIDFromStringT!("{D5F56AFC-593B-101A-B569-08002B2DBF7A}"); //$NON-NLS-1$
+    //public static const GUID IIDIRunnableObject = IIDFromStringT!("{00000126-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIRunningObjectTable = IIDFromStringT!("{00000010-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDISimpleFrameSite = IIDFromStringT!("{742B0E01-14E6-101B-914E-00AA00300CAB}"); //$NON-NLS-1$
+    public static const GUID IIDIServiceProvider = IIDFromStringT!("{6d5140c1-7436-11ce-8034-00aa006009fa}"); //$NON-NLS-1$
+    public static const GUID IIDISpecifyPropertyPages = IIDFromStringT!("{B196B28B-BAB4-101A-B69C-00AA00341D07}"); //$NON-NLS-1$
+    //public static const GUID IIDIStdMarshalInfo = IIDFromStringT!("{00000018-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIStorage = IIDFromStringT!("{0000000B-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIStream = IIDFromStringT!("{0000000C-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDISupportErrorInfo = IIDFromStringT!("{DF0B3D60-548F-101B-8E65-08002B2BD119}"); //$NON-NLS-1$
+    //public static const GUID IIDITypeComp = IIDFromStringT!("{00020403-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDITypeLib = IIDFromStringT!("{00020402-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIUnknown = IIDFromStringT!("{00000000-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    //public static const GUID IIDIViewObject = IIDFromStringT!("{0000010D-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID IIDIViewObject2 = IIDFromStringT!("{00000127-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+    public static const GUID CGID_DocHostCommandHandler = IIDFromStringT!("{f38bc242-b950-11d1-8918-00c04fc2c836}"); //$NON-NLS-1$
+    public static const GUID CGID_Explorer = IIDFromStringT!("{000214D0-0000-0000-C000-000000000046}"); //$NON-NLS-1$
+
+
+
+	/* Constants */
+    //public static const int ADVF_DATAONSTOP = 64;
+    //public static const int ADVF_NODATA = 1;
+    //public static const int ADVF_ONLYONCE = 2;
+    //public static const int ADVF_PRIMEFIRST = 4;
+    //public static const int ADVFCACHE_FORCEBUILTIN = 16;
+    //public static const int ADVFCACHE_NOHANDLER = 8;
+    //public static const int ADVFCACHE_ONSAVE = 32;
+    public static const int CF_TEXT = 1;
+    public static const int CF_BITMAP = 2;
+    public static const int CF_METAFILEPICT = 3;
+    public static const int CF_SYLK = 4;
+    public static const int CF_DIF = 5;
+    public static const int CF_TIFF = 6;
+    public static const int CF_OEMTEXT = 7;
+    public static const int CF_DIB = 8;
+    public static const int CF_PALETTE = 9;
+    public static const int CF_PENDATA = 10;
+    public static const int CF_RIFF = 11;
+    public static const int CF_WAVE = 12;
+    public static const int CF_UNICODETEXT = 13;
+    public static const int CF_ENHMETAFILE = 14;
+    public static const int CF_HDROP = 15;
+    public static const int CF_LOCALE = 16;
+    public static const int CF_MAX = 17;
+    public static const int CLSCTX_INPROC_HANDLER = 2;
+    public static const int CLSCTX_INPROC_SERVER = 1;
+    public static const int CLSCTX_LOCAL_SERVER = 4;
+    public static const int CLSCTX_REMOTE_SERVER = 16;
+    public static const int CO_E_CLASSSTRING = -2147221005;
+    //public static const int COINIT_APARTMENTTHREADED = 2;
+    //public static const int COINIT_DISABLE_OLE1DDE = 4;
+    //public static const int COINIT_MULTITHREADED = 0;
+    //public static const int COINIT_SPEED_OVER_MEMORY = 8;
+    public static const int DATADIR_GET = 1;
+    public static const int DATADIR_SET = 2;
+    public static const int DISP_E_EXCEPTION = 0x80020009;
+    public static const int DISP_E_MEMBERNOTFOUND = -2147352573;
+    public static const int DISP_E_UNKNOWNINTERFACE = 0x80020001;
+    //public static const int DISPID_AMBIENT_APPEARANCE = -716;
+    //public static const int DISPID_AMBIENT_AUTOCLIP = -715;
+    public static const int DISPID_AMBIENT_BACKCOLOR = -701;
+    //public static const int DISPID_AMBIENT_CHARSET = -727;
+    //public static const int DISPID_AMBIENT_CODEPAGE = -725;
+    //public static const int DISPID_AMBIENT_DISPLAYASDEFAULT = -713;
+    //public static const int DISPID_AMBIENT_DISPLAYNAME = -702;
+    public static const int DISPID_AMBIENT_FONT = -703;
+    public static const int DISPID_AMBIENT_FORECOLOR = -704;
+    public static const int DISPID_AMBIENT_LOCALEID = -705;
+    public static const int DISPID_AMBIENT_MESSAGEREFLECT = -706;
+    public static const int DISPID_AMBIENT_OFFLINEIFNOTCONNECTED = -5501;
+    //public static const int DISPID_AMBIENT_PALETTE = -726;
+    //public static const int DISPID_AMBIENT_RIGHTTOLEFT = -732;
+    //public static const int DISPID_AMBIENT_SCALEUNITS = -707;
+    public static const int DISPID_AMBIENT_SHOWGRABHANDLES = -711;
+    public static const int DISPID_AMBIENT_SHOWHATCHING = -712;
+    public static const int DISPID_AMBIENT_SILENT = -5502;
+    public static const int DISPID_AMBIENT_SUPPORTSMNEMONICS = -714;
+    //public static const int DISPID_AMBIENT_TEXTALIGN = -708;
+    //public static const int DISPID_AMBIENT_TOPTOBOTTOM = -733;
+    //public static const int DISPID_AMBIENT_TRANSFERPRIORITY = -728;
+    public static const int DISPID_AMBIENT_UIDEAD = -710;
+    public static const int DISPID_AMBIENT_USERMODE = -709;
+    public static const int DISPID_BACKCOLOR = -501;
+    public static const int DISPID_FONT = -512;
+    public static const int DISPID_FONT_BOLD = 3;
+    public static const int DISPID_FONT_CHARSET = 8;
+    public static const int DISPID_FONT_ITALIC = 4;
+    public static const int DISPID_FONT_NAME = 0;
+    public static const int DISPID_FONT_SIZE = 2;
+    public static const int DISPID_FONT_STRIKE = 6;
+    public static const int DISPID_FONT_UNDER = 5;
+    public static const int DISPID_FONT_WEIGHT = 7;
+    public static const int DISPID_FORECOLOR = -513;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONDBLCLICK = 0xFFFFFDA7;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONDRAGEND = 0x80010015;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONDRAGSTART = 0x8001000B;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONKEYDOWN = 0xFFFFFDA6;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONKEYPRESS = 0xFFFFFDA5;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONKEYUP = 0xFFFFFDA4;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOUT = 0x80010009;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEOVER = 0x80010008;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEMOVE = 0xFFFFFDA2;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEDOWN = 0xFFFFFDA3;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEUP = 0xFFFFFDA1;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONSTOP = 0x00000402;
+    public static const int DISPID_HTMLDOCUMENTEVENTS_ONMOUSEWHEEL = 1033;
+
+    //public static const int DISPID_READYSTATE = -525;
+    //public static const int DISPID_READYSTATECHANGE = -609;
+    public static const int DRAGDROP_S_DROP = 0x00040100;
+    public static const int DRAGDROP_S_CANCEL = 0x00040101;
+    public static const int DRAGDROP_S_USEDEFAULTCURSORS = 0x00040102;
+    public static const int DROPEFFECT_NONE = 0;
+    public static const int DROPEFFECT_COPY = 1;
+    public static const int DROPEFFECT_MOVE = 2;
+    public static const int DROPEFFECT_LINK = 4;
+    public static const int DROPEFFECT_SCROLL = 0x80000000;
+    public static final int DSH_ALLOWDROPDESCRIPTIONTEXT = 0x1;
+    public static const int DV_E_FORMATETC = -2147221404;
+    public static const int DV_E_STGMEDIUM = -2147221402;
+    public static const int DV_E_TYMED = -2147221399;
+    public static const int DVASPECT_CONTENT = 1;
+    //public static const int DVASPECT_DOCPRINT = 8;
+    //public static const int DVASPECT_ICON = 4;
+    //public static const int DVASPECT_THUMBNAIL = 2;
+    public static const int E_FAIL = -2147467259;
+    public static const int E_INVALIDARG = -2147024809;
+    public static const int E_NOINTERFACE = -2147467262;
+    public static const int E_NOTIMPL = -2147467263;
+    public static const int E_NOTSUPPORTED = 0x80040100;
+    //public static const int E_NOTLICENSED = -2147221230;
+    public static const int E_OUTOFMEMORY = -2147024882;
+    //public static const int E_POINTER = -2147467261;
+    public static const int GMEM_FIXED = 0;
+    //public static const int GMEM_MOVABLE = 2;
+    //public static const int GMEM_NODISCARD = 32;
+    public static const int GMEM_ZEROINIT = 64;
+    public static const int GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1;
+    public static const int IMPLTYPEFLAG_FDEFAULT = 1;
+    //public static const int IMPLTYPEFLAG_FDEFAULTVTABLE = 2048;
+    public static const int IMPLTYPEFLAG_FRESTRICTED = 4;
+    public static const int IMPLTYPEFLAG_FSOURCE = 2;
+    public static const int LOCALE_SYSTEM_DEFAULT = 1024;
+    public static const int LOCALE_USER_DEFAULT = 2048;
+    //public static const int MEMCTX_TASK = 1;
+    //public static const int OLEACTIVATEAUTO = 3;
+    //public static const int OLEACTIVATEDOUBLECLICK = 2;
+    //public static const int OLEACTIVATEGETFOCUS = 1;
+    //public static const int OLEACTIVATEMANUAL = 0;
+    //public static const int OLEAUTOMATIC = 0;
+    //public static const int OLECHANGED = 0;
+    public static const int OLECLOSE_NOSAVE = 1;
+    //public static const int OLECLOSE_PROMPTSAVE = 2;
+    public static const int OLECLOSE_SAVEIFDIRTY = 0;
+    //public static const int OLECLOSED = 2;
+    //public static const int OLECONTF_EMBEDDINGS = 1;
+    //public static const int OLECONTF_LINKS = 2;
+    //public static const int OLECONTF_ONLYIFRUNNING = 16;
+    //public static const int OLECONTF_ONLYUSER = 8;
+    //public static const int OLECONTF_OTHERS = 4;
+    //public static const int OLEDEACTIVATEMANUAL = 1;
+    //public static const int OLEDEACTIVATEONLOSEFOCUS = 0;
+    //public static const int OLEDECBORDER = 1;
+    //public static const int OLEDECBORDERANDNIBS = 3;
+    //public static const int OLEDECNIBS = 2;
+    //public static const int OLEDECNONE = 0;
+    //public static const int OLEDISPLAYCONTENT = 0;
+    //public static const int OLEDISPLAYICON = 1;
+    //public static const int OLEEITHER = 2;
+    public static const int OLEEMBEDDED = 1;
+    //public static const int OLEFROZEN = 1;
+    public static const int OLEIVERB_DISCARDUNDOSTATE = -6;
+    //public static const int OLEIVERB_HIDE = -3;
+    public static const int OLEIVERB_INPLACEACTIVATE = -5;
+    //public static const int OLEIVERB_OPEN = -2;
+    public static const int OLEIVERB_PRIMARY = 0;
+    //public static const int OLEIVERB_PROPERTIES = -7;
+    //public static const int OLEIVERB_SHOW = -1;
+    //public static const int OLEIVERB_UIACTIVATE = -4;
+    public static const int OLELINKED = 0;
+    //public static const int OLEMANUAL = 2;
+    //public static const int OLEMISC_ACTIVATEWHENVISIBLE = 256;
+    //public static const int OLEMISC_ACTSLIKEBUTTON = 4096;
+    //public static const int OLEMISC_ACTSLIKELABEL = 8192;
+    //public static const int OLEMISC_ALIGNABLE = 32768;
+    //public static const int OLEMISC_ALWAYSRUN = 2048;
+    //public static const int OLEMISC_CANLINKBYOLE1 = 32;
+    //public static const int OLEMISC_CANTLINKINSIDE = 16;
+    //public static const int OLEMISC_IGNOREACTIVATEWHENVISIBLE = 524288;
+    //public static const int OLEMISC_IMEMODE = 262144;
+    //public static const int OLEMISC_INSERTNOTREPLACE = 4;
+    //public static const int OLEMISC_INSIDEOUT = 128;
+    //public static const int OLEMISC_INVISIBLEATRUNTIME = 1024;
+    //public static const int OLEMISC_ISLINKOBJECT = 64;
+    //public static const int OLEMISC_NOUIACTIVATE = 16384;
+    //public static const int OLEMISC_ONLYICONIC = 2;
+    //public static const int OLEMISC_RECOMPOSEONRESIZE = 1;
+    //public static const int OLEMISC_RENDERINGISDEVICEINDEPENDENT = 512;
+    //public static const int OLEMISC_SETCLIENTSITEFIRST = 131072;
+    //public static const int OLEMISC_SIMPLEFRAME = 65536;
+    //public static const int OLEMISC_STATIC = 8;
+    //public static const int OLEMISC_SUPPORTSMULTILEVELUNDO = 2097152;
+    //public static const int OLEMISC_WANTSTOMENUMERGE = 1048576;
+    //public static const int OLENONE = 3;
+    //public static const int OLERENAMED = 3;
+    //public static const int OLERENDER_ASIS = 3;
+    public static const int OLERENDER_DRAW = 1;
+    //public static const int OLERENDER_FORMAT = 2;
+    //public static const int OLERENDER_NONE = 0;
+    //public static const int OLESAVED = 1;
+    //public static const int OLESIZEAUTOSIZE = 2;
+    //public static const int OLESIZECLIP = 0;
+    //public static const int OLESIZESTRETCH = 1;
+    //public static const int OLESIZEZOOM = 3;
+    //public static const int OLEWHICHMK_CONTAINER = 1;
+    //public static const int OLEWHICHMK_OBJFULL = 3;
+    //public static const int OLEWHICHMK_OBJREL = 2;
+    public static const int S_FALSE = 1;
+    public static const int S_OK = 0;
+    public static const int STG_E_FILENOTFOUND = 0x80030002;
+    public static const int STG_S_CONVERTED = 0x00030200;
+    //public static const int STGC_CONSOLIDATE = 8;
+    //public static const int STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4;
+    public static const int STGC_DEFAULT = 0;
+    //public static const int STGC_ONLYIFCURRENT = 2;
+    //public static const int STGC_OVERWRITE = 1;
+    public static const int STGM_CONVERT = 0x00020000;
+    public static const int STGM_CREATE = 0x00001000;
+    public static const int STGM_DELETEONRELEASE = 0x04000000;
+    public static const int STGM_DIRECT = 0x00000000;
+    public static const int STGM_DIRECT_SWMR = 0x00400000;
+    public static const int STGM_FAILIFTHERE = 0x00000000;
+    public static const int STGM_NOSCRATCH = 0x00100000;
+    public static const int STGM_NOSNAPSHOT = 0x00200000;
+    public static const int STGM_PRIORITY = 0x00040000;
+    public static const int STGM_READ = 0x00000000;
+    public static const int STGM_READWRITE = 0x00000002;
+    public static const int STGM_SHARE_DENY_NONE = 0x00000040;
+    public static const int STGM_SHARE_DENY_READ = 0x00000030;
+    public static const int STGM_SHARE_DENY_WRITE = 0x00000020;
+    public static const int STGM_SHARE_EXCLUSIVE = 0x00000010;
+    public static const int STGM_SIMPLE = 0x08000000;
+    public static const int STGM_TRANSACTED = 0x00010000;
+    public static const int STGM_WRITE = 0x00000001;
+    public static const int STGTY_STORAGE = 1;
+    public static const int STGTY_STREAM = 2;
+    public static const int STGTY_LOCKBYTES = 3;
+    public static const int STGTY_PROPERTY = 4;
+    //public static const int TYMED_ENHMF = 64;
+    //public static const int TYMED_FILE = 2;
+    //public static const int TYMED_GDI = 16;
+    public static const int TYMED_HGLOBAL = 1;
+    //public static const int TYMED_ISTORAGE = 8;
+    //public static const int TYMED_ISTREAM = 4;
+    //public static const int TYMED_MFPICT = 32;
+    //public static const int TYMED_NULL = 0;
+    public static const short DISPATCH_METHOD = 0x1;
+    public static const short DISPATCH_PROPERTYGET = 0x2;
+    public static const short DISPATCH_PROPERTYPUT = 0x4;
+    public static const short DISPATCH_PROPERTYPUTREF = 0x8;
+    //public static const short DISPID_CONSTRUCTOR = -6;
+    //public static const short DISPID_DESTRUCTOR = -7;
+    //public static const short DISPID_EVALUATE = -5;
+    //public static const short DISPID_NEWENUM = -4;
+    public static const short DISPID_PROPERTYPUT = -3;
+    //public static const short DISPID_UNKNOWN = -1;
+    //public static const short DISPID_VALUE = 0;
+    public static const short VT_BOOL = 11;
+    public static const short VT_BSTR = 8;
+    public static const short VT_BYREF = 16384;
+    public static const short VT_CY = 6;
+    public static const short VT_DATE = 7;
+    public static const short VT_DISPATCH = 9;
+    public static const short VT_EMPTY = 0;
+    public static const short VT_ERROR = 10;
+    public static const short VT_I1 = 16;
+    public static const short VT_I2 = 2;
+    public static const short VT_I4 = 3;
+    public static const short VT_I8 = 20;
+    public static const short VT_NULL = 1;
+    public static const short VT_R4 = 4;
+    public static const short VT_R8 = 5;
+    public static const short VT_UI1 = 17;
+    public static const short VT_UI2 = 18;
+    public static const short VT_UI4 = 19;
+    public static const short VT_UNKNOWN = 13;
+    public static const short VT_VARIANT = 12;
+    public static const short VARIANT_TRUE = -1;
+    public static const short VARIANT_FALSE = 0;
+
+
+// alias dwt.internal.ole.win32.comapi.
+// public static GUID* IIDFromString(String lpsz) {
+// 	GUID* lpiid = new GUID();
+// 	if (COM.IIDFromString(Converter.StrToWCHARz(lpsz), lpiid) == COM.S_OK)
+// 		return lpiid;
+// 	return null;
+// }
+
+alias COMAPI.CLSIDFromProgID CLSIDFromProgID;
+alias COMAPI.CLSIDFromString CLSIDFromString;
+alias COMAPI.CoCreateInstance CoCreateInstance;
+alias COMAPI.CoFreeUnusedLibraries CoFreeUnusedLibraries;
+alias COMAPI.CoGetClassObject CoGetClassObject;
+alias COMAPI.CoLockObjectExternal CoLockObjectExternal;
+alias COMAPI.CoTaskMemAlloc CoTaskMemAlloc;
+alias COMAPI.CoTaskMemFree CoTaskMemFree;
+alias COMAPI.CreateStdAccessibleObject CreateStdAccessibleObject;
+alias COMAPI.CreateStreamOnHGlobal CreateStreamOnHGlobal;
+alias COMAPI.DoDragDrop DoDragDrop;
+alias COMAPI.GetClassFile GetClassFile;
+alias COMAPI.IIDFromString IIDFromString;
+alias COMAPI.IsEqualGUID IsEqualGUID;
+alias COMAPI.LresultFromObject LresultFromObject;
+alias COMAPI.OleCreate OleCreate;
+alias COMAPI.OleCreateFromFile OleCreateFromFile;
+alias COMAPI.OleCreatePropertyFrame OleCreatePropertyFrame;
+alias COMAPI.OleDraw OleDraw;
+alias COMAPI.OleFlushClipboard OleFlushClipboard;
+alias COMAPI.OleGetClipboard OleGetClipboard;
+alias COMAPI.OleIsCurrentClipboard OleIsCurrentClipboard;
+alias COMAPI.OleIsRunning OleIsRunning;
+alias COMAPI.OleLoad OleLoad;
+alias COMAPI.OleRun OleRun;
+alias COMAPI.OleSave OleSave;
+alias COMAPI.OleSetClipboard OleSetClipboard;
+alias COMAPI.OleSetContainedObject OleSetContainedObject;
+alias COMAPI.OleSetMenuDescriptor OleSetMenuDescriptor;
+alias COMAPI.OleTranslateColor OleTranslateColor;
+alias COMAPI.ProgIDFromCLSID ProgIDFromCLSID;
+alias COMAPI.RegisterDragDrop RegisterDragDrop;
+alias COMAPI.ReleaseStgMedium ReleaseStgMedium;
+alias COMAPI.RevokeDragDrop RevokeDragDrop;
+alias COMAPI.SHDoDragDrop SHDoDragDrop;
+alias COMAPI.StgCreateDocfile StgCreateDocfile;
+alias COMAPI.StgIsStorageFile StgIsStorageFile;
+alias COMAPI.StgOpenStorage StgOpenStorage;
+alias COMAPI.StringFromCLSID StringFromCLSID;
+alias COMAPI.SysAllocString SysAllocString;
+alias COMAPI.SysFreeString SysFreeString;
+alias COMAPI.SysStringByteLen SysStringByteLen;
+alias COMAPI.VariantChangeType VariantChangeType;
+alias COMAPI.VariantClear VariantClear;
+alias COMAPI.VariantCopy VariantCopy;
+alias COMAPI.VariantInit VariantInit;
+alias COMAPI.WriteClassStg WriteClassStg;
+
+/**
+ * <Shawn Liu>
+ * VtbCall partially kept, use VtbCall instead of automation can promote performace
+ * and VtbCall doesn't need prototype of interface declaration
+ */
+
+public static int VtblCall(int fnNumber, void* ppVtbl) {
+	Function1 fn = cast(Function1)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0){
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1){
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2){
+	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3){
+	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2, arg3);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4){
+	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5){
+	Function7 fn = cast(Function7)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6){
+	Function8 fn = cast(Function8)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7){
+	Function9 fn = cast(Function9)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+}
+
+/*
+public static int VtblCall(int fnNumber, void* ppVtbl) {
+	Function1 fn = cast(Function1)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0){
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, void* arg0){
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)arg0);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, wchar* arg0) {
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)arg0);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, wchar* arg0, wchar* arg1){
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)arg0, cast(int)arg1);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, wchar* arg0, int arg1) {
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)arg0, arg1);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, wchar* arg0, int arg1, int arg2, int arg3, int[] arg4) {
+	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)arg0, arg1, arg2, arg3, cast(int)cast(int*)arg4);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, wchar* arg0, int arg1, int arg2, int arg3, int arg4, int[] arg5) {
+	Function7 fn = cast(Function7)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)arg0, arg1, arg2, arg3, arg4, cast(int)cast(int*)arg5);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int[] arg0) {
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)cast(int*)arg0);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int[] arg1) {
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)cast(int*)arg1);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1) {
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int[] arg2) {
+	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, cast(int)cast(int*)arg2);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2) {
+	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int[] arg3) {
+	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2, cast(int)cast(int*)arg3);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, DVTARGETDEVICE* arg2, SIZE* arg3) {
+	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, cast(int)(arg2), cast(int)(arg3));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, GUID* arg2, int arg3, int[] arg4) {
+	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, cast(int)(arg2), arg3, cast(int)cast(int*)arg4);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, FORMATETC* arg1, int[] arg2) {
+	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)(arg1), cast(int)cast(int*)arg2);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, GUID* arg1) {
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)(arg1));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, GUID* arg1, int arg2, int arg3) {
+	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)(arg1), arg2, arg3);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, GUID* arg1, int arg2, int arg3, DISPPARAMS* arg4, int arg5, EXCEPINFO* arg6, int[] arg7) {
+	Function9 fn = cast(Function9)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)(arg1), arg2, arg3, cast(int)(arg4), arg5, cast(int)(arg6), cast(int)cast(int*)arg7);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, STATSTG* arg1, int[] arg2) {
+	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)(arg1), cast(int)cast(int*)arg2);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, MSG* arg0) {
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, MSG* arg1, int arg2, int arg3, int arg4, RECT* arg5) {
+	Function7 fn = cast(Function7)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)(arg1), arg2, arg3, arg4, cast(int)(arg5));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, SIZE* arg1) {
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)(arg1));
+}
+
+// TODO: the type of BOOL ???
+// conflict with  VtblCall(int, int, int, int);
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, bool arg1) {
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)arg1);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, CAUUID* arg0) {
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, CONTROLINFO* arg0) {
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, FORMATETC* arg0) {
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, FORMATETC* arg0, STGMEDIUM* arg1) {
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0), cast(int)(arg1));
+}
+// TODO: BOOL type ???
+public static int VtblCall(int fnNumber, void* ppVtbl, FORMATETC* arg0, STGMEDIUM* arg1, int arg2) {
+	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0), cast(int)(arg1), arg2);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, GUID* arg0) {
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0));
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, GUID* arg0, int[] arg1) {
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0), cast(int)cast(int*)arg1);
+}
+
+public static int VtblCall(int fnNumber, void* ppVtbl, GUID* arg0, int arg1, int arg2, int arg3, int[] arg4) {
+	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0), arg1, arg2, arg3, cast(int)cast(int*)arg4);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, GUID* arg0, int arg1, int arg2, int arg3, int arg4) {
+	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0), arg1, arg2, arg3, arg4);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, GUID* arg0, int arg1, OLECMD* arg2, OLECMDTEXT* arg3) {
+	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0), arg1, cast(int)(arg2), cast(int)(arg3));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, LICINFO* arg0) {
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, RECT* arg0, int arg1, int arg2) {
+	Function4 fn = cast(Function4)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0), arg1, arg2);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, RECT* arg0, RECT* arg1) {
+	Function3 fn = cast(Function3)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0), cast(int)(arg1));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, RECT* arg0) {
+	Function2 fn = cast(Function2)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, cast(int)(arg0));
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int[] arg1, int[] arg2, int[] arg3, int[] arg4) {
+	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)cast(int*)arg1, cast(int)cast(int*)arg2, cast(int)cast(int*)arg3, cast(int)cast(int*)arg4);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int[] arg1, int arg2, int[] arg3) {
+	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, cast(int)cast(int*)arg1, arg2, cast(int)cast(int*)arg3);
+}
+
+
+// Start ACCESSIBILITY
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3) {
+	Function5 fn = cast(Function5)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2, arg3);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4) {
+	Function6 fn = cast(Function6)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) {
+	Function7 fn = cast(Function7)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+}
+public static int VtblCall(int fnNumber, void* ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7) {
+	Function9 fn = cast(Function9)(*cast(int **)ppVtbl)[fnNumber];
+	return fn(ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+}
+
+*/
+
+
+public static const int CHILDID_SELF = 0;
+public static const int CO_E_OBJNOTCONNECTED = 0x800401FD;
+
+//public static const int ROLE_SYSTEM_TITLEBAR = 0x1;
+public static const int ROLE_SYSTEM_MENUBAR = 0x2;
+public static const int ROLE_SYSTEM_SCROLLBAR = 0x3;
+//public static const int ROLE_SYSTEM_GRIP = 0x4;
+//public static const int ROLE_SYSTEM_SOUND = 0x5;
+//public static const int ROLE_SYSTEM_CURSOR = 0x6;
+//public static const int ROLE_SYSTEM_CARET = 0x7;
+//public static const int ROLE_SYSTEM_ALERT = 0x8;
+public static const int ROLE_SYSTEM_WINDOW = 0x9;
+public static const int ROLE_SYSTEM_CLIENT = 0xa;
+public static const int ROLE_SYSTEM_MENUPOPUP = 0xb;
+public static const int ROLE_SYSTEM_MENUITEM = 0xc;
+public static const int ROLE_SYSTEM_TOOLTIP = 0xd;
+//public static const int ROLE_SYSTEM_APPLICATION = 0xe;
+//public static const int ROLE_SYSTEM_DOCUMENT = 0xf;
+//public static const int ROLE_SYSTEM_PANE = 0x10;
+//public static const int ROLE_SYSTEM_CHART = 0x11;
+public static const int ROLE_SYSTEM_DIALOG = 0x12;
+//public static const int ROLE_SYSTEM_BORDER = 0x13;
+//public static const int ROLE_SYSTEM_GROUPING = 0x14;
+public static const int ROLE_SYSTEM_SEPARATOR = 0x15;
+public static const int ROLE_SYSTEM_TOOLBAR = 0x16;
+//public static const int ROLE_SYSTEM_STATUSBAR = 0x17;
+public static const int ROLE_SYSTEM_TABLE = 0x18;
+public static const int ROLE_SYSTEM_COLUMNHEADER = 0x19;
+public static const int ROLE_SYSTEM_ROWHEADER = 0x1a;
+//public static const int ROLE_SYSTEM_COLUMN = 0x1b;
+//public static const int ROLE_SYSTEM_ROW = 0x1c;
+public static const int ROLE_SYSTEM_CELL = 0x1d;
+public static const int ROLE_SYSTEM_LINK = 0x1e;
+//public static const int ROLE_SYSTEM_HELPBALLOON = 0x1f;
+//public static const int ROLE_SYSTEM_CHARACTER = 0x20;
+public static const int ROLE_SYSTEM_LIST = 0x21;
+public static const int ROLE_SYSTEM_LISTITEM = 0x22;
+public static const int ROLE_SYSTEM_OUTLINE = 0x23;
+public static const int ROLE_SYSTEM_OUTLINEITEM = 0x24;
+public static const int ROLE_SYSTEM_PAGETAB = 0x25;
+//public static const int ROLE_SYSTEM_PROPERTYPAGE = 0x26;
+//public static const int ROLE_SYSTEM_INDICATOR = 0x27;
+//public static const int ROLE_SYSTEM_GRAPHIC = 0x28;
+public static const int ROLE_SYSTEM_STATICTEXT = 0x29;
+public static const int ROLE_SYSTEM_TEXT = 0x2a;
+public static const int ROLE_SYSTEM_PUSHBUTTON = 0x2b;
+public static const int ROLE_SYSTEM_CHECKBUTTON = 0x2c;
+public static const int ROLE_SYSTEM_RADIOBUTTON = 0x2d;
+public static const int ROLE_SYSTEM_COMBOBOX = 0x2e;
+//public static const int ROLE_SYSTEM_DROPLIST = 0x2f;
+public static const int ROLE_SYSTEM_PROGRESSBAR = 0x30;
+//public static const int ROLE_SYSTEM_DIAL = 0x31;
+//public static const int ROLE_SYSTEM_HOTKEYFIELD = 0x32;
+public static const int ROLE_SYSTEM_SLIDER = 0x33;
+//public static const int ROLE_SYSTEM_SPINBUTTON = 0x34;
+//public static const int ROLE_SYSTEM_DIAGRAM = 0x35;
+//public static const int ROLE_SYSTEM_ANIMATION = 0x36;
+//public static const int ROLE_SYSTEM_EQUATION = 0x37;
+//public static const int ROLE_SYSTEM_BUTTONDROPDOWN = 0x38;
+//public static const int ROLE_SYSTEM_BUTTONMENU = 0x39;
+//public static const int ROLE_SYSTEM_BUTTONDROPDOWNGRID = 0x3a;
+//public static const int ROLE_SYSTEM_WHITESPACE = 0x3b;
+public static const int ROLE_SYSTEM_PAGETABLIST = 0x3c;
+//public static const int ROLE_SYSTEM_CLOCK = 0x3d;
+
+public static const int STATE_SYSTEM_NORMAL = 0;
+//public static const int STATE_SYSTEM_UNAVAILABLE = 0x1;
+public static const int STATE_SYSTEM_SELECTED = 0x2;
+public static const int STATE_SYSTEM_FOCUSED = 0x4;
+public static const int STATE_SYSTEM_PRESSED = 0x8;
+public static const int STATE_SYSTEM_CHECKED = 0x10;
+public static const int STATE_SYSTEM_MIXED = 0x20;
+//public static const int STATE_SYSTEM_INDETERMINATE = STATE_SYSTEM_MIXED;
+public static const int STATE_SYSTEM_READONLY = 0x40;
+public static const int STATE_SYSTEM_HOTTRACKED = 0x80;
+//public static const int STATE_SYSTEM_DEFAULT = 0x100;
+public static const int STATE_SYSTEM_EXPANDED = 0x200;
+public static const int STATE_SYSTEM_COLLAPSED = 0x400;
+public static const int STATE_SYSTEM_BUSY = 0x800;
+//public static const int STATE_SYSTEM_FLOATING = 0x1000;
+//public static const int STATE_SYSTEM_MARQUEED = 0x2000;
+//public static const int STATE_SYSTEM_ANIMATED = 0x4000;
+public static const int STATE_SYSTEM_INVISIBLE = 0x8000;
+public static const int STATE_SYSTEM_OFFSCREEN = 0x10000;
+public static const int STATE_SYSTEM_SIZEABLE = 0x20000;
+//public static const int STATE_SYSTEM_MOVEABLE = 0x40000;
+//public static const int STATE_SYSTEM_SELFVOICING = 0x80000;
+public static const int STATE_SYSTEM_FOCUSABLE = 0x100000;
+public static const int STATE_SYSTEM_SELECTABLE = 0x200000;
+public static const int STATE_SYSTEM_LINKED = 0x400000;
+//public static const int STATE_SYSTEM_TRAVERSED = 0x800000;
+public static const int STATE_SYSTEM_MULTISELECTABLE = 0x1000000;
+//public static const int STATE_SYSTEM_EXTSELECTABLE = 0x2000000;
+//public static const int STATE_SYSTEM_ALERT_LOW = 0x4000000;
+//public static const int STATE_SYSTEM_ALERT_MEDIUM = 0x8000000;
+//public static const int STATE_SYSTEM_ALERT_HIGH = 0x10000000;
+//public static const int STATE_SYSTEM_PROTECTED = 0x20000000;
+//public static const int STATE_SYSTEM_VALID = 0x3fffffff;
+
+/* End ACCESSIBILITY */
+
+}
+
+/**
+ * <Shawn> difference between WCHARzToStr(pwstr, -1) :
+ * BSTRToStr() internally call WCHARzToStr(pwstr, length) with length set,
+ * instead to determine the null ended, this mean BSTRToStr() can get string
+ * which has embedded null characters.
+ */
+// BSTR is aliased to wchar*
+// Note : Free the "bstr" memory if freeTheString is true, default false
+String BSTRToStr( /*BSTR*/ inout wchar* bstr, bool freeTheString = false){
+    if(bstr is null) return null;
+    int size = (SysStringByteLen(bstr) + 1)/wchar.sizeof;
+    String result = WCHARzToStr(bstr, size);
+    if(freeTheString) {
+        // free the string and set ptr to null
+        SysFreeString(bstr);
+        bstr = null;
+    }
+    return result;
+}
+
+
+
+
+
--- a/dwt/internal/ole/win32/COMAPI.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/ole/win32/COMAPI.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,284 +1,284 @@
-/*
- * All COM APIs required by DWT, all APIs prototype copied from MSDN 2003
- * don't import this module directly, import std.internal.ole.win32.com instead
- *
- * author : Shawn Liu
- */
-
-
-module dwt.internal.ole.win32.COMAPI;
-
-
-//private import std.c.windows.windows;
-//private import std.c.windows.com;
-private import dwt.internal.win32.WINTYPES;
-private import dwt.internal.ole.win32.COMTYPES;
-private import dwt.internal.ole.win32.OBJIDL;
-private import dwt.internal.ole.win32.OLEIDL;
-private import dwt.internal.ole.win32.OAIDL;
-private import dwt.internal.ole.win32.extras;
-
-extern(Windows){
-
-WINOLEAPI CreateStreamOnHGlobal(
-	HGLOBAL hGlobal,         //Memory handle for the stream object
-	BOOL fDeleteOnRelease,   //Whether to free memory when the object
-					   // is released
-	LPSTREAM * ppstm         //Address of output variable that
-					   // receives the IStream interface pointer
-);
-HRESULT CLSIDFromProgID(
-  LPCOLESTR lpszProgID,
-  LPCLSID pclsid
-);
-HRESULT CLSIDFromString(
-  LPOLESTR lpsz,
-  LPCLSID pclsid
-);
-STDAPI CoCreateInstance(
-  REFCLSID rclsid,
-  LPUNKNOWN pUnkOuter,
-  DWORD dwClsContext,
-  REFIID riid,
-  LPVOID * ppv
-);
-void CoFreeUnusedLibraries();
-STDAPI CoGetClassObject(
-  REFCLSID rclsid,
-  DWORD dwClsContext,
-  COSERVERINFO * pServerInfo,
-  REFIID riid,
-  LPVOID * ppv
-);
-STDAPI CoLockObjectExternal(
-  LPUNKNOWN pUnk,
-  BOOL fLock,
-  BOOL fLastUnlockReleases
-);
-LPVOID CoTaskMemAlloc(
-  ULONG cb
-);
-void CoTaskMemFree(
-  void * pv
-);
-
-WINOLEAPI DoDragDrop(
-  LPDATAOBJECT pDataObject,  //Pointer to the data object
-  LPDROPSOURCE pDropSource,  //Pointer to the source
-  DWORD dwOKEffect,           //Effects allowed by the source
-  DWORD * pdwEffect           //Pointer to effects on the source
-);
-
-WINOLEAPI GetClassFile(
-  LPCWSTR szFileName,
-  CLSID * pclsid
-);
-WINOLEAPI IIDFromString(
-  LPOLESTR lpsz,
-  LPIID lpiid
-);
-BOOL IsEqualGUID(
-  REFGUID rguid1,
-  REFGUID rguid2
-);
-WINOLEAPI OleCreate(
-  REFCLSID rclsid,  //CLSID of embedded object to be created
-  REFIID riid,      //Reference to the identifier of the interface
-                    // used to communicate with new object
-  DWORD renderopt,  //RENDEROPT value indicating cached capabilities
-  FORMATETC * pFormatEtc,
-                    //Pointer to a FORMATETC structure
-  IOleClientSite * pClientSite,
-                    //Pointer to request services from the container
-  LPSTORAGE pStg,  //Pointer to storage for the object
-  void ** ppvObject //Address of output variable that receives the
-                    // interface pointer requested in riid
-);
-WINOLEAPI OleCreateFromFile(
-  REFCLSID rclsid,         //Reserved. Must be CLSID_NULL
-  LPCOLESTR lpszFileName,  //Pointer to full path of file used to
-                           // create object
-  REFIID riid,             //Reference to the identifier of the
-                           // interface to be used to communicate with
-                           // new object
-  DWORD renderopt,         //Value from OLERENDER
-  LPFORMATETC pFormatEtc,  //Pointer to the FORMATETC structure
-  LPOLECLIENTSITE pClientSite,
-                           //Pointer to an interface
-  LPSTORAGE pStg,          //Pointer tothe interface to be used as
-                           // object storage
-  LPVOID * ppvObj       //Address of output variable that
-                           // receives the interface pointer requested
-                           // in riid
-);
-
-STDAPI OleCreatePropertyFrame(
-  HWND hwndOwner,    //Parent window of property sheet dialog box
-  UINT x,            //Horizontal position for dialog box
-  UINT y,            //Vertical position for dialog box
-  LPCOLESTR lpszCaption,
-                     //Pointer to the dialog box caption
-  ULONG cObjects,    //Number of object pointers in lplpUnk
-  LPUNKNOWN * lplpUnk,
-                     //Pointer to the objects for property sheet
-  ULONG cPages,      //Number of property pages in lpPageClsID
-  LPCLSID lpPageClsID,
-                     //Array of CLSIDs for each property page
-  LCID lcid,         //Locale identifier for property sheet locale
-  DWORD dwReserved,  //Reserved
-  LPVOID lpvReserved //Reserved
-);
-WINOLEAPI OleDraw(
-  LPUNKNOWN pUnk,    //Pointer to the view object to be drawn
-  DWORD dwAspect,     //How the object is to be represented
-  HDC hdcDraw,        //Device context on which to draw
-  LPCRECT lprcBounds  //Pointer to the rectangle in which the object
-                      // is drawn
-);
-WINOLEAPI OleFlushClipboard();
-WINOLEAPI OleGetClipboard(
-  LPDATAOBJECT * ppDataObj  //Address of output variable that
-                            // receives the IDataObject interface
-                            // pointer
-);
-WINOLEAPI OleIsCurrentClipboard(
-  LPDATAOBJECT pDataObject  //Pointer to the data object previously
-                             // copied or cut
-);
-BOOL OleIsRunning(
-  LPOLEOBJECT pObject  //Pointer to the interface
-);
-WINOLEAPI OleLoad(
-  LPSTORAGE pStg,   //Pointer to the storage object from which to
-                     // load
-  REFIID riid,       //Reference to the identifier of the interface
-  IOleClientSite * pClientSite,
-                     //Pointer to the client site for the object
-  LPVOID * ppvObj    //Address of output variable that receives the
-                     // interface pointer requested in riid
-);
-WINOLEAPI OleRun(
-  LPUNKNOWN pUnknown  //Pointer to interface on the object
-);
-WINOLEAPI OleSave(
-  LPPERSISTSTORAGE pPS,   //Pointer to the object to be saved
-  LPSTORAGE pStg,         //Pointer to the destination storage to
-                           // which pPS is saved
-  BOOL fSameAsLoad         //Whether the object was loaded from pstg
-                           // or not
-);
-WINOLEAPI OleSetClipboard(
-  LPDATAOBJECT pDataObj  //Pointer to the data object being copied
-                          // or cut
-);
-WINOLEAPI OleSetContainedObject(
-  LPUNKNOWN pUnk,  //Pointer to the interface on the embedded object
-  BOOL fContained  //Indicates if the object is embedded
-);
-WINOLEAPI OleSetMenuDescriptor(
-  HOLEMENU holemenu,      //Handle to the composite menu descriptor
-  HWND hwndFrame,         //Handle to the container's frame window
-  HWND hwndActiveObject,  //Handle to the object's in-place
-                          // activation window
-  LPOLEINPLACEFRAME lpFrame,  //Pointer to the container's frame
-                              // window
-  LPOLEINPLACEACTIVEOBJECT lpActiveObj
-                          //Active in-place object
-);
-STDAPI OleTranslateColor (
-  OLE_COLOR clr,       //Color to be converted into a COLORREF
-  HPALETTE hpal,       //Palette used for conversion
-  COLORREF *pcolorref  //Pointer to the caller's variable that
-                       // receives the converted result
-);
-WINOLEAPI ProgIDFromCLSID(
-  REFCLSID clsid,
-  LPOLESTR * lplpszProgID
-);
-
-WINOLEAPI RegisterDragDrop(
-  HWND hwnd,  //Handle to a window that can accept drops
-  LPDROPTARGET pDropTarget
-              //Pointer to object that is to be target of drop
-);
-void ReleaseStgMedium(
-  STGMEDIUM * pmedium  //Pointer to storage medium to be freed
-);
-WINOLEAPI RevokeDragDrop(
-  HWND hwnd  //Handle to a window that can accept drops
-);
-HRESULT SHDoDragDrop(
-    HWND hwnd,
-    IDataObject *pdtobj,
-    IDropSource *pdsrc,
-    DWORD dwEffect,
-    DWORD *pdwEffect
-);
-HRESULT StgCreateDocfile(
-  WCHAR* pwcsName,
-  DWORD grfMode,
-  DWORD reserved,
-  LPSTORAGE* ppstgOpen
-);
-
-WINOLEAPI StgIsStorageFile(
-  WCHAR* pwcsName
-);
-
-HRESULT StgOpenStorage(
-  WCHAR* pwcsName,
-  LPSTORAGE pstgPriority,
-  DWORD grfMode,
-  SNB snbExclude,
-  DWORD reserved,
-  LPSTORAGE * ppstgOpen
-);
-
-WINOLEAPI StringFromCLSID(
-  REFCLSID rclsid,
-  LPOLESTR * ppsz
-);
-BSTR SysAllocString(
-  OLECHAR *  sz
-);
-VOID SysFreeString(
-  BSTR  bstr
-);
-UINT SysStringByteLen(
-  BSTR  bstr
-);
-HRESULT VariantChangeType(
-  VARIANTARG *  pvargDest,
-  VARIANTARG *  pvarSrc,
-  ushort  wFlags,
-  VARTYPE  vt
-);
-
-HRESULT VariantClear(
-  VARIANTARG *  pvarg
-);
-HRESULT VariantCopy(
-  VARIANTARG *  pvargDest,
-  VARIANTARG *  pvargSrc
-);
-VOID VariantInit(
-  VARIANTARG *  pvarg
-);
-WINOLEAPI WriteClassStg(
-  LPSTORAGE pStg,
-  REFCLSID rclsid
-);
-
-STDAPI CreateStdAccessibleObject(
-  HWND hwnd,
-  LONG idObject,
-  REFIID riidInterface,
-  void** ppvObject
-);
-LRESULT LresultFromObject(
-  REFIID riid,
-  WPARAM wParam,
-  LPUNKNOWN pAcc
-);
-
-} // end of comapi
+/*
+ * All COM APIs required by DWT, all APIs prototype copied from MSDN 2003
+ * don't import this module directly, import std.internal.ole.win32.com instead
+ *
+ * author : Shawn Liu
+ */
+
+
+module dwt.internal.ole.win32.COMAPI;
+
+
+//private import std.c.windows.windows;
+//private import std.c.windows.com;
+private import dwt.internal.win32.WINTYPES;
+private import dwt.internal.ole.win32.COMTYPES;
+private import dwt.internal.ole.win32.OBJIDL;
+private import dwt.internal.ole.win32.OLEIDL;
+private import dwt.internal.ole.win32.OAIDL;
+private import dwt.internal.ole.win32.extras;
+
+extern(Windows){
+
+WINOLEAPI CreateStreamOnHGlobal(
+	HGLOBAL hGlobal,         //Memory handle for the stream object
+	BOOL fDeleteOnRelease,   //Whether to free memory when the object
+					   // is released
+	LPSTREAM * ppstm         //Address of output variable that
+					   // receives the IStream interface pointer
+);
+HRESULT CLSIDFromProgID(
+  LPCOLESTR lpszProgID,
+  LPCLSID pclsid
+);
+HRESULT CLSIDFromString(
+  LPOLESTR lpsz,
+  LPCLSID pclsid
+);
+STDAPI CoCreateInstance(
+  REFCLSID rclsid,
+  LPUNKNOWN pUnkOuter,
+  DWORD dwClsContext,
+  REFIID riid,
+  LPVOID * ppv
+);
+void CoFreeUnusedLibraries();
+STDAPI CoGetClassObject(
+  REFCLSID rclsid,
+  DWORD dwClsContext,
+  COSERVERINFO * pServerInfo,
+  REFIID riid,
+  LPVOID * ppv
+);
+STDAPI CoLockObjectExternal(
+  LPUNKNOWN pUnk,
+  BOOL fLock,
+  BOOL fLastUnlockReleases
+);
+LPVOID CoTaskMemAlloc(
+  ULONG cb
+);
+void CoTaskMemFree(
+  void * pv
+);
+
+WINOLEAPI DoDragDrop(
+  LPDATAOBJECT pDataObject,  //Pointer to the data object
+  LPDROPSOURCE pDropSource,  //Pointer to the source
+  DWORD dwOKEffect,           //Effects allowed by the source
+  DWORD * pdwEffect           //Pointer to effects on the source
+);
+
+WINOLEAPI GetClassFile(
+  LPCWSTR szFileName,
+  CLSID * pclsid
+);
+WINOLEAPI IIDFromString(
+  LPOLESTR lpsz,
+  LPIID lpiid
+);
+BOOL IsEqualGUID(
+  REFGUID rguid1,
+  REFGUID rguid2
+);
+WINOLEAPI OleCreate(
+  REFCLSID rclsid,  //CLSID of embedded object to be created
+  REFIID riid,      //Reference to the identifier of the interface
+                    // used to communicate with new object
+  DWORD renderopt,  //RENDEROPT value indicating cached capabilities
+  FORMATETC * pFormatEtc,
+                    //Pointer to a FORMATETC structure
+  IOleClientSite * pClientSite,
+                    //Pointer to request services from the container
+  LPSTORAGE pStg,  //Pointer to storage for the object
+  void ** ppvObject //Address of output variable that receives the
+                    // interface pointer requested in riid
+);
+WINOLEAPI OleCreateFromFile(
+  REFCLSID rclsid,         //Reserved. Must be CLSID_NULL
+  LPCOLESTR lpszFileName,  //Pointer to full path of file used to
+                           // create object
+  REFIID riid,             //Reference to the identifier of the
+                           // interface to be used to communicate with
+                           // new object
+  DWORD renderopt,         //Value from OLERENDER
+  LPFORMATETC pFormatEtc,  //Pointer to the FORMATETC structure
+  LPOLECLIENTSITE pClientSite,
+                           //Pointer to an interface
+  LPSTORAGE pStg,          //Pointer tothe interface to be used as
+                           // object storage
+  LPVOID * ppvObj       //Address of output variable that
+                           // receives the interface pointer requested
+                           // in riid
+);
+
+STDAPI OleCreatePropertyFrame(
+  HWND hwndOwner,    //Parent window of property sheet dialog box
+  UINT x,            //Horizontal position for dialog box
+  UINT y,            //Vertical position for dialog box
+  LPCOLESTR lpszCaption,
+                     //Pointer to the dialog box caption
+  ULONG cObjects,    //Number of object pointers in lplpUnk
+  LPUNKNOWN * lplpUnk,
+                     //Pointer to the objects for property sheet
+  ULONG cPages,      //Number of property pages in lpPageClsID
+  LPCLSID lpPageClsID,
+                     //Array of CLSIDs for each property page
+  LCID lcid,         //Locale identifier for property sheet locale
+  DWORD dwReserved,  //Reserved
+  LPVOID lpvReserved //Reserved
+);
+WINOLEAPI OleDraw(
+  LPUNKNOWN pUnk,    //Pointer to the view object to be drawn
+  DWORD dwAspect,     //How the object is to be represented
+  HDC hdcDraw,        //Device context on which to draw
+  LPCRECT lprcBounds  //Pointer to the rectangle in which the object
+                      // is drawn
+);
+WINOLEAPI OleFlushClipboard();
+WINOLEAPI OleGetClipboard(
+  LPDATAOBJECT * ppDataObj  //Address of output variable that
+                            // receives the IDataObject interface
+                            // pointer
+);
+WINOLEAPI OleIsCurrentClipboard(
+  LPDATAOBJECT pDataObject  //Pointer to the data object previously
+                             // copied or cut
+);
+BOOL OleIsRunning(
+  LPOLEOBJECT pObject  //Pointer to the interface
+);
+WINOLEAPI OleLoad(
+  LPSTORAGE pStg,   //Pointer to the storage object from which to
+                     // load
+  REFIID riid,       //Reference to the identifier of the interface
+  IOleClientSite * pClientSite,
+                     //Pointer to the client site for the object
+  LPVOID * ppvObj    //Address of output variable that receives the
+                     // interface pointer requested in riid
+);
+WINOLEAPI OleRun(
+  LPUNKNOWN pUnknown  //Pointer to interface on the object
+);
+WINOLEAPI OleSave(
+  LPPERSISTSTORAGE pPS,   //Pointer to the object to be saved
+  LPSTORAGE pStg,         //Pointer to the destination storage to
+                           // which pPS is saved
+  BOOL fSameAsLoad         //Whether the object was loaded from pstg
+                           // or not
+);
+WINOLEAPI OleSetClipboard(
+  LPDATAOBJECT pDataObj  //Pointer to the data object being copied
+                          // or cut
+);
+WINOLEAPI OleSetContainedObject(
+  LPUNKNOWN pUnk,  //Pointer to the interface on the embedded object
+  BOOL fContained  //Indicates if the object is embedded
+);
+WINOLEAPI OleSetMenuDescriptor(
+  HOLEMENU holemenu,      //Handle to the composite menu descriptor
+  HWND hwndFrame,         //Handle to the container's frame window
+  HWND hwndActiveObject,  //Handle to the object's in-place
+                          // activation window
+  LPOLEINPLACEFRAME lpFrame,  //Pointer to the container's frame
+                              // window
+  LPOLEINPLACEACTIVEOBJECT lpActiveObj
+                          //Active in-place object
+);
+STDAPI OleTranslateColor (
+  OLE_COLOR clr,       //Color to be converted into a COLORREF
+  HPALETTE hpal,       //Palette used for conversion
+  COLORREF *pcolorref  //Pointer to the caller's variable that
+                       // receives the converted result
+);
+WINOLEAPI ProgIDFromCLSID(
+  REFCLSID clsid,
+  LPOLESTR * lplpszProgID
+);
+
+WINOLEAPI RegisterDragDrop(
+  HWND hwnd,  //Handle to a window that can accept drops
+  LPDROPTARGET pDropTarget
+              //Pointer to object that is to be target of drop
+);
+void ReleaseStgMedium(
+  STGMEDIUM * pmedium  //Pointer to storage medium to be freed
+);
+WINOLEAPI RevokeDragDrop(
+  HWND hwnd  //Handle to a window that can accept drops
+);
+HRESULT SHDoDragDrop(
+    HWND hwnd,
+    IDataObject *pdtobj,
+    IDropSource *pdsrc,
+    DWORD dwEffect,
+    DWORD *pdwEffect
+);
+HRESULT StgCreateDocfile(
+  WCHAR* pwcsName,
+  DWORD grfMode,
+  DWORD reserved,
+  LPSTORAGE* ppstgOpen
+);
+
+WINOLEAPI StgIsStorageFile(
+  WCHAR* pwcsName
+);
+
+HRESULT StgOpenStorage(
+  WCHAR* pwcsName,
+  LPSTORAGE pstgPriority,
+  DWORD grfMode,
+  SNB snbExclude,
+  DWORD reserved,
+  LPSTORAGE * ppstgOpen
+);
+
+WINOLEAPI StringFromCLSID(
+  REFCLSID rclsid,
+  LPOLESTR * ppsz
+);
+BSTR SysAllocString(
+  OLECHAR *  sz
+);
+VOID SysFreeString(
+  BSTR  bstr
+);
+UINT SysStringByteLen(
+  BSTR  bstr
+);
+HRESULT VariantChangeType(
+  VARIANTARG *  pvargDest,
+  VARIANTARG *  pvarSrc,
+  ushort  wFlags,
+  VARTYPE  vt
+);
+
+HRESULT VariantClear(
+  VARIANTARG *  pvarg
+);
+HRESULT VariantCopy(
+  VARIANTARG *  pvargDest,
+  VARIANTARG *  pvargSrc
+);
+VOID VariantInit(
+  VARIANTARG *  pvarg
+);
+WINOLEAPI WriteClassStg(
+  LPSTORAGE pStg,
+  REFCLSID rclsid
+);
+
+STDAPI CreateStdAccessibleObject(
+  HWND hwnd,
+  LONG idObject,
+  REFIID riidInterface,
+  void** ppvObject
+);
+LRESULT LresultFromObject(
+  REFIID riid,
+  WPARAM wParam,
+  LPUNKNOWN pAcc
+);
+
+} // end of comapi
--- a/dwt/internal/ole/win32/COMTYPES.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/ole/win32/COMTYPES.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,60 +1,60 @@
-/*
- * extra COM types not define in any other modules
- * don't import this module directly, import std.internal.ole.win32.com instead
- *
- * author : Shawn Liu
- */
-
-module dwt.internal.ole.win32.COMTYPES;
-
-private import dwt.internal.win32.WINTYPES;
-private import dwt.internal.ole.win32.extras;
-//private import std.c.windows.windows;
-//private import std.c.windows.com;
-
-// private import dwt.internal.ole.win32.extras;
-
-
-
-alias IID* LPIID;
-alias HRESULT STDAPI;
-alias DWORD OLE_COLOR;
-
-// for temp use
-// alias void* ComObj;
-
-struct CAUUID {
-    ULONG cElems;
-    GUID* pElems;
-}
-struct CONNECTDATA
-{
-	LPUNKNOWN pUnk;
-	DWORD dwCookie;
-}
-
-struct CONTROLINFO {
-    ULONG  cb;
-    HACCEL hAccel;
-    USHORT cAccel;
-    DWORD  dwFlags;
-}
-
-struct LICINFO {
-    ULONG cbLicInfo;
-    BOOL  fRuntimeKeyAvail;
-    BOOL  fLicVerified;
-}
-
-struct POINTF
-{
-    FLOAT x;
-    FLOAT y;
-}
-
-
-
-
-
-
-
+/*
+ * extra COM types not define in any other modules
+ * don't import this module directly, import std.internal.ole.win32.com instead
+ *
+ * author : Shawn Liu
+ */
+
+module dwt.internal.ole.win32.COMTYPES;
+
+private import dwt.internal.win32.WINTYPES;
+private import dwt.internal.ole.win32.extras;
+//private import std.c.windows.windows;
+//private import std.c.windows.com;
+
+// private import dwt.internal.ole.win32.extras;
+
+
+
+alias IID* LPIID;
+alias HRESULT STDAPI;
+alias DWORD OLE_COLOR;
+
+// for temp use
+// alias void* ComObj;
+
+struct CAUUID {
+    ULONG cElems;
+    GUID* pElems;
+}
+struct CONNECTDATA
+{
+	LPUNKNOWN pUnk;
+	DWORD dwCookie;
+}
+
+struct CONTROLINFO {
+    ULONG  cb;
+    HACCEL hAccel;
+    USHORT cAccel;
+    DWORD  dwFlags;
+}
+
+struct LICINFO {
+    ULONG cbLicInfo;
+    BOOL  fRuntimeKeyAvail;
+    BOOL  fLicVerified;
+}
+
+struct POINTF
+{
+    FLOAT x;
+    FLOAT y;
+}
+
+
+
+
+
+
+
--- a/dwt/internal/ole/win32/DOCOBJ.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/ole/win32/DOCOBJ.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,407 +1,407 @@
-module dwt.internal.ole.win32.DOCOBJ;
-
-//private import std.c.windows.windows;
-//private import std.c.windows.com;
-private import dwt.internal.win32.OS;
-private import dwt.internal.win32.WINTYPES;
-private import dwt.internal.ole.win32.extras;
-private import dwt.internal.ole.win32.OLEIDL;
-//private import dwt.internal.ole.win32.OAIDL;
-private import dwt.internal.ole.win32.OBJIDL;
-
-extern( Windows ) {
-
-alias wchar wchar_t;
-
-//+---------------------------------------------------------------------------
-//
-//  Copyright 1995 - 1998 Microsoft Corporation. All Rights Reserved.
-//
-//  Contents:   OLE Document Object interfaces
-//
-//----------------------------------------------------------------------------
-
-
-/*
-#define HWND        UserHWND
-#define HACCEL      UserHACCEL
-#define HDC         UserHDC
-#define HFONT       UserHFONT
-#define MSG         UserMSG
-#define BSTR        UserBSTR
-#define EXCEPINFO   UserEXCEPINFO
-#define VARIANT     UserVARIANT
-*/
-/*
-interface IOleDocument;
-interface IOleDocumentSite;
-interface IOleDocumentView;
-interface IEnumOleDocumentViews;
-interface IContinueCallback;
-interface IPrint;
-interface IOleCommandTarget;
-  */
-
-
-
-//+---------------------------------------------------------------------------
-//
-//  Copyright (C) Microsoft Corporation, 1995-1997.
-//
-//  Contents:    IOleDocument interface definition
-//
-//----------------------------------------------------------------------------
-enum DOCMISC {
-                DOCMISC_CANCREATEMULTIPLEVIEWS          = 1,
-                DOCMISC_SUPPORTCOMPLEXRECTANGLES        = 2,
-                DOCMISC_CANTOPENEDIT                        = 4,        // fails the IOleDocumentView::Open  method
-                DOCMISC_NOFILESUPPORT                       = 8,        //  does not support read/writing to a file
-}
-
-interface IOleDocument : IUnknown
-{
-        HRESULT CreateView(IOleInPlaceSite pIPSite,IStream pstm,DWORD dwReserved,IOleDocumentView *ppView);
-
-        HRESULT GetDocMiscStatus(DWORD *pdwStatus);
-
-        HRESULT EnumViews( IEnumOleDocumentViews * ppEnum, IOleDocumentView * ppView);
-}
-alias IOleDocument LPOLEDOCUMENT;
-
-
-//+---------------------------------------------------------------------------
-//
-//  Copyright (C) Microsoft Corporation, 1995-1997.
-//
-//  Contents:    IOleDocumentSite interface definition
-//
-//----------------------------------------------------------------------------
-interface IOleDocumentSite : IUnknown
-{
-        HRESULT ActivateMe(IOleDocumentView pViewToActivate);
-}
-alias IOleDocumentSite LPOLEDOCUMENTSITE;
-
-
-//+---------------------------------------------------------------------------
-//
-//  Copyright (C) Microsoft Corporation, 1995-1997.
-//
-//  Contents:    IOleDocumentView interface definition
-//
-//----------------------------------------------------------------------------
-interface IOleDocumentView : IUnknown
-{
-        HRESULT SetInPlaceSite(IOleInPlaceSite pIPSite);
-
-        HRESULT GetInPlaceSite(IOleInPlaceSite * ppIPSite);
-
-        HRESULT GetDocument(IUnknown *ppunk);
-
-        HRESULT SetRect(LPRECT prcView);
-
-        HRESULT GetRect(LPRECT prcView);
-
-        HRESULT SetRectComplex(LPRECT prcView,LPRECT prcHScroll,LPRECT prcVScroll,LPRECT prcSizeBox);
-
-        HRESULT Show(BOOL fShow);
-
-        HRESULT UIActivate(BOOL fUIActivate);
-
-        HRESULT Open();
-
-        HRESULT CloseView(DWORD dwReserved);
-
-        HRESULT SaveViewState(LPSTREAM pstm);
-
-        HRESULT ApplyViewState(LPSTREAM pstm);
-
-        HRESULT Clone(IOleInPlaceSite pIPSiteNew,IOleDocumentView *ppViewNew);
-}
-alias IOleDocumentView LPOLEDOCUMENTVIEW;
-
-
-//+---------------------------------------------------------------------------
-//
-//  Copyright (C) Microsoft Corporation, 1995-1997.
-//
-//  Contents:    IEnumOleDocumentViews interface definition
-//
-//----------------------------------------------------------------------------
-interface IEnumOleDocumentViews : IUnknown
-{
-        HRESULT Next(
-	ULONG cViews,
-	IOleDocumentView * rgpView,
-		ULONG *pcFetched);
-
-        HRESULT Skip(ULONG cViews);
-
-        HRESULT Reset();
-
-        HRESULT Clone(IEnumOleDocumentViews *ppEnum);
-}
-alias IEnumOleDocumentViews LPENUMOLEDOCUMENTVIEWS;
-
-
-
-//+---------------------------------------------------------------------------
-//
-//  Copyright (C) Microsoft Corporation, 1995-1997.
-//
-//  Contents:    IContinueCallback interface definition
-//
-//----------------------------------------------------------------------------
-
-interface IContinueCallback : IUnknown
-{
-        HRESULT FContinue();
-
-        HRESULT FContinuePrinting(LONG nCntPrinted,LONG nCurPage, wchar_t * pwszPrintStatus);
-}
-alias IContinueCallback  LPCONTINUECALLBACK;
-
-
-//+---------------------------------------------------------------------------
-//
-//  Copyright (C) Microsoft Corporation, 1995-1997.
-//
-//  Contents:    IPrint interface definition
-//
-//----------------------------------------------------------------------------
-enum PRINTFLAG
-        {
-                PRINTFLAG_MAYBOTHERUSER         = 1,
-                PRINTFLAG_PROMPTUSER            = 2,
-                PRINTFLAG_USERMAYCHANGEPRINTER  = 4,
-                PRINTFLAG_RECOMPOSETODEVICE     = 8,
-                PRINTFLAG_DONTACTUALLYPRINT     = 16,
-                PRINTFLAG_FORCEPROPERTIES       = 32,
-                PRINTFLAG_PRINTTOFILE           = 64
-        } ;
-
-struct  PAGERANGE
-        {
-                LONG nFromPage;
-                LONG nToPage;
-        }
-
-struct  PAGESET
-        {
-                ULONG   cbStruct;
-                BOOL    fOddPages;
-                BOOL    fEvenPages;
-                ULONG   cPageRange;
-                PAGERANGE[1] rgPages;
-        }
-
-interface IPrint : IUnknown
-{
-
-        HRESULT SetInitialPageNum(LONG nFirstPage);
-
-        HRESULT GetPageInfo(LONG *pnFirstPage,LONG *pcPages);
-
-        HRESULT Print(
-	DWORD grfFlags,
-DVTARGETDEVICE **pptd,
-PAGESET ** ppPageSet,
-STGMEDIUM * pstgmOptions,
-IContinueCallback pcallback,
-LONG nFirstPage,
-LONG *pcPagesPrinted,
-LONG *pnLastPage);
-}
-alias IPrint LPPRINT;
-
-
-//+---------------------------------------------------------------------------
-//
-//  Copyright (C) Microsoft Corporation, 1995-1997.
-//
-//  Contents:    IOleCommandTarget interface definition
-//
-//----------------------------------------------------------------------------
-enum OLECMDF
-        {
-                OLECMDF_SUPPORTED       = 0x00000001,
-                OLECMDF_ENABLED         = 0x00000002,
-                OLECMDF_LATCHED         = 0x00000004,
-                OLECMDF_NINCHED         = 0x00000008,
-        }
-
-
-
-
-struct OLECMD {
-                ULONG   cmdID;
-                DWORD   cmdf;
-        }
-
-struct OLECMDTEXT{
-                DWORD cmdtextf;
-                ULONG cwActual;
-                ULONG cwBuf;    /* size in wide chars of the buffer for text */
-                wchar_t[1] rgwz; /* Array into which callee writes the text */
-}
-
-enum OLECMDTEXTF
-        {
-                OLECMDTEXTF_NONE        = 0,
-                OLECMDTEXTF_NAME        = 1,
-                OLECMDTEXTF_STATUS      = 2,
-        }
-
-enum OLECMDEXECOPT
-        {
-                OLECMDEXECOPT_DODEFAULT         = 0,
-                OLECMDEXECOPT_PROMPTUSER        = 1,
-                OLECMDEXECOPT_DONTPROMPTUSER    = 2,
-                OLECMDEXECOPT_SHOWHELP          = 3
-        }
-enum OLECMDID {
-                OLECMDID_OPEN                           = 1,
-                OLECMDID_NEW                            = 2,
-                OLECMDID_SAVE                           = 3,
-                OLECMDID_SAVEAS                         = 4,
-                OLECMDID_SAVECOPYAS                     = 5,
-                OLECMDID_PRINT                          = 6,
-                OLECMDID_PRINTPREVIEW                   = 7,
-                OLECMDID_PAGESETUP                      = 8,
-                OLECMDID_SPELL                          = 9,
-                OLECMDID_PROPERTIES                     = 10,
-                OLECMDID_CUT                            = 11,
-                OLECMDID_COPY                           = 12,
-                OLECMDID_PASTE                          = 13,
-                OLECMDID_PASTESPECIAL                   = 14,
-                OLECMDID_UNDO                           = 15,
-                OLECMDID_REDO                           = 16,
-                OLECMDID_SELECTALL                      = 17,
-                OLECMDID_CLEARSELECTION                 = 18,
-                OLECMDID_ZOOM                           = 19,
-                OLECMDID_GETZOOMRANGE                   = 20,
-                OLECMDID_UPDATECOMMANDS                 = 21,
-                OLECMDID_REFRESH                        = 22,
-                OLECMDID_STOP                           = 23,
-                OLECMDID_HIDETOOLBARS                   = 24,
-                OLECMDID_SETPROGRESSMAX                 = 25,
-                OLECMDID_SETPROGRESSPOS                 = 26,
-                OLECMDID_SETPROGRESSTEXT                = 27,
-                OLECMDID_SETTITLE                       = 28,
-                OLECMDID_SETDOWNLOADSTATE               = 29,
-                OLECMDID_STOPDOWNLOAD                   = 30,
-                OLECMDID_ONTOOLBARACTIVATED             = 31,
-                OLECMDID_FIND                           = 32,
-                OLECMDID_DELETE                         = 33,
-                OLECMDID_HTTPEQUIV                      = 34,
-                OLECMDID_HTTPEQUIV_DONE                 = 35,
-                OLECMDID_ENABLE_INTERACTION             = 36,
-                OLECMDID_ONUNLOAD                       = 37,
-                OLECMDID_PROPERTYBAG2                   = 38,
-                OLECMDID_PREREFRESH                     = 39
-        }
-
-interface IOleCommandTarget : IUnknown
-{
-
-/* error codes */
-/*
-cpp_quote("#define OLECMDERR_E_FIRST            (OLE_E_LAST+1)")
-cpp_quote("#define OLECMDERR_E_NOTSUPPORTED (OLECMDERR_E_FIRST)")
-cpp_quote("#define OLECMDERR_E_DISABLED         (OLECMDERR_E_FIRST+1)")
-cpp_quote("#define OLECMDERR_E_NOHELP           (OLECMDERR_E_FIRST+2)")
-cpp_quote("#define OLECMDERR_E_CANCELED         (OLECMDERR_E_FIRST+3)")
-cpp_quote("#define OLECMDERR_E_UNKNOWNGROUP     (OLECMDERR_E_FIRST+4)")
-
-cpp_quote("#define MSOCMDERR_E_FIRST OLECMDERR_E_FIRST")
-cpp_quote("#define MSOCMDERR_E_NOTSUPPORTED OLECMDERR_E_NOTSUPPORTED")
-cpp_quote("#define MSOCMDERR_E_DISABLED OLECMDERR_E_DISABLED")
-cpp_quote("#define MSOCMDERR_E_NOHELP OLECMDERR_E_NOHELP")
-cpp_quote("#define MSOCMDERR_E_CANCELED OLECMDERR_E_CANCELED")
-cpp_quote("#define MSOCMDERR_E_UNKNOWNGROUP OLECMDERR_E_UNKNOWNGROUP")
-  */
-        HRESULT QueryStatus(
-					GUID *pguidCmdGroup,
-				ULONG cCmds,
-					OLECMD * prgCmds,
-				OLECMDTEXT *pCmdText);
-
-
-        HRESULT Exec(
-					GUID *pguidCmdGroup,
-					DWORD nCmdID,
-				DWORD nCmdexecopt,
-					VARIANT *pvaIn,
-				VARIANT *pvaOut);
-}
-alias IOleCommandTarget LPOLECOMMANDTARGET;
-/*
-cpp_quote("typedef enum")
-cpp_quote("{")
-cpp_quote("      OLECMDIDF_REFRESH_NORMAL          = 0,")
-cpp_quote("      OLECMDIDF_REFRESH_IFEXPIRED       = 1,")
-cpp_quote("      OLECMDIDF_REFRESH_CONTINUE        = 2,")
-cpp_quote("      OLECMDIDF_REFRESH_COMPLETELY      = 3,")
-cpp_quote("      OLECMDIDF_REFRESH_NO_CACHE        = 4,")
-cpp_quote("      OLECMDIDF_REFRESH_RELOAD          = 5,")
-cpp_quote("      OLECMDIDF_REFRESH_LEVELMASK       = 0x00FF,")
-cpp_quote("      OLECMDIDF_REFRESH_CLEARUSERINPUT  = 0x1000,")
-cpp_quote("      OLECMDIDF_REFRESH_PROMPTIFOFFLINE = 0x2000,")
-cpp_quote("} OLECMDID_REFRESHFLAG;")
-
-cpp_quote("")
-cpp_quote("////////////////////////////////////////////////////////////////////////////")
-cpp_quote("//  Aliases to original office-compatible names")
-cpp_quote("#define IMsoDocument             IOleDocument")
-cpp_quote("#define IMsoDocumentSite         IOleDocumentSite")
-cpp_quote("#define IMsoView                 IOleDocumentView")
-cpp_quote("#define IEnumMsoView             IEnumOleDocumentViews")
-cpp_quote("#define IMsoCommandTarget        IOleCommandTarget")
-cpp_quote("#define LPMSODOCUMENT            LPOLEDOCUMENT")
-cpp_quote("#define LPMSODOCUMENTSITE        LPOLEDOCUMENTSITE")
-cpp_quote("#define LPMSOVIEW                LPOLEDOCUMENTVIEW")
-cpp_quote("#define LPENUMMSOVIEW            LPENUMOLEDOCUMENTVIEWS")
-cpp_quote("#define LPMSOCOMMANDTARGET       LPOLECOMMANDTARGET")
-cpp_quote("#define MSOCMD                   OLECMD")
-cpp_quote("#define MSOCMDTEXT               OLECMDTEXT")
-cpp_quote("#define IID_IMsoDocument         IID_IOleDocument")
-cpp_quote("#define IID_IMsoDocumentSite     IID_IOleDocumentSite")
-cpp_quote("#define IID_IMsoView             IID_IOleDocumentView")
-cpp_quote("#define IID_IEnumMsoView         IID_IEnumOleDocumentViews")
-cpp_quote("#define IID_IMsoCommandTarget    IID_IOleCommandTarget")
-cpp_quote("#define MSOCMDF_SUPPORTED OLECMDF_SUPPORTED")
-cpp_quote("#define MSOCMDF_ENABLED OLECMDF_ENABLED")
-cpp_quote("#define MSOCMDF_LATCHED OLECMDF_LATCHED")
-cpp_quote("#define MSOCMDF_NINCHED OLECMDF_NINCHED")
-cpp_quote("#define MSOCMDTEXTF_NONE OLECMDTEXTF_NONE")
-cpp_quote("#define MSOCMDTEXTF_NAME OLECMDTEXTF_NAME")
-cpp_quote("#define MSOCMDTEXTF_STATUS OLECMDTEXTF_STATUS")
-cpp_quote("#define MSOCMDEXECOPT_DODEFAULT OLECMDEXECOPT_DODEFAULT")
-cpp_quote("#define MSOCMDEXECOPT_PROMPTUSER OLECMDEXECOPT_PROMPTUSER")
-cpp_quote("#define MSOCMDEXECOPT_DONTPROMPTUSER OLECMDEXECOPT_DONTPROMPTUSER")
-cpp_quote("#define MSOCMDEXECOPT_SHOWHELP OLECMDEXECOPT_SHOWHELP")
-cpp_quote("#define MSOCMDID_OPEN OLECMDID_OPEN")
-cpp_quote("#define MSOCMDID_NEW OLECMDID_NEW")
-cpp_quote("#define MSOCMDID_SAVE OLECMDID_SAVE")
-cpp_quote("#define MSOCMDID_SAVEAS OLECMDID_SAVEAS")
-cpp_quote("#define MSOCMDID_SAVECOPYAS OLECMDID_SAVECOPYAS")
-cpp_quote("#define MSOCMDID_PRINT OLECMDID_PRINT")
-cpp_quote("#define MSOCMDID_PRINTPREVIEW OLECMDID_PRINTPREVIEW")
-cpp_quote("#define MSOCMDID_PAGESETUP OLECMDID_PAGESETUP")
-cpp_quote("#define MSOCMDID_SPELL OLECMDID_SPELL")
-cpp_quote("#define MSOCMDID_PROPERTIES OLECMDID_PROPERTIES")
-cpp_quote("#define MSOCMDID_CUT OLECMDID_CUT")
-cpp_quote("#define MSOCMDID_COPY OLECMDID_COPY")
-cpp_quote("#define MSOCMDID_PASTE OLECMDID_PASTE")
-cpp_quote("#define MSOCMDID_PASTESPECIAL OLECMDID_PASTESPECIAL")
-cpp_quote("#define MSOCMDID_UNDO OLECMDID_UNDO")
-cpp_quote("#define MSOCMDID_REDO OLECMDID_REDO")
-cpp_quote("#define MSOCMDID_SELECTALL OLECMDID_SELECTALL")
-cpp_quote("#define MSOCMDID_CLEARSELECTION OLECMDID_CLEARSELECTION")
-cpp_quote("#define MSOCMDID_ZOOM OLECMDID_ZOOM")
-cpp_quote("#define MSOCMDID_GETZOOMRANGE OLECMDID_GETZOOMRANGE")
-
-cpp_quote("EXTERN_C const GUID SID_SContainerDispatch;")
-								*/
-} // extern( Windows)
-
+module dwt.internal.ole.win32.DOCOBJ;
+
+//private import std.c.windows.windows;
+//private import std.c.windows.com;
+private import dwt.internal.win32.OS;
+private import dwt.internal.win32.WINTYPES;
+private import dwt.internal.ole.win32.extras;
+private import dwt.internal.ole.win32.OLEIDL;
+//private import dwt.internal.ole.win32.OAIDL;
+private import dwt.internal.ole.win32.OBJIDL;
+
+extern( Windows ) {
+
+alias wchar wchar_t;
+
+//+---------------------------------------------------------------------------
+//
+//  Copyright 1995 - 1998 Microsoft Corporation. All Rights Reserved.
+//
+//  Contents:   OLE Document Object interfaces
+//
+//----------------------------------------------------------------------------
+
+
+/*
+#define HWND        UserHWND
+#define HACCEL      UserHACCEL
+#define HDC         UserHDC
+#define HFONT       UserHFONT
+#define MSG         UserMSG
+#define BSTR        UserBSTR
+#define EXCEPINFO   UserEXCEPINFO
+#define VARIANT     UserVARIANT
+*/
+/*
+interface IOleDocument;
+interface IOleDocumentSite;
+interface IOleDocumentView;
+interface IEnumOleDocumentViews;
+interface IContinueCallback;
+interface IPrint;
+interface IOleCommandTarget;
+  */
+
+
+
+//+---------------------------------------------------------------------------
+//
+//  Copyright (C) Microsoft Corporation, 1995-1997.
+//
+//  Contents:    IOleDocument interface definition
+//
+//----------------------------------------------------------------------------
+enum DOCMISC {
+                DOCMISC_CANCREATEMULTIPLEVIEWS          = 1,
+                DOCMISC_SUPPORTCOMPLEXRECTANGLES        = 2,
+                DOCMISC_CANTOPENEDIT                        = 4,        // fails the IOleDocumentView::Open  method
+                DOCMISC_NOFILESUPPORT                       = 8,        //  does not support read/writing to a file
+}
+
+interface IOleDocument : IUnknown
+{
+        HRESULT CreateView(IOleInPlaceSite pIPSite,IStream pstm,DWORD dwReserved,IOleDocumentView *ppView);
+
+        HRESULT GetDocMiscStatus(DWORD *pdwStatus);
+
+        HRESULT EnumViews( IEnumOleDocumentViews * ppEnum, IOleDocumentView * ppView);
+}
+alias IOleDocument LPOLEDOCUMENT;
+
+
+//+---------------------------------------------------------------------------
+//
+//  Copyright (C) Microsoft Corporation, 1995-1997.
+//
+//  Contents:    IOleDocumentSite interface definition
+//
+//----------------------------------------------------------------------------
+interface IOleDocumentSite : IUnknown
+{
+        HRESULT ActivateMe(IOleDocumentView pViewToActivate);
+}
+alias IOleDocumentSite LPOLEDOCUMENTSITE;
+
+
+//+---------------------------------------------------------------------------
+//
+//  Copyright (C) Microsoft Corporation, 1995-1997.
+//
+//  Contents:    IOleDocumentView interface definition
+//
+//----------------------------------------------------------------------------
+interface IOleDocumentView : IUnknown
+{
+        HRESULT SetInPlaceSite(IOleInPlaceSite pIPSite);
+
+        HRESULT GetInPlaceSite(IOleInPlaceSite * ppIPSite);
+
+        HRESULT GetDocument(IUnknown *ppunk);
+
+        HRESULT SetRect(LPRECT prcView);
+
+        HRESULT GetRect(LPRECT prcView);
+
+        HRESULT SetRectComplex(LPRECT prcView,LPRECT prcHScroll,LPRECT prcVScroll,LPRECT prcSizeBox);
+
+        HRESULT Show(BOOL fShow);
+
+        HRESULT UIActivate(BOOL fUIActivate);
+
+        HRESULT Open();
+
+        HRESULT CloseView(DWORD dwReserved);
+
+        HRESULT SaveViewState(LPSTREAM pstm);
+
+        HRESULT ApplyViewState(LPSTREAM pstm);
+
+        HRESULT Clone(IOleInPlaceSite pIPSiteNew,IOleDocumentView *ppViewNew);
+}
+alias IOleDocumentView LPOLEDOCUMENTVIEW;
+
+
+//+---------------------------------------------------------------------------
+//
+//  Copyright (C) Microsoft Corporation, 1995-1997.
+//
+//  Contents:    IEnumOleDocumentViews interface definition
+//
+//----------------------------------------------------------------------------
+interface IEnumOleDocumentViews : IUnknown
+{
+        HRESULT Next(
+	ULONG cViews,
+	IOleDocumentView * rgpView,
+		ULONG *pcFetched);
+
+        HRESULT Skip(ULONG cViews);
+
+        HRESULT Reset();
+
+        HRESULT Clone(IEnumOleDocumentViews *ppEnum);
+}
+alias IEnumOleDocumentViews LPENUMOLEDOCUMENTVIEWS;
+
+
+
+//+---------------------------------------------------------------------------
+//
+//  Copyright (C) Microsoft Corporation, 1995-1997.
+//
+//  Contents:    IContinueCallback interface definition
+//
+//----------------------------------------------------------------------------
+
+interface IContinueCallback : IUnknown
+{
+        HRESULT FContinue();
+
+        HRESULT FContinuePrinting(LONG nCntPrinted,LONG nCurPage, wchar_t * pwszPrintStatus);
+}
+alias IContinueCallback  LPCONTINUECALLBACK;
+
+
+//+---------------------------------------------------------------------------
+//
+//  Copyright (C) Microsoft Corporation, 1995-1997.
+//
+//  Contents:    IPrint interface definition
+//
+//----------------------------------------------------------------------------
+enum PRINTFLAG
+        {
+                PRINTFLAG_MAYBOTHERUSER         = 1,
+                PRINTFLAG_PROMPTUSER            = 2,
+                PRINTFLAG_USERMAYCHANGEPRINTER  = 4,
+                PRINTFLAG_RECOMPOSETODEVICE     = 8,
+                PRINTFLAG_DONTACTUALLYPRINT     = 16,
+                PRINTFLAG_FORCEPROPERTIES       = 32,
+                PRINTFLAG_PRINTTOFILE           = 64
+        } ;
+
+struct  PAGERANGE
+        {
+                LONG nFromPage;
+                LONG nToPage;
+        }
+
+struct  PAGESET
+        {
+                ULONG   cbStruct;
+                BOOL    fOddPages;
+                BOOL    fEvenPages;
+                ULONG   cPageRange;
+                PAGERANGE[1] rgPages;
+        }
+
+interface IPrint : IUnknown
+{
+
+        HRESULT SetInitialPageNum(LONG nFirstPage);
+
+        HRESULT GetPageInfo(LONG *pnFirstPage,LONG *pcPages);
+
+        HRESULT Print(
+	DWORD grfFlags,
+DVTARGETDEVICE **pptd,
+PAGESET ** ppPageSet,
+STGMEDIUM * pstgmOptions,
+IContinueCallback pcallback,
+LONG nFirstPage,
+LONG *pcPagesPrinted,
+LONG *pnLastPage);
+}
+alias IPrint LPPRINT;
+
+
+//+---------------------------------------------------------------------------
+//
+//  Copyright (C) Microsoft Corporation, 1995-1997.
+//
+//  Contents:    IOleCommandTarget interface definition
+//
+//----------------------------------------------------------------------------
+enum OLECMDF
+        {
+                OLECMDF_SUPPORTED       = 0x00000001,
+                OLECMDF_ENABLED         = 0x00000002,
+                OLECMDF_LATCHED         = 0x00000004,
+                OLECMDF_NINCHED         = 0x00000008,
+        }
+
+
+
+
+struct OLECMD {
+                ULONG   cmdID;
+                DWORD   cmdf;
+        }
+
+struct OLECMDTEXT{
+                DWORD cmdtextf;
+                ULONG cwActual;
+                ULONG cwBuf;    /* size in wide chars of the buffer for text */
+                wchar_t[1] rgwz; /* Array into which callee writes the text */
+}
+
+enum OLECMDTEXTF
+        {
+                OLECMDTEXTF_NONE        = 0,
+                OLECMDTEXTF_NAME        = 1,
+                OLECMDTEXTF_STATUS      = 2,
+        }
+
+enum OLECMDEXECOPT
+        {
+                OLECMDEXECOPT_DODEFAULT         = 0,
+                OLECMDEXECOPT_PROMPTUSER        = 1,
+                OLECMDEXECOPT_DONTPROMPTUSER    = 2,
+                OLECMDEXECOPT_SHOWHELP          = 3
+        }
+enum OLECMDID {
+                OLECMDID_OPEN                           = 1,
+                OLECMDID_NEW                            = 2,
+                OLECMDID_SAVE                           = 3,
+                OLECMDID_SAVEAS                         = 4,
+                OLECMDID_SAVECOPYAS                     = 5,
+                OLECMDID_PRINT                          = 6,
+                OLECMDID_PRINTPREVIEW                   = 7,
+                OLECMDID_PAGESETUP                      = 8,
+                OLECMDID_SPELL                          = 9,
+                OLECMDID_PROPERTIES                     = 10,
+                OLECMDID_CUT                            = 11,
+                OLECMDID_COPY                           = 12,
+                OLECMDID_PASTE                          = 13,
+                OLECMDID_PASTESPECIAL                   = 14,
+                OLECMDID_UNDO                           = 15,
+                OLECMDID_REDO                           = 16,
+                OLECMDID_SELECTALL                      = 17,
+                OLECMDID_CLEARSELECTION                 = 18,
+                OLECMDID_ZOOM                           = 19,
+                OLECMDID_GETZOOMRANGE                   = 20,
+                OLECMDID_UPDATECOMMANDS                 = 21,
+                OLECMDID_REFRESH                        = 22,
+                OLECMDID_STOP                           = 23,
+                OLECMDID_HIDETOOLBARS                   = 24,
+                OLECMDID_SETPROGRESSMAX                 = 25,
+                OLECMDID_SETPROGRESSPOS                 = 26,
+                OLECMDID_SETPROGRESSTEXT                = 27,
+                OLECMDID_SETTITLE                       = 28,
+                OLECMDID_SETDOWNLOADSTATE               = 29,
+                OLECMDID_STOPDOWNLOAD                   = 30,
+                OLECMDID_ONTOOLBARACTIVATED             = 31,
+                OLECMDID_FIND                           = 32,
+                OLECMDID_DELETE                         = 33,
+                OLECMDID_HTTPEQUIV                      = 34,
+                OLECMDID_HTTPEQUIV_DONE                 = 35,
+                OLECMDID_ENABLE_INTERACTION             = 36,
+                OLECMDID_ONUNLOAD                       = 37,
+                OLECMDID_PROPERTYBAG2                   = 38,
+                OLECMDID_PREREFRESH                     = 39
+        }
+
+interface IOleCommandTarget : IUnknown
+{
+
+/* error codes */
+/*
+cpp_quote("#define OLECMDERR_E_FIRST            (OLE_E_LAST+1)")
+cpp_quote("#define OLECMDERR_E_NOTSUPPORTED (OLECMDERR_E_FIRST)")
+cpp_quote("#define OLECMDERR_E_DISABLED         (OLECMDERR_E_FIRST+1)")
+cpp_quote("#define OLECMDERR_E_NOHELP           (OLECMDERR_E_FIRST+2)")
+cpp_quote("#define OLECMDERR_E_CANCELED         (OLECMDERR_E_FIRST+3)")
+cpp_quote("#define OLECMDERR_E_UNKNOWNGROUP     (OLECMDERR_E_FIRST+4)")
+
+cpp_quote("#define MSOCMDERR_E_FIRST OLECMDERR_E_FIRST")
+cpp_quote("#define MSOCMDERR_E_NOTSUPPORTED OLECMDERR_E_NOTSUPPORTED")
+cpp_quote("#define MSOCMDERR_E_DISABLED OLECMDERR_E_DISABLED")
+cpp_quote("#define MSOCMDERR_E_NOHELP OLECMDERR_E_NOHELP")
+cpp_quote("#define MSOCMDERR_E_CANCELED OLECMDERR_E_CANCELED")
+cpp_quote("#define MSOCMDERR_E_UNKNOWNGROUP OLECMDERR_E_UNKNOWNGROUP")
+  */
+        HRESULT QueryStatus(
+					GUID *pguidCmdGroup,
+				ULONG cCmds,
+					OLECMD * prgCmds,
+				OLECMDTEXT *pCmdText);
+
+
+        HRESULT Exec(
+					GUID *pguidCmdGroup,
+					DWORD nCmdID,
+				DWORD nCmdexecopt,
+					VARIANT *pvaIn,
+				VARIANT *pvaOut);
+}
+alias IOleCommandTarget LPOLECOMMANDTARGET;
+/*
+cpp_quote("typedef enum")
+cpp_quote("{")
+cpp_quote("      OLECMDIDF_REFRESH_NORMAL          = 0,")
+cpp_quote("      OLECMDIDF_REFRESH_IFEXPIRED       = 1,")
+cpp_quote("      OLECMDIDF_REFRESH_CONTINUE        = 2,")
+cpp_quote("      OLECMDIDF_REFRESH_COMPLETELY      = 3,")
+cpp_quote("      OLECMDIDF_REFRESH_NO_CACHE        = 4,")
+cpp_quote("      OLECMDIDF_REFRESH_RELOAD          = 5,")
+cpp_quote("      OLECMDIDF_REFRESH_LEVELMASK       = 0x00FF,")
+cpp_quote("      OLECMDIDF_REFRESH_CLEARUSERINPUT  = 0x1000,")
+cpp_quote("      OLECMDIDF_REFRESH_PROMPTIFOFFLINE = 0x2000,")
+cpp_quote("} OLECMDID_REFRESHFLAG;")
+
+cpp_quote("")
+cpp_quote("////////////////////////////////////////////////////////////////////////////")
+cpp_quote("//  Aliases to original office-compatible names")
+cpp_quote("#define IMsoDocument             IOleDocument")
+cpp_quote("#define IMsoDocumentSite         IOleDocumentSite")
+cpp_quote("#define IMsoView                 IOleDocumentView")
+cpp_quote("#define IEnumMsoView             IEnumOleDocumentViews")
+cpp_quote("#define IMsoCommandTarget        IOleCommandTarget")
+cpp_quote("#define LPMSODOCUMENT            LPOLEDOCUMENT")
+cpp_quote("#define LPMSODOCUMENTSITE        LPOLEDOCUMENTSITE")
+cpp_quote("#define LPMSOVIEW                LPOLEDOCUMENTVIEW")
+cpp_quote("#define LPENUMMSOVIEW            LPENUMOLEDOCUMENTVIEWS")
+cpp_quote("#define LPMSOCOMMANDTARGET       LPOLECOMMANDTARGET")
+cpp_quote("#define MSOCMD                   OLECMD")
+cpp_quote("#define MSOCMDTEXT               OLECMDTEXT")
+cpp_quote("#define IID_IMsoDocument         IID_IOleDocument")
+cpp_quote("#define IID_IMsoDocumentSite     IID_IOleDocumentSite")
+cpp_quote("#define IID_IMsoView             IID_IOleDocumentView")
+cpp_quote("#define IID_IEnumMsoView         IID_IEnumOleDocumentViews")
+cpp_quote("#define IID_IMsoCommandTarget    IID_IOleCommandTarget")
+cpp_quote("#define MSOCMDF_SUPPORTED OLECMDF_SUPPORTED")
+cpp_quote("#define MSOCMDF_ENABLED OLECMDF_ENABLED")
+cpp_quote("#define MSOCMDF_LATCHED OLECMDF_LATCHED")
+cpp_quote("#define MSOCMDF_NINCHED OLECMDF_NINCHED")
+cpp_quote("#define MSOCMDTEXTF_NONE OLECMDTEXTF_NONE")
+cpp_quote("#define MSOCMDTEXTF_NAME OLECMDTEXTF_NAME")
+cpp_quote("#define MSOCMDTEXTF_STATUS OLECMDTEXTF_STATUS")
+cpp_quote("#define MSOCMDEXECOPT_DODEFAULT OLECMDEXECOPT_DODEFAULT")
+cpp_quote("#define MSOCMDEXECOPT_PROMPTUSER OLECMDEXECOPT_PROMPTUSER")
+cpp_quote("#define MSOCMDEXECOPT_DONTPROMPTUSER OLECMDEXECOPT_DONTPROMPTUSER")
+cpp_quote("#define MSOCMDEXECOPT_SHOWHELP OLECMDEXECOPT_SHOWHELP")
+cpp_quote("#define MSOCMDID_OPEN OLECMDID_OPEN")
+cpp_quote("#define MSOCMDID_NEW OLECMDID_NEW")
+cpp_quote("#define MSOCMDID_SAVE OLECMDID_SAVE")
+cpp_quote("#define MSOCMDID_SAVEAS OLECMDID_SAVEAS")
+cpp_quote("#define MSOCMDID_SAVECOPYAS OLECMDID_SAVECOPYAS")
+cpp_quote("#define MSOCMDID_PRINT OLECMDID_PRINT")
+cpp_quote("#define MSOCMDID_PRINTPREVIEW OLECMDID_PRINTPREVIEW")
+cpp_quote("#define MSOCMDID_PAGESETUP OLECMDID_PAGESETUP")
+cpp_quote("#define MSOCMDID_SPELL OLECMDID_SPELL")
+cpp_quote("#define MSOCMDID_PROPERTIES OLECMDID_PROPERTIES")
+cpp_quote("#define MSOCMDID_CUT OLECMDID_CUT")
+cpp_quote("#define MSOCMDID_COPY OLECMDID_COPY")
+cpp_quote("#define MSOCMDID_PASTE OLECMDID_PASTE")
+cpp_quote("#define MSOCMDID_PASTESPECIAL OLECMDID_PASTESPECIAL")
+cpp_quote("#define MSOCMDID_UNDO OLECMDID_UNDO")
+cpp_quote("#define MSOCMDID_REDO OLECMDID_REDO")
+cpp_quote("#define MSOCMDID_SELECTALL OLECMDID_SELECTALL")
+cpp_quote("#define MSOCMDID_CLEARSELECTION OLECMDID_CLEARSELECTION")
+cpp_quote("#define MSOCMDID_ZOOM OLECMDID_ZOOM")
+cpp_quote("#define MSOCMDID_GETZOOMRANGE OLECMDID_GETZOOMRANGE")
+
+cpp_quote("EXTERN_C const GUID SID_SContainerDispatch;")
+								*/
+} // extern( Windows)
+
--- a/dwt/internal/ole/win32/EXDISP.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/ole/win32/EXDISP.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,911 +1,911 @@
-module dwt.internal.ole.win32.EXDISP;
-//+-------------------------------------------------------------------------
-//
-//  Microsoft Windows
-//  Copyright 1995 - 1998 Microsoft Corporation. All Rights Reserved.
-//
-//--------------------------------------------------------------------------
-//private import std.c.windows.windows;
-//private import std.c.windows.com;
-private import dwt.internal.ole.win32.OAIDL;
-private import dwt.internal.ole.win32.OLEIDL;
-private import dwt.internal.ole.win32.DOCOBJ;
-private import dwt.internal.ole.win32.extras;
-import dwt.internal.win32.WINTYPES;
-
-extern (Windows) {
-
-        enum BrowserNavConstants {
-            navOpenInNewWindow = 0x0001,
-            navNoHistory = 0x0002,
-            navNoReadFromCache = 0x0004,
-            navNoWriteToCache = 0x0008,
-            navAllowAutosearch = 0x0010,
-            navBrowserBar = 0x0020,
-        };
-        enum RefreshConstants {                                         // must map to these in sdk\inc\docobj.h
-            REFRESH_NORMAL     = 0,  //== OLECMDIDF_REFRESH_NORMAL
-            REFRESH_IFEXPIRED  = 1,  //== OLECMDIDF_REFRESH_IFEXPIRED
-            REFRESH_COMPLETELY = 3   //== OLECMDIDF_REFRESH_COMPLETELY
-        };
-
-interface IWebBrowser : IDispatch
-{
-        HRESULT GoBack();
-        HRESULT GoForward();
-        HRESULT GoHome();
-        HRESULT GoSearch();
-
-        HRESULT Navigate( BSTR URL,
-                         VARIANT * Flags,
-                         VARIANT * TargetFrameName,
-                         VARIANT * PostData,
-                         VARIANT * Headers);
-
-        HRESULT Refresh();
-
-        HRESULT Refresh2(VARIANT * Level);
-
-        HRESULT Stop();
-
-        HRESULT Application( IDispatch* ppDisp);
-
-        HRESULT Parent( IDispatch* ppDisp);
-
-        HRESULT Container( IDispatch* ppDisp);
-
-        HRESULT Document( IDispatch* ppDisp);
-
-        HRESULT TopLevelContainer( VARIANT_BOOL* pBool);
-
-        HRESULT Type( BSTR* Type);
-
-        // Window stuff...
-        HRESULT Left( LONG *pl);
-        HRESULT Put_Left( LONG Left);
-        HRESULT Top( LONG *pl);
-        HRESULT Put_Top( LONG Top);
-        HRESULT Width(LONG *pl);
-        HRESULT Put_Width(LONG Width);
-        HRESULT Height(LONG *pl);
-        HRESULT Put_Height(LONG Height);
-
-        // WebBrowser stuff...
-        HRESULT LocationName( BSTR *LocationName);
-
-        HRESULT LocationURL( BSTR * LocationURL);
-
-        HRESULT Busy( VARIANT_BOOL *pBool);
-    }
-
-/* //not sure how to process this
-    dispinterface DWebBrowserEvents
-    {
-        properties:
-        methods:
-        [id(DISPID_BEFORENAVIGATE), helpstring("Fired when a new hyperlink is being navigated to."), helpcontext(0x0000)]
-        void BeforeNavigate([in] BSTR URL, long Flags, BSTR TargetFrameName, VARIANT * PostData, BSTR Headers, [in, out]VARIANT_BOOL * Cancel);
-
-        [id(DISPID_NAVIGATECOMPLETE), helpstring("Fired when the document being navigated to becomes visible and enters the navigation stack."), helpcontext(0x0000)]
-        void NavigateComplete([in] BSTR URL );
-
-        [id(DISPID_STATUSTEXTCHANGE), helpstring("Statusbar text changed."), helpcontext(0x0000)]
-        void StatusTextChange([in]BSTR Text);
-
-        [id(DISPID_PROGRESSCHANGE), helpstring("Fired when download progress is updated."), helpcontext(0x0000)]
-        void ProgressChange([in] long Progress, [in] long ProgressMax);
-
-        [id(DISPID_DOWNLOADCOMPLETE), helpstring("Download of page complete."), helpcontext(0x0000)]
-        void DownloadComplete();
-
-        [id(DISPID_COMMANDSTATECHANGE), helpstring("The enabled state of a command changed"), helpcontext(0x0000)]
-        void CommandStateChange([in] long Command, [in] VARIANT_BOOL Enable);
-
-        [id(DISPID_DOWNLOADBEGIN), helpstring("Download of a page started."), helpcontext(0x000)]
-        void DownloadBegin();
-
-        [id(DISPID_NEWWINDOW), helpstring("Fired when a new window should be created."), helpcontext(0x0000)]
-        void NewWindow([in] BSTR URL, [in] long Flags, [in] BSTR TargetFrameName, [in] VARIANT * PostData, [in] BSTR Headers, [in,out] VARIANT_BOOL * Processed);
-
-        [id(DISPID_TITLECHANGE), helpstring("Document title changed."), helpcontext(0x0000)]
-        void TitleChange([in]BSTR Text);
-
-        [id(DISPID_FRAMEBEFORENAVIGATE), helpstring("Fired when a new hyperlink is being navigated to in a frame."), helpcontext(0x0000)]
-        void FrameBeforeNavigate([in] BSTR URL, long Flags, BSTR TargetFrameName, VARIANT * PostData, BSTR Headers, [in, out]VARIANT_BOOL * Cancel);
-
-        [id(DISPID_FRAMENAVIGATECOMPLETE), helpstring("Fired when a new hyperlink is being navigated to in a frame."), helpcontext(0x0000)]
-        void FrameNavigateComplete([in] BSTR URL );
-
-        [id(DISPID_FRAMENEWWINDOW), helpstring("Fired when a new window should be created."), helpcontext(0x0000)]
-        void FrameNewWindow([in] BSTR URL, [in] long Flags, [in] BSTR TargetFrameName, [in] VARIANT * PostData, [in] BSTR Headers, [in,out] VARIANT_BOOL * Processed);
-
-        // The following are IWebBrowserApp specific:
-        //
-        [id(DISPID_QUIT), helpstring("Fired when application is quiting."), helpcontext(0x0000)]
-        void Quit([in, out] VARIANT_BOOL * Cancel);
-
-        [id(DISPID_WINDOWMOVE), helpstring("Fired when window has been moved."), helpcontext(0x0000)]
-        void WindowMove();
-
-        [id(DISPID_WINDOWRESIZE), helpstring("Fired when window has been sized."), helpcontext(0x0000)]
-        void WindowResize();
-
-        [id(DISPID_WINDOWACTIVATE), helpstring("Fired when window has been activated."), helpcontext(0x0000)]
-        void WindowActivate();
-
-        [id(DISPID_PROPERTYCHANGE), helpstring("Fired when the PutProperty method has been called."), helpcontext(0x0000)]
-        void PropertyChange([in] BSTR Property);
-    }
-   */
-
-    enum CommandStateChangeConstants : uint {
-        CSC_UPDATECOMMANDS  = 0xFFFFFFFF,
-        CSC_NAVIGATEFORWARD = 0x00000001,
-        CSC_NAVIGATEBACK    = 0x00000002,
-    }
-
-    interface IWebBrowserApp : IWebBrowser
-    {
-        HRESULT Quit();
-
-        HRESULT ClientToWindow( int* pcx,  int* pcy);
-
-        HRESULT PutProperty( BSTR Property, VARIANT vtValue);
-        HRESULT GetProperty( BSTR Property, VARIANT *pvtValue);
-
-        HRESULT Name( BSTR* Name);
-
-        HRESULT HWND(LONG *pHWND);
-
-        HRESULT FullName( BSTR* FullName);
-
-        HRESULT Path( BSTR* Path);
-
-        HRESULT Visible( VARIANT_BOOL* pBool);
-        HRESULT Visible( VARIANT_BOOL Value);
-
-        HRESULT StatusBar( VARIANT_BOOL* pBool);
-        HRESULT StatusBar( VARIANT_BOOL Value);
-
-        HRESULT StatusText( BSTR *StatusText);
-        HRESULT StatusText( BSTR StatusText);
-
-        HRESULT ToolBar( int * Value);
-        HRESULT ToolBar( int Value);
-
-        HRESULT MenuBar( VARIANT_BOOL * Value);
-        HRESULT MenuBar( VARIANT_BOOL Value);
-
-        HRESULT FullScreen( VARIANT_BOOL * pbFullScreen);
-        HRESULT FullScreen( VARIANT_BOOL bFullScreen);
-    }
-
-    interface IWebBrowser2 : IWebBrowserApp
-    {
-        HRESULT Navigate2( VARIANT * URL,
-                          VARIANT * Flags,
-                          VARIANT * TargetFrameName,
-                          VARIANT * PostData,
-                          VARIANT * Headers);
-
-
-        HRESULT QueryStatusWB( OLECMDID cmdID,  OLECMDF * pcmdf);
-        HRESULT ExecWB( OLECMDID cmdID,  OLECMDEXECOPT cmdexecopt, VARIANT * pvaIn, VARIANT * pvaOut);
-        HRESULT ShowBrowserBar( VARIANT * pvaClsid,
-                                VARIANT * pvarShow,
-                                VARIANT * pvarSize );
-
-        HRESULT ReadyState(READYSTATE * plReadyState);
-
-        HRESULT Offline(VARIANT_BOOL * pbOffline);
-        HRESULT Offline( VARIANT_BOOL bOffline);
-
-        HRESULT Silent(VARIANT_BOOL * pbSilent);
-        HRESULT Silent(VARIANT_BOOL bSilent);
-
-        HRESULT RegisterAsBrowser(VARIANT_BOOL * pbRegister);
-        HRESULT RegisterAsBrowser(VARIANT_BOOL bRegister);
-
-        HRESULT RegisterAsDropTarget(VARIANT_BOOL * pbRegister);
-        HRESULT RegisterAsDropTarget(VARIANT_BOOL bRegister);
-
-        HRESULT TheaterMode(VARIANT_BOOL * pbRegister);
-        HRESULT TheaterMode(VARIANT_BOOL bRegister);
-
-        HRESULT AddressBar(VARIANT_BOOL * Value);
-        HRESULT AddressBar(VARIANT_BOOL Value);
-
-        HRESULT Resizable(VARIANT_BOOL * Value);
-        HRESULT Resizable(VARIANT_BOOL Value);
-    }
-
-	 /*
-    dispinterface DWebBrowserEvents2
-    {
-        properties:
-        methods:
-        [id(DISPID_STATUSTEXTCHANGE), helpstring("Statusbar text changed."), helpcontext(0x0000)]
-        void StatusTextChange([in]BSTR Text);
-
-        [id(DISPID_PROGRESSCHANGE), helpstring("Fired when download progress is updated."), helpcontext(0x0000)]
-        void ProgressChange([in] long Progress, [in] long ProgressMax);
-
-        [id(DISPID_COMMANDSTATECHANGE), helpstring("The enabled state of a command changed."), helpcontext(0x0000)]
-        void CommandStateChange([in] long Command, [in] VARIANT_BOOL Enable);
-
-        [id(DISPID_DOWNLOADBEGIN), helpstring("Download of a page started."), helpcontext(0x000)]
-        void DownloadBegin();
-
-        [id(DISPID_DOWNLOADCOMPLETE), helpstring("Download of page complete."), helpcontext(0x0000)]
-        void DownloadComplete();
-
-        [id(DISPID_TITLECHANGE), helpstring("Document title changed."), helpcontext(0x0000)]
-        void TitleChange([in] BSTR Text);
-
-        [id(DISPID_PROPERTYCHANGE), helpstring("Fired when the PutProperty method has been called."), helpcontext(0x0000)]
-        void PropertyChange([in] BSTR szProperty);
-
-        // New events for IE40:
-        //
-        [id(DISPID_BEFORENAVIGATE2), helpstring("Fired before navigate occurs in the given WebBrowser (window or frameset element). The processing of this navigation may be modified."), helpcontext(0x0000)]
-        void BeforeNavigate2([in] IDispatch* pDisp,
-                             [in] VARIANT * URL, [in] VARIANT * Flags, [in] VARIANT * TargetFrameName, [in] VARIANT * PostData, [in] VARIANT * Headers,
-                             [in,out] VARIANT_BOOL * Cancel);
-
-        [id(DISPID_NEWWINDOW2), helpstring("A new, hidden, non-navigated WebBrowser window is needed."), helpcontext(0x0000)]
-        void NewWindow2([in, out] IDispatch** ppDisp, [in, out] VARIANT_BOOL * Cancel);
-
-        [id(DISPID_NAVIGATECOMPLETE2), helpstring("Fired when the document being navigated to becomes visible and enters the navigation stack."), helpcontext(0x0000)]
-        void NavigateComplete2([in] IDispatch* pDisp, [in] VARIANT * URL );
-
-        [id(DISPID_DOCUMENTCOMPLETE), helpstring("Fired when the document being navigated to reaches ReadyState_Complete."), helpcontext(0x0000)]
-        void DocumentComplete([in] IDispatch* pDisp, [in] VARIANT * URL );
-
-        [id(DISPID_ONQUIT), helpstring("Fired when application is quiting."), helpcontext(0x0000)]
-        void OnQuit();
-
-        [id(DISPID_ONVISIBLE), helpstring("Fired when the window should be shown/hidden"), helpcontext(0x0000)]
-        void OnVisible([in] VARIANT_BOOL Visible);
-
-        [id(DISPID_ONTOOLBAR), helpstring("Fired when the toolbar  should be shown/hidden"), helpcontext(0x0000)]
-        void OnToolBar([in] VARIANT_BOOL ToolBar);
-
-        [id(DISPID_ONMENUBAR), helpstring("Fired when the menubar should be shown/hidden"), helpcontext(0x0000)]
-        void OnMenuBar([in] VARIANT_BOOL MenuBar);
-
-        [id(DISPID_ONSTATUSBAR), helpstring("Fired when the statusbar should be shown/hidden"), helpcontext(0x0000)]
-        void OnStatusBar([in] VARIANT_BOOL StatusBar);
-
-        [id(DISPID_ONFULLSCREEN), helpstring("Fired when fullscreen mode should be on/off"), helpcontext(0x0000)]
-        void OnFullScreen([in] VARIANT_BOOL FullScreen);
-
-        [id(DISPID_ONTHEATERMODE), helpstring("Fired when theater mode should be on/off"), helpcontext(0x0000)]
-        void OnTheaterMode([in] VARIANT_BOOL TheaterMode);
-    }
-    */
-
-    /*
-
-    [
-        uuid(EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B), // v.1 clsid CLSID_WebBrowser_V1
-        control,
-        helpstring("WebBrowser Control")
-    ]
-    coclass WebBrowser_V1
-    {
-                          interface     IWebBrowser2;
-        [default]         interface     IWebBrowser;
-        [source]          dispinterface DWebBrowserEvents2;
-        [default, source] dispinterface DWebBrowserEvents;
-    }
-
-    [
-        uuid(8856F961-340A-11D0-A96B-00C04FD705A2), // v.2 clsid CLSID_WebBrowser
-        control,
-        helpstring("WebBrowser Control")
-    ]
-    coclass WebBrowser
-    {
-        [default]         interface     IWebBrowser2;
-                          interface     IWebBrowser;
-        [default, source] dispinterface DWebBrowserEvents2;
-        [source]          dispinterface DWebBrowserEvents;
-    }
-
-    [
-        uuid(0002DF01-0000-0000-C000-000000000046), // CLSID_InternetExplorer
-        helpstring("Internet Explorer Application."),
-    ]
-    coclass InternetExplorer
-    {
-        [default]         interface     IWebBrowser2;
-                          interface     IWebBrowserApp;
-        [default, source] dispinterface DWebBrowserEvents2;
-        [source]          dispinterface DWebBrowserEvents;
-    }
-
-	 */
-
-
-    interface IFolderViewOC : IDispatch
-    {
-        HRESULT SetFolderView(IDispatch pdisp);
-    }
-
-    interface DShellFolderViewEvents
-    {
-        void SelectionChanged();
-    }
-
-/*    [
-        uuid(9BA05971-F6A8-11CF-A442-00A0C90A8F39), // CLSID_ShellFolderViewOC
-        helpstring("Shell Folder View Events Router."),
-        hidden
-    ]
-    coclass ShellFolderViewOC
-    {
-        [default]         interface     IFolderViewOC;
-        [default, source] dispinterface DShellFolderViewEvents;
-    }*/
-    enum ShellWindowTypeConstants {
-        SWC_EXPLORER    = 0x0,
-        SWC_BROWSER     = 0x00000001,
-        SWC_3RDPARTY    = 0x00000002,
-        SWC_CALLBACK    = 0x00000004,
-    }
-
-    enum ShellWindowFindWindowOptions {
-        SWFO_NEEDDISPATCH   = 0x00000001,
-        SWFO_INCLUDEPENDING = 0x00000002,
-        SWFO_COOKIEPASSED   = 0x00000004,
-    }
-
-    interface DShellWindowsEvents
-    {
-        void WindowRegistered(LONG lCookie);
-
-        void WindowRevoked(LONG lCookie);
-    }
-
-    interface IShellWindows : IDispatch
-    {
-        //Properties
-        HRESULT Count(LONG *Count);
-
-        HRESULT Item(VARIANT index, IDispatch *Folder);
-
-        HRESULT _NewEnum(IUnknown *ppunk);
-
-        // Some private hidden members to allow shell windows to add and
-        // remove themself from the list.  We mark them hidden to keep
-        // random VB apps from trying to Register...
-        HRESULT Register( IDispatch pid,
-                         LONG hwnd,
-                         int swClass,
-                         LONG *plCookie);
-
-        HRESULT RegisterPending(LONG lThreadId,
-                         VARIANT* pvarloc,     // will hold pidl that is being opened.
-                         VARIANT* pvarlocRoot, // Optional root pidl
-                         int swClass,
-                         LONG *plCookie);
-
-        HRESULT Revoke(LONG lCookie);
-        // As an optimization, each window notifies the new location
-        // only when
-        //  (1) it's being deactivated
-        //  (2) getFullName is called (we overload it to force update)
-        HRESULT OnNavigate(LONG lCookie, VARIANT* pvarLoc);
-        HRESULT OnActivated(LONG lCookie, VARIANT_BOOL fActive);
-        HRESULT FindWindow(VARIANT* pvarLoc,
-                           VARIANT* pvarLocRoot,
-                           int swClass,
-                           LONG * phwnd,
-                            int swfwOptions,
-                           IDispatch* ppdispOut);
-        HRESULT OnCreated(LONG lCookie,IUnknown punk);
-
-        HRESULT ProcessAttachDetach(VARIANT_BOOL fAttach);
-    }
-
-	 /*
-    [
-        uuid(9BA05972-F6A8-11CF-A442-00A0C90A8F39),     // CLSID_ShellWindows
-        helpstring("ShellDispatch Load in Shell Context")
-    ]
-    coclass ShellWindows
-    {
-        [default] interface IShellWindows;
-        [default, source] dispinterface DShellWindowsEvents;
-    }
-    */
-
-    /*
-
-    [
-        uuid(88A05C00-F000-11CE-8350-444553540000), // IID_IShellLinkDual
-        helpstring("Definition of Shell Link IDispatch interface"),
-        oleautomation,
-        dual,
-        odl,
-        hidden,
-    ]
-    interface IShellLinkDual : IDispatch
-    {
-        [propget, helpstring("Get the path of the link")]
-        HRESULT Path([out, retval] BSTR *pbs);
-
-        [propput, helpstring("Set the path of the link")]
-        HRESULT Path([in] BSTR bs);
-
-        [propget, helpstring("Get the description for the link")]
-        HRESULT Description([out, retval] BSTR *pbs);
-
-        [propput, helpstring("Set the description for the link")]
-        HRESULT Description([in] BSTR bs);
-
-        [propget, helpstring("Get the working directory for the link")]
-        HRESULT WorkingDirectory([out, retval] BSTR *pbs);
-
-        [propput, helpstring("Set the working directory for the link")]
-        HRESULT WorkingDirectory([in] BSTR bs);
-
-        [propget, helpstring("Get the arguments for the link")]
-        HRESULT Arguments([out, retval] BSTR *pbs);
-
-        [propput, helpstring("Set the arguments for the link")]
-        HRESULT Arguments([in] BSTR bs);
-
-
-        [propget, helpstring("Get the Hotkey for the link")]
-        HRESULT Hotkey([out, retval] int *piHK);
-
-        [propput, helpstring("Set the Hotkey for the link")]
-        HRESULT Hotkey([in] int iHK);
-
-        [propget, helpstring("Get the Show Command for the link")]
-        HRESULT ShowCommand([out, retval] int *piShowCommand);
-
-        [propput, helpstring("Set the Show Command for the link")]
-        HRESULT ShowCommand([in] int iShowCommand);
-
-        // STDMETHOD(SetRelativePath)(THIS_ LPCSTR pszPathRel, DWORD dwReserved) PURE;
-        //Methods
-        [helpstring("Tell the link to resolve itself")]
-        HRESULT Resolve([in] int fFlags);
-
-        [helpstring("Get the IconLocation for the link")]
-        HRESULT GetIconLocation([out] BSTR *pbs, [out,retval] int *piIcon);
-
-        [helpstring("Set the IconLocation for the link")]
-        HRESULT SetIconLocation([in] BSTR bs, [in] int iIcon);
-
-        [helpstring("Tell the link to save the changes")]
-        HRESULT Save ([in, optional] VARIANT vWhere);
-    }
-
-    [
-        uuid(11219420-1768-11d1-95BE-00609797EA4F), // CLSID_ShellLinkObject
-        helpstring("Shell Link object")
-    ]
-    coclass ShellLinkObject // funny name so we don't conflict with CLSID_ShellLink
-    {
-        [default] interface IShellLinkDual;
-    }
-
-    [
-        uuid(08EC3E00-50B0-11CF-960C-0080C7F4EE85), // IID_FolderItemVerb
-        helpstring("Definition of interface FolderItemVerb"),
-        oleautomation,
-        dual,
-        odl,
-    ]
-    interface FolderItemVerb : IDispatch
-    {
-        [propget, helpstring("Get Application object")]
-        HRESULT Application ([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("Get Parent object")]
-        HRESULT Parent([out, retval] IDispatch **ppid);
-
-        [id(0), propget, helpstring("Get display name for item")]
-        HRESULT Name([out, retval] BSTR *pbs);
-
-        [helpstring("Execute the verb")]
-        HRESULT DoIt();
-    }
-
-    [
-        uuid(1F8352C0-50B0-11CF-960C-0080C7F4EE85), // IID_FolderItemVerbs
-        helpstring("Definition of interface FolderItemVerbs"),
-        oleautomation,
-        dual,
-        odl,
-    ]
-    interface FolderItemVerbs : IDispatch
-    {
-        //Properties
-        [propget, helpstring("Get count of open folder windows")]
-        HRESULT Count([out, retval] long *plCount);
-
-        [propget, helpstring("Get Application object")]
-        HRESULT Application ([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("Get Parent object")]
-        HRESULT Parent([out, retval] IDispatch **ppid);
-
-        //Methods
-        //Standard Methods
-        [helpstring("Return the specified verb")]
-        HRESULT Item([in,optional] VARIANT index, [out, retval]FolderItemVerb **ppid);
-
-        [id(-4), helpstring("Enumerates the figures")]
-        HRESULT _NewEnum([out, retval] IUnknown **ppunk);
-    }
-
-    interface Folder;   // forward reference
-
-    [
-        uuid(FAC32C80-CBE4-11CE-8350-444553540000), // IID_FolderItem
-        helpstring("Definition of interface FolderItem"),
-        oleautomation,
-        dual,
-        odl,
-    ]
-    interface FolderItem : IDispatch
-    {
-        [propget, helpstring("Get Application object")]
-        HRESULT Application ([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("Get Parent object")]
-        HRESULT Parent([out, retval] IDispatch **ppid);
-
-        [id(0), propget, helpstring("Get display name for item")]
-        HRESULT Name([out, retval] BSTR *pbs);
-
-        [id(0), propput, helpstring("Set the name for the item")]
-        HRESULT Name([in] BSTR bs);
-
-        [propget, helpstring("Get the pathname to the item")]
-        HRESULT Path([out, retval]BSTR *pbs);
-
-        [propget, helpstring("If item is link return link object")]
-        HRESULT GetLink([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("If item is a folder return folder object")]
-        HRESULT GetFolder([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("Is the item a link?")]
-        HRESULT IsLink([out, retval] VARIANT_BOOL *pb);
-
-        [propget, helpstring("Is the item a Folder?")]
-        HRESULT IsFolder([out, retval] VARIANT_BOOL *pb);
-
-        [propget, helpstring("Is the item a file system object?")]
-        HRESULT IsFileSystem([out, retval] VARIANT_BOOL *pb);
-
-        [propget, helpstring("Is the item browsable?")]
-        HRESULT IsBrowsable([out, retval] VARIANT_BOOL *pb);
-
-        [propget, helpstring("Modification Date?")]
-        HRESULT ModifyDate([out, retval] DATE *pdt);
-
-        [propput, helpstring("Modification Date?")]
-        HRESULT ModifyDate([in] DATE dt);
-
-        [propget, helpstring("Size")]
-        HRESULT Size([out, retval] LONG *pul);
-
-        [propget, helpstring("Type")]
-        HRESULT Type([out, retval] BSTR *pbs);
-
-        [helpstring("Get the list of verbs for the object")]
-        HRESULT Verbs([out, retval] FolderItemVerbs **ppfic);
-
-        [helpstring("Execute a command on the item")]
-        HRESULT InvokeVerb([in,optional] VARIANT vVerb);
-    }
-
-    [
-        uuid(744129E0-CBE5-11CE-8350-444553540000), // IID_FolderItems
-        helpstring("Definition of interface FolderItems"),
-        oleautomation,
-        dual,
-        odl,
-    ]
-    interface FolderItems : IDispatch
-    {
-        //Properties
-        [propget, helpstring("Get count of items in the folder")]
-        HRESULT Count([out, retval] long *plCount);
-
-        [propget, helpstring("Get Application object")]
-        HRESULT Application ([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("Get Parent object")]
-        HRESULT Parent([out, retval] IDispatch **ppid);
-
-        //Methods
-        //Standard Methods
-        [helpstring("Return the figure for the given index")]
-        HRESULT Item([in,optional] VARIANT index, [out, retval]FolderItem **ppid);
-
-        [id(-4), helpstring("Enumerates the figures")]
-        HRESULT _NewEnum([out, retval] IUnknown **ppunk);
-    }
-
-    [
-        uuid(BBCBDE60-C3FF-11CE-8350-444553540000), // IID_Folder
-        helpstring("Definition of interface Folder"),
-        oleautomation,
-        dual,
-        odl,
-    ]
-    interface Folder : IDispatch
-    {
-        //Properties
-        [id(0), propget, helpstring("Get the display name for the window")]
-        HRESULT Title([out, retval] BSTR *pbs);
-
-        [propget, helpstring("Get Application object")]
-        HRESULT Application ([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("Get Parent object")]
-        HRESULT Parent([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("Get Parent object")]
-        HRESULT ParentFolder([out, retval] Folder **ppsf);
-
-        //Methods
-        [helpstring("The collection of Items in folder")]
-        HRESULT Items([out, retval] FolderItems **ppid);
-
-        [helpstring("Parse the name to get an item.")]
-        HRESULT ParseName([in] BSTR bName, [out, retval] FolderItem **ppid);
-
-        [helpstring("Create a new sub folder in this folder.")]
-        HRESULT NewFolder([in] BSTR bName, [in, optional] VARIANT vOptions);
-
-        [helpstring("Move Items to this folder.")]
-        HRESULT MoveHere([in] VARIANT vItem, [in, optional] VARIANT vOptions);
-
-        [helpstring("Copy Items to this folder.")]
-        HRESULT CopyHere([in] VARIANT vItem, [in, optional] VARIANT vOptions);
-
-        [helpstring("Get the details about an item.")]
-        HRESULT GetDetailsOf([in] VARIANT vItem, [in] int iColumn, [out, retval]BSTR *pbs);
-    }
-
-    [
-        uuid(E7A1AF80-4D96-11CF-960C-0080C7F4EE85), // IID_IShellFolderViewDual
-        helpstring("definition of interface IShellFolderViewDual"),
-        oleautomation,
-        hidden,
-        dual,
-        odl,
-    ]
-    interface IShellFolderViewDual : IDispatch
-    {
-        [propget, helpstring("Get Application object")]
-        HRESULT Application([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("Get Parent object")]
-        HRESULT Parent([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("Get the folder being viewed")]
-        HRESULT Folder([out, retval] Folder **ppid);
-
-        [helpstring("The collection of Selected Items in folder")]
-        HRESULT SelectedItems([out, retval] FolderItems **ppid);
-
-        [propget, helpstring("The currently focused item in the folder")]
-        HRESULT FocusedItem([out, retval] FolderItem **ppid);
-
-        [helpstring("Select the item")]
-        HRESULT SelectItem([in]VARIANT *pvfi, [in] int dwFlags);
-
-        [helpstring("Show items menu and return command selected")]
-        HRESULT PopupItemMenu([in]FolderItem *pfi, [in, optional]VARIANT vx, [in, optional]VARIANT vy, [out, retval] BSTR *pbs);
-
-        [propget, helpstring("Returns the scripting automation model."), helpcontext(0x0000)]
-        HRESULT Script([out,retval] IDispatch** ppDisp);
-
-        [propget, helpstring("Returns the view options for showing a folder."), helpcontext(0x0000)]
-        HRESULT ViewOptions([out,retval] long * plViewOptions);
-    }
-
-    [
-        uuid(62112AA1-EBE4-11cf-A5FB-0020AFE7292D),  // CLSID_ShellFolderView
-        helpstring("Shell Folder View Object")
-    ]
-    coclass ShellFolderView
-    {
-        [default] interface IShellFolderViewDual;
-        [source,default] dispinterface DShellFolderViewEvents;
-    }
-
-    typedef
-    [
-        uuid(742A99A0-C77E-11D0-A32C-00A0C91EEDBA),
-        helpstring("Constants for ViewOptions")
-    ]
-    enum ShellFolderViewOptions {
-        [helpstring("Show All Objects")]                        SFVVO_SHOWALLOBJECTS = 0x00000001,
-        [helpstring("Show File Extensions")]                    SFVVO_SHOWEXTENSIONS = 0x00000002,
-        [helpstring("Color encode Compressed files")]           SFVVO_SHOWCOMPCOLOR = 0x00000008,
-        [helpstring("Show System Files")]                       SFVVO_SHOWSYSFILES = 0x00000020,
-        [helpstring("Use Windows 95 UI settings")]              SFVVO_WIN95CLASSIC = 0x00000040,
-        [helpstring("User needs to double click in web View")]  SFVVO_DOUBLECLICKINWEBVIEW = 0x00000080,
-        [helpstring("Is Desktop HTML enabled")]                 SFVVO_DESKTOPHTML = 0x00000200,
-    } ShellFolderViewOptions;
-
-    [
-        uuid(D8F015C0-C278-11CE-A49E-444553540000), // IID_IShellDispatch
-        helpstring("Definition of interface IShellDispatch"),
-        oleautomation,
-        hidden,
-        dual,
-        odl,
-    ]
-    interface IShellDispatch : IDispatch
-    {
-        [propget, helpstring("Get Application object")]
-        HRESULT Application ([out, retval] IDispatch **ppid);
-
-        [propget, helpstring("Get Parent object")]
-        HRESULT Parent([out, retval] IDispatch **ppid);
-
-        //=========================================================
-        // Name Space methods and properties
-
-        [helpstring("Enum the contents of a folder")]
-        HRESULT NameSpace([in] VARIANT vDir, [out, retval] Folder **ppsdf);
-
-        [helpstring("Browse the name space for a Folder")]
-        HRESULT BrowseForFolder([in] long Hwnd,
-            [in] BSTR Title,
-            [in] long Options,
-            [in,optional] VARIANT RootFolder,
-            [out, retval] FOLDER **ppsdf);
-
-        [helpstring("The collection of open folder windows")]
-        HRESULT Windows([out, retval] IDispatch **ppid);
-
-        [helpstring("Open a folder")]
-        HRESULT Open([in] VARIANT vDir);
-
-        [helpstring("Explore a folder")]
-        HRESULT Explore([in] VARIANT vDir);
-
-        [helpstring("Minimize all windows")]
-        HRESULT MinimizeAll(void);
-
-        [helpstring("Undo Minimize All")]
-        HRESULT UndoMinimizeALL(void);
-
-        [helpstring("Bring up the file run")]
-        HRESULT FileRun(void);
-
-        [helpstring("Cascade Windows")]
-        HRESULT CascadeWindows(void);
-
-        [helpstring("Tile windows vertically")]
-        HRESULT TileVertically(void);
-
-        [helpstring("Tile windows horizontally")]
-        HRESULT TileHorizontally(void);
-
-        [helpstring("Exit Windows")]
-        HRESULT ShutdownWindows(void);
-
-        [helpstring("Suspend the pc")]
-        HRESULT Suspend(void);
-
-        [helpstring("Eject the pc")]
-        HRESULT EjectPC(void);
-
-        [helpstring("Bring up the Set time dialog")]
-        HRESULT SetTime(void);
-
-        [helpstring("Handle Tray properties")]
-        HRESULT TrayProperties(void);
-
-        [helpstring("Display shell help")]
-        HRESULT Help(void);
-
-        [helpstring("Find Files")]
-        HRESULT FindFiles(void);
-
-        [helpstring("Find a computer")]
-        HRESULT FindComputer(void);
-
-        [helpstring("Refresh the menu")]
-        HRESULT RefreshMenu(void);
-
-        [helpstring("Run a controlpanelItem")]
-        HRESULT ControlPanelItem([in] BSTR szDir);
-    }
-
-    [
-        uuid(13709620-C279-11CE-A49E-444553540000), // CLSID_Shell
-        helpstring("Shell Object Type Information")
-    ]
-    coclass Shell
-    {
-        [default] interface IShellDispatch;
-    }
-
-    [
-        uuid(0A89A860-D7B1-11CE-8350-444553540000), // CLSID_ShellDispatchInproc
-        helpstring("ShellDispatch Load in Shell Context"),
-        hidden
-    ]
-    coclass ShellDispatchInproc
-    {
-        interface IUnknown;
-    }
-
-    [
-        uuid(1820FED0-473E-11D0-A96C-00C04FD705A2),     // CLSID_WebViewFolderContents
-        hidden
-    ]
-    coclass WebViewFolderContents
-    {
-        [default] interface IShellFolderViewDual;
-        [source,default] dispinterface DShellFolderViewEvents;
-    }
-
-    typedef
-    [
-        uuid(CA31EA20-48D0-11CF-8350-444553540000),
-        helpstring("Constants for Special Folders for open/Explore")
-    ]
-    enum ShellSpecialFolderConstants    {
-        [helpstring("Special Folder DESKTOP")]      ssfDESKTOP = 0x0000,
-        [helpstring("Special Folder PROGRAMS")]     ssfPROGRAMS = 0x0002,
-        [helpstring("Special Folder CONTROLS")]     ssfCONTROLS = 0x0003,
-        [helpstring("Special Folder PRINTERS")]     ssfPRINTERS = 0x0004,
-        [helpstring("Special Folder PERSONAL")]     ssfPERSONAL = 0x0005,
-        [helpstring("Special Folder FAVORITES")]    ssfFAVORITES = 0x0006,
-        [helpstring("Special Folder STARTUP")]      ssfSTARTUP = 0x0007,
-        [helpstring("Special Folder RECENT")]       ssfRECENT = 0x0008,
-        [helpstring("Special Folder SENDTO")]       ssfSENDTO = 0x0009,
-        [helpstring("Special Folder BITBUCKET")]    ssfBITBUCKET = 0x000a,
-        [helpstring("Special Folder STARTMENU")]    ssfSTARTMENU = 0x000b,
-        [helpstring("Special Folder DESKTOPDIRECTORY")]    ssfDESKTOPDIRECTORY = 0x0010,
-        [helpstring("Special Folder DRIVES")]       ssfDRIVES = 0x0011,
-        [helpstring("Special Folder NETWORK")]      ssfNETWORK = 0x0012,
-        [helpstring("Special Folder NETHOOD")]      ssfNETHOOD = 0x0013,
-        [helpstring("Special Folder FONTS")]        ssfFONTS = 0x0014,
-        [helpstring("Special Folder TEMPLATES")]    ssfTEMPLATES = 0x0015,
-    } ShellSpecialFolderConstants;
-
-    [
-        uuid(729FE2F8-1EA8-11d1-8F85-00C04FC2FBE1),     // IID_IShellUIHelper
-        helpstring("Shell UI Helper Control Interface"),
-        oleautomation, dual
-    ]
-    interface IShellUIHelper : IDispatch
-    {
-        [hidden, id(DISPID_RESETFIRSTBOOTMODE)] HRESULT ResetFirstBootMode();
-        [hidden, id(DISPID_RESETSAFEMODE)] HRESULT ResetSafeMode();
-        [hidden, id(DISPID_REFRESHOFFLINEDESKTOP)] HRESULT RefreshOfflineDesktop();
-        [id(DISPID_ADDFAVORITE)] HRESULT AddFavorite([in] BSTR URL, [optional, in] VARIANT *Title);
-        [id(DISPID_ADDCHANNEL)] HRESULT AddChannel([in] BSTR URL);
-        [id(DISPID_ADDDESKTOPCOMPONENT)] HRESULT AddDesktopComponent([in] BSTR URL, [in] BSTR Type,
-            [optional, in] VARIANT *Left,
-            [optional, in] VARIANT *Top,
-            [optional, in] VARIANT *Width,
-            [optional, in] VARIANT *Height);
-        [id(DISPID_ISSUBSCRIBED)] HRESULT IsSubscribed([in] BSTR URL, [out,retval] VARIANT_BOOL* pBool);
-    }
-    [
-        uuid(64AB4BB7-111E-11d1-8F79-00C04FC2FBE1)  // CLSID_ShellUIHelper
-    ]
-    coclass ShellUIHelper
-    {
-        [default] interface IShellUIHelper;
-    }
-*/
-}  // extern (Windows)
-
+module dwt.internal.ole.win32.EXDISP;
+//+-------------------------------------------------------------------------
+//
+//  Microsoft Windows
+//  Copyright 1995 - 1998 Microsoft Corporation. All Rights Reserved.
+//
+//--------------------------------------------------------------------------
+//private import std.c.windows.windows;
+//private import std.c.windows.com;
+private import dwt.internal.ole.win32.OAIDL;
+private import dwt.internal.ole.win32.OLEIDL;
+private import dwt.internal.ole.win32.DOCOBJ;
+private import dwt.internal.ole.win32.extras;
+import dwt.internal.win32.WINTYPES;
+
+extern (Windows) {
+
+        enum BrowserNavConstants {
+            navOpenInNewWindow = 0x0001,
+            navNoHistory = 0x0002,
+            navNoReadFromCache = 0x0004,
+            navNoWriteToCache = 0x0008,
+            navAllowAutosearch = 0x0010,
+            navBrowserBar = 0x0020,
+        };
+        enum RefreshConstants {                                         // must map to these in sdk\inc\docobj.h
+            REFRESH_NORMAL     = 0,  //== OLECMDIDF_REFRESH_NORMAL
+            REFRESH_IFEXPIRED  = 1,  //== OLECMDIDF_REFRESH_IFEXPIRED
+            REFRESH_COMPLETELY = 3   //== OLECMDIDF_REFRESH_COMPLETELY
+        };
+
+interface IWebBrowser : IDispatch
+{
+        HRESULT GoBack();
+        HRESULT GoForward();
+        HRESULT GoHome();
+        HRESULT GoSearch();
+
+        HRESULT Navigate( BSTR URL,
+                         VARIANT * Flags,
+                         VARIANT * TargetFrameName,
+                         VARIANT * PostData,
+                         VARIANT * Headers);
+
+        HRESULT Refresh();
+
+        HRESULT Refresh2(VARIANT * Level);
+
+        HRESULT Stop();
+
+        HRESULT Application( IDispatch* ppDisp);
+
+        HRESULT Parent( IDispatch* ppDisp);
+
+        HRESULT Container( IDispatch* ppDisp);
+
+        HRESULT Document( IDispatch* ppDisp);
+
+        HRESULT TopLevelContainer( VARIANT_BOOL* pBool);
+
+        HRESULT Type( BSTR* Type);
+
+        // Window stuff...
+        HRESULT Left( LONG *pl);
+        HRESULT Put_Left( LONG Left);
+        HRESULT Top( LONG *pl);
+        HRESULT Put_Top( LONG Top);
+        HRESULT Width(LONG *pl);
+        HRESULT Put_Width(LONG Width);
+        HRESULT Height(LONG *pl);
+        HRESULT Put_Height(LONG Height);
+
+        // WebBrowser stuff...
+        HRESULT LocationName( BSTR *LocationName);
+
+        HRESULT LocationURL( BSTR * LocationURL);
+
+        HRESULT Busy( VARIANT_BOOL *pBool);
+    }
+
+/* //not sure how to process this
+    dispinterface DWebBrowserEvents
+    {
+        properties:
+        methods:
+        [id(DISPID_BEFORENAVIGATE), helpstring("Fired when a new hyperlink is being navigated to."), helpcontext(0x0000)]
+        void BeforeNavigate([in] BSTR URL, long Flags, BSTR TargetFrameName, VARIANT * PostData, BSTR Headers, [in, out]VARIANT_BOOL * Cancel);
+
+        [id(DISPID_NAVIGATECOMPLETE), helpstring("Fired when the document being navigated to becomes visible and enters the navigation stack."), helpcontext(0x0000)]
+        void NavigateComplete([in] BSTR URL );
+
+        [id(DISPID_STATUSTEXTCHANGE), helpstring("Statusbar text changed."), helpcontext(0x0000)]
+        void StatusTextChange([in]BSTR Text);
+
+        [id(DISPID_PROGRESSCHANGE), helpstring("Fired when download progress is updated."), helpcontext(0x0000)]
+        void ProgressChange([in] long Progress, [in] long ProgressMax);
+
+        [id(DISPID_DOWNLOADCOMPLETE), helpstring("Download of page complete."), helpcontext(0x0000)]
+        void DownloadComplete();
+
+        [id(DISPID_COMMANDSTATECHANGE), helpstring("The enabled state of a command changed"), helpcontext(0x0000)]
+        void CommandStateChange([in] long Command, [in] VARIANT_BOOL Enable);
+
+        [id(DISPID_DOWNLOADBEGIN), helpstring("Download of a page started."), helpcontext(0x000)]
+        void DownloadBegin();
+
+        [id(DISPID_NEWWINDOW), helpstring("Fired when a new window should be created."), helpcontext(0x0000)]
+        void NewWindow([in] BSTR URL, [in] long Flags, [in] BSTR TargetFrameName, [in] VARIANT * PostData, [in] BSTR Headers, [in,out] VARIANT_BOOL * Processed);
+
+        [id(DISPID_TITLECHANGE), helpstring("Document title changed."), helpcontext(0x0000)]
+        void TitleChange([in]BSTR Text);
+
+        [id(DISPID_FRAMEBEFORENAVIGATE), helpstring("Fired when a new hyperlink is being navigated to in a frame."), helpcontext(0x0000)]
+        void FrameBeforeNavigate([in] BSTR URL, long Flags, BSTR TargetFrameName, VARIANT * PostData, BSTR Headers, [in, out]VARIANT_BOOL * Cancel);
+
+        [id(DISPID_FRAMENAVIGATECOMPLETE), helpstring("Fired when a new hyperlink is being navigated to in a frame."), helpcontext(0x0000)]
+        void FrameNavigateComplete([in] BSTR URL );
+
+        [id(DISPID_FRAMENEWWINDOW), helpstring("Fired when a new window should be created."), helpcontext(0x0000)]
+        void FrameNewWindow([in] BSTR URL, [in] long Flags, [in] BSTR TargetFrameName, [in] VARIANT * PostData, [in] BSTR Headers, [in,out] VARIANT_BOOL * Processed);
+
+        // The following are IWebBrowserApp specific:
+        //
+        [id(DISPID_QUIT), helpstring("Fired when application is quiting."), helpcontext(0x0000)]
+        void Quit([in, out] VARIANT_BOOL * Cancel);
+
+        [id(DISPID_WINDOWMOVE), helpstring("Fired when window has been moved."), helpcontext(0x0000)]
+        void WindowMove();
+
+        [id(DISPID_WINDOWRESIZE), helpstring("Fired when window has been sized."), helpcontext(0x0000)]
+        void WindowResize();
+
+        [id(DISPID_WINDOWACTIVATE), helpstring("Fired when window has been activated."), helpcontext(0x0000)]
+        void WindowActivate();
+
+        [id(DISPID_PROPERTYCHANGE), helpstring("Fired when the PutProperty method has been called."), helpcontext(0x0000)]
+        void PropertyChange([in] BSTR Property);
+    }
+   */
+
+    enum CommandStateChangeConstants : uint {
+        CSC_UPDATECOMMANDS  = 0xFFFFFFFF,
+        CSC_NAVIGATEFORWARD = 0x00000001,
+        CSC_NAVIGATEBACK    = 0x00000002,
+    }
+
+    interface IWebBrowserApp : IWebBrowser
+    {
+        HRESULT Quit();
+
+        HRESULT ClientToWindow( int* pcx,  int* pcy);
+
+        HRESULT PutProperty( BSTR Property, VARIANT vtValue);
+        HRESULT GetProperty( BSTR Property, VARIANT *pvtValue);
+
+        HRESULT Name( BSTR* Name);
+
+        HRESULT HWND(LONG *pHWND);
+
+        HRESULT FullName( BSTR* FullName);
+
+        HRESULT Path( BSTR* Path);
+
+        HRESULT Visible( VARIANT_BOOL* pBool);
+        HRESULT Visible( VARIANT_BOOL Value);
+
+        HRESULT StatusBar( VARIANT_BOOL* pBool);
+        HRESULT StatusBar( VARIANT_BOOL Value);
+
+        HRESULT StatusText( BSTR *StatusText);
+        HRESULT StatusText( BSTR StatusText);
+
+        HRESULT ToolBar( int * Value);
+        HRESULT ToolBar( int Value);
+
+        HRESULT MenuBar( VARIANT_BOOL * Value);
+        HRESULT MenuBar( VARIANT_BOOL Value);
+
+        HRESULT FullScreen( VARIANT_BOOL * pbFullScreen);
+        HRESULT FullScreen( VARIANT_BOOL bFullScreen);
+    }
+
+    interface IWebBrowser2 : IWebBrowserApp
+    {
+        HRESULT Navigate2( VARIANT * URL,
+                          VARIANT * Flags,
+                          VARIANT * TargetFrameName,
+                          VARIANT * PostData,
+                          VARIANT * Headers);
+
+
+        HRESULT QueryStatusWB( OLECMDID cmdID,  OLECMDF * pcmdf);
+        HRESULT ExecWB( OLECMDID cmdID,  OLECMDEXECOPT cmdexecopt, VARIANT * pvaIn, VARIANT * pvaOut);
+        HRESULT ShowBrowserBar( VARIANT * pvaClsid,
+                                VARIANT * pvarShow,
+                                VARIANT * pvarSize );
+
+        HRESULT ReadyState(READYSTATE * plReadyState);
+
+        HRESULT Offline(VARIANT_BOOL * pbOffline);
+        HRESULT Offline( VARIANT_BOOL bOffline);
+
+        HRESULT Silent(VARIANT_BOOL * pbSilent);
+        HRESULT Silent(VARIANT_BOOL bSilent);
+
+        HRESULT RegisterAsBrowser(VARIANT_BOOL * pbRegister);
+        HRESULT RegisterAsBrowser(VARIANT_BOOL bRegister);
+
+        HRESULT RegisterAsDropTarget(VARIANT_BOOL * pbRegister);
+        HRESULT RegisterAsDropTarget(VARIANT_BOOL bRegister);
+
+        HRESULT TheaterMode(VARIANT_BOOL * pbRegister);
+        HRESULT TheaterMode(VARIANT_BOOL bRegister);
+
+        HRESULT AddressBar(VARIANT_BOOL * Value);
+        HRESULT AddressBar(VARIANT_BOOL Value);
+
+        HRESULT Resizable(VARIANT_BOOL * Value);
+        HRESULT Resizable(VARIANT_BOOL Value);
+    }
+
+	 /*
+    dispinterface DWebBrowserEvents2
+    {
+        properties:
+        methods:
+        [id(DISPID_STATUSTEXTCHANGE), helpstring("Statusbar text changed."), helpcontext(0x0000)]
+        void StatusTextChange([in]BSTR Text);
+
+        [id(DISPID_PROGRESSCHANGE), helpstring("Fired when download progress is updated."), helpcontext(0x0000)]
+        void ProgressChange([in] long Progress, [in] long ProgressMax);
+
+        [id(DISPID_COMMANDSTATECHANGE), helpstring("The enabled state of a command changed."), helpcontext(0x0000)]
+        void CommandStateChange([in] long Command, [in] VARIANT_BOOL Enable);
+
+        [id(DISPID_DOWNLOADBEGIN), helpstring("Download of a page started."), helpcontext(0x000)]
+        void DownloadBegin();
+
+        [id(DISPID_DOWNLOADCOMPLETE), helpstring("Download of page complete."), helpcontext(0x0000)]
+        void DownloadComplete();
+
+        [id(DISPID_TITLECHANGE), helpstring("Document title changed."), helpcontext(0x0000)]
+        void TitleChange([in] BSTR Text);
+
+        [id(DISPID_PROPERTYCHANGE), helpstring("Fired when the PutProperty method has been called."), helpcontext(0x0000)]
+        void PropertyChange([in] BSTR szProperty);
+
+        // New events for IE40:
+        //
+        [id(DISPID_BEFORENAVIGATE2), helpstring("Fired before navigate occurs in the given WebBrowser (window or frameset element). The processing of this navigation may be modified."), helpcontext(0x0000)]
+        void BeforeNavigate2([in] IDispatch* pDisp,
+                             [in] VARIANT * URL, [in] VARIANT * Flags, [in] VARIANT * TargetFrameName, [in] VARIANT * PostData, [in] VARIANT * Headers,
+                             [in,out] VARIANT_BOOL * Cancel);
+
+        [id(DISPID_NEWWINDOW2), helpstring("A new, hidden, non-navigated WebBrowser window is needed."), helpcontext(0x0000)]
+        void NewWindow2([in, out] IDispatch** ppDisp, [in, out] VARIANT_BOOL * Cancel);
+
+        [id(DISPID_NAVIGATECOMPLETE2), helpstring("Fired when the document being navigated to becomes visible and enters the navigation stack."), helpcontext(0x0000)]
+        void NavigateComplete2([in] IDispatch* pDisp, [in] VARIANT * URL );
+
+        [id(DISPID_DOCUMENTCOMPLETE), helpstring("Fired when the document being navigated to reaches ReadyState_Complete."), helpcontext(0x0000)]
+        void DocumentComplete([in] IDispatch* pDisp, [in] VARIANT * URL );
+
+        [id(DISPID_ONQUIT), helpstring("Fired when application is quiting."), helpcontext(0x0000)]
+        void OnQuit();
+
+        [id(DISPID_ONVISIBLE), helpstring("Fired when the window should be shown/hidden"), helpcontext(0x0000)]
+        void OnVisible([in] VARIANT_BOOL Visible);
+
+        [id(DISPID_ONTOOLBAR), helpstring("Fired when the toolbar  should be shown/hidden"), helpcontext(0x0000)]
+        void OnToolBar([in] VARIANT_BOOL ToolBar);
+
+        [id(DISPID_ONMENUBAR), helpstring("Fired when the menubar should be shown/hidden"), helpcontext(0x0000)]
+        void OnMenuBar([in] VARIANT_BOOL MenuBar);
+
+        [id(DISPID_ONSTATUSBAR), helpstring("Fired when the statusbar should be shown/hidden"), helpcontext(0x0000)]
+        void OnStatusBar([in] VARIANT_BOOL StatusBar);
+
+        [id(DISPID_ONFULLSCREEN), helpstring("Fired when fullscreen mode should be on/off"), helpcontext(0x0000)]
+        void OnFullScreen([in] VARIANT_BOOL FullScreen);
+
+        [id(DISPID_ONTHEATERMODE), helpstring("Fired when theater mode should be on/off"), helpcontext(0x0000)]
+        void OnTheaterMode([in] VARIANT_BOOL TheaterMode);
+    }
+    */
+
+    /*
+
+    [
+        uuid(EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B), // v.1 clsid CLSID_WebBrowser_V1
+        control,
+        helpstring("WebBrowser Control")
+    ]
+    coclass WebBrowser_V1
+    {
+                          interface     IWebBrowser2;
+        [default]         interface     IWebBrowser;
+        [source]          dispinterface DWebBrowserEvents2;
+        [default, source] dispinterface DWebBrowserEvents;
+    }
+
+    [
+        uuid(8856F961-340A-11D0-A96B-00C04FD705A2), // v.2 clsid CLSID_WebBrowser
+        control,
+        helpstring("WebBrowser Control")
+    ]
+    coclass WebBrowser
+    {
+        [default]         interface     IWebBrowser2;
+                          interface     IWebBrowser;
+        [default, source] dispinterface DWebBrowserEvents2;
+        [source]          dispinterface DWebBrowserEvents;
+    }
+
+    [
+        uuid(0002DF01-0000-0000-C000-000000000046), // CLSID_InternetExplorer
+        helpstring("Internet Explorer Application."),
+    ]
+    coclass InternetExplorer
+    {
+        [default]         interface     IWebBrowser2;
+                          interface     IWebBrowserApp;
+        [default, source] dispinterface DWebBrowserEvents2;
+        [source]          dispinterface DWebBrowserEvents;
+    }
+
+	 */
+
+
+    interface IFolderViewOC : IDispatch
+    {
+        HRESULT SetFolderView(IDispatch pdisp);
+    }
+
+    interface DShellFolderViewEvents
+    {
+        void SelectionChanged();
+    }
+
+/*    [
+        uuid(9BA05971-F6A8-11CF-A442-00A0C90A8F39), // CLSID_ShellFolderViewOC
+        helpstring("Shell Folder View Events Router."),
+        hidden
+    ]
+    coclass ShellFolderViewOC
+    {
+        [default]         interface     IFolderViewOC;
+        [default, source] dispinterface DShellFolderViewEvents;
+    }*/
+    enum ShellWindowTypeConstants {
+        SWC_EXPLORER    = 0x0,
+        SWC_BROWSER     = 0x00000001,
+        SWC_3RDPARTY    = 0x00000002,
+        SWC_CALLBACK    = 0x00000004,
+    }
+
+    enum ShellWindowFindWindowOptions {
+        SWFO_NEEDDISPATCH   = 0x00000001,
+        SWFO_INCLUDEPENDING = 0x00000002,
+        SWFO_COOKIEPASSED   = 0x00000004,
+    }
+
+    interface DShellWindowsEvents
+    {
+        void WindowRegistered(LONG lCookie);
+
+        void WindowRevoked(LONG lCookie);
+    }
+
+    interface IShellWindows : IDispatch
+    {
+        //Properties
+        HRESULT Count(LONG *Count);
+
+        HRESULT Item(VARIANT index, IDispatch *Folder);
+
+        HRESULT _NewEnum(IUnknown *ppunk);
+
+        // Some private hidden members to allow shell windows to add and
+        // remove themself from the list.  We mark them hidden to keep
+        // random VB apps from trying to Register...
+        HRESULT Register( IDispatch pid,
+                         LONG hwnd,
+                         int swClass,
+                         LONG *plCookie);
+
+        HRESULT RegisterPending(LONG lThreadId,
+                         VARIANT* pvarloc,     // will hold pidl that is being opened.
+                         VARIANT* pvarlocRoot, // Optional root pidl
+                         int swClass,
+                         LONG *plCookie);
+
+        HRESULT Revoke(LONG lCookie);
+        // As an optimization, each window notifies the new location
+        // only when
+        //  (1) it's being deactivated
+        //  (2) getFullName is called (we overload it to force update)
+        HRESULT OnNavigate(LONG lCookie, VARIANT* pvarLoc);
+        HRESULT OnActivated(LONG lCookie, VARIANT_BOOL fActive);
+        HRESULT FindWindow(VARIANT* pvarLoc,
+                           VARIANT* pvarLocRoot,
+                           int swClass,
+                           LONG * phwnd,
+                            int swfwOptions,
+                           IDispatch* ppdispOut);
+        HRESULT OnCreated(LONG lCookie,IUnknown punk);
+
+        HRESULT ProcessAttachDetach(VARIANT_BOOL fAttach);
+    }
+
+	 /*
+    [
+        uuid(9BA05972-F6A8-11CF-A442-00A0C90A8F39),     // CLSID_ShellWindows
+        helpstring("ShellDispatch Load in Shell Context")
+    ]
+    coclass ShellWindows
+    {
+        [default] interface IShellWindows;
+        [default, source] dispinterface DShellWindowsEvents;
+    }
+    */
+
+    /*
+
+    [
+        uuid(88A05C00-F000-11CE-8350-444553540000), // IID_IShellLinkDual
+        helpstring("Definition of Shell Link IDispatch interface"),
+        oleautomation,
+        dual,
+        odl,
+        hidden,
+    ]
+    interface IShellLinkDual : IDispatch
+    {
+        [propget, helpstring("Get the path of the link")]
+        HRESULT Path([out, retval] BSTR *pbs);
+
+        [propput, helpstring("Set the path of the link")]
+        HRESULT Path([in] BSTR bs);
+
+        [propget, helpstring("Get the description for the link")]
+        HRESULT Description([out, retval] BSTR *pbs);
+
+        [propput, helpstring("Set the description for the link")]
+        HRESULT Description([in] BSTR bs);
+
+        [propget, helpstring("Get the working directory for the link")]
+        HRESULT WorkingDirectory([out, retval] BSTR *pbs);
+
+        [propput, helpstring("Set the working directory for the link")]
+        HRESULT WorkingDirectory([in] BSTR bs);
+
+        [propget, helpstring("Get the arguments for the link")]
+        HRESULT Arguments([out, retval] BSTR *pbs);
+
+        [propput, helpstring("Set the arguments for the link")]
+        HRESULT Arguments([in] BSTR bs);
+
+
+        [propget, helpstring("Get the Hotkey for the link")]
+        HRESULT Hotkey([out, retval] int *piHK);
+
+        [propput, helpstring("Set the Hotkey for the link")]
+        HRESULT Hotkey([in] int iHK);
+
+        [propget, helpstring("Get the Show Command for the link")]
+        HRESULT ShowCommand([out, retval] int *piShowCommand);
+
+        [propput, helpstring("Set the Show Command for the link")]
+        HRESULT ShowCommand([in] int iShowCommand);
+
+        // STDMETHOD(SetRelativePath)(THIS_ LPCSTR pszPathRel, DWORD dwReserved) PURE;
+        //Methods
+        [helpstring("Tell the link to resolve itself")]
+        HRESULT Resolve([in] int fFlags);
+
+        [helpstring("Get the IconLocation for the link")]
+        HRESULT GetIconLocation([out] BSTR *pbs, [out,retval] int *piIcon);
+
+        [helpstring("Set the IconLocation for the link")]
+        HRESULT SetIconLocation([in] BSTR bs, [in] int iIcon);
+
+        [helpstring("Tell the link to save the changes")]
+        HRESULT Save ([in, optional] VARIANT vWhere);
+    }
+
+    [
+        uuid(11219420-1768-11d1-95BE-00609797EA4F), // CLSID_ShellLinkObject
+        helpstring("Shell Link object")
+    ]
+    coclass ShellLinkObject // funny name so we don't conflict with CLSID_ShellLink
+    {
+        [default] interface IShellLinkDual;
+    }
+
+    [
+        uuid(08EC3E00-50B0-11CF-960C-0080C7F4EE85), // IID_FolderItemVerb
+        helpstring("Definition of interface FolderItemVerb"),
+        oleautomation,
+        dual,
+        odl,
+    ]
+    interface FolderItemVerb : IDispatch
+    {
+        [propget, helpstring("Get Application object")]
+        HRESULT Application ([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("Get Parent object")]
+        HRESULT Parent([out, retval] IDispatch **ppid);
+
+        [id(0), propget, helpstring("Get display name for item")]
+        HRESULT Name([out, retval] BSTR *pbs);
+
+        [helpstring("Execute the verb")]
+        HRESULT DoIt();
+    }
+
+    [
+        uuid(1F8352C0-50B0-11CF-960C-0080C7F4EE85), // IID_FolderItemVerbs
+        helpstring("Definition of interface FolderItemVerbs"),
+        oleautomation,
+        dual,
+        odl,
+    ]
+    interface FolderItemVerbs : IDispatch
+    {
+        //Properties
+        [propget, helpstring("Get count of open folder windows")]
+        HRESULT Count([out, retval] long *plCount);
+
+        [propget, helpstring("Get Application object")]
+        HRESULT Application ([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("Get Parent object")]
+        HRESULT Parent([out, retval] IDispatch **ppid);
+
+        //Methods
+        //Standard Methods
+        [helpstring("Return the specified verb")]
+        HRESULT Item([in,optional] VARIANT index, [out, retval]FolderItemVerb **ppid);
+
+        [id(-4), helpstring("Enumerates the figures")]
+        HRESULT _NewEnum([out, retval] IUnknown **ppunk);
+    }
+
+    interface Folder;   // forward reference
+
+    [
+        uuid(FAC32C80-CBE4-11CE-8350-444553540000), // IID_FolderItem
+        helpstring("Definition of interface FolderItem"),
+        oleautomation,
+        dual,
+        odl,
+    ]
+    interface FolderItem : IDispatch
+    {
+        [propget, helpstring("Get Application object")]
+        HRESULT Application ([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("Get Parent object")]
+        HRESULT Parent([out, retval] IDispatch **ppid);
+
+        [id(0), propget, helpstring("Get display name for item")]
+        HRESULT Name([out, retval] BSTR *pbs);
+
+        [id(0), propput, helpstring("Set the name for the item")]
+        HRESULT Name([in] BSTR bs);
+
+        [propget, helpstring("Get the pathname to the item")]
+        HRESULT Path([out, retval]BSTR *pbs);
+
+        [propget, helpstring("If item is link return link object")]
+        HRESULT GetLink([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("If item is a folder return folder object")]
+        HRESULT GetFolder([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("Is the item a link?")]
+        HRESULT IsLink([out, retval] VARIANT_BOOL *pb);
+
+        [propget, helpstring("Is the item a Folder?")]
+        HRESULT IsFolder([out, retval] VARIANT_BOOL *pb);
+
+        [propget, helpstring("Is the item a file system object?")]
+        HRESULT IsFileSystem([out, retval] VARIANT_BOOL *pb);
+
+        [propget, helpstring("Is the item browsable?")]
+        HRESULT IsBrowsable([out, retval] VARIANT_BOOL *pb);
+
+        [propget, helpstring("Modification Date?")]
+        HRESULT ModifyDate([out, retval] DATE *pdt);
+
+        [propput, helpstring("Modification Date?")]
+        HRESULT ModifyDate([in] DATE dt);
+
+        [propget, helpstring("Size")]
+        HRESULT Size([out, retval] LONG *pul);
+
+        [propget, helpstring("Type")]
+        HRESULT Type([out, retval] BSTR *pbs);
+
+        [helpstring("Get the list of verbs for the object")]
+        HRESULT Verbs([out, retval] FolderItemVerbs **ppfic);
+
+        [helpstring("Execute a command on the item")]
+        HRESULT InvokeVerb([in,optional] VARIANT vVerb);
+    }
+
+    [
+        uuid(744129E0-CBE5-11CE-8350-444553540000), // IID_FolderItems
+        helpstring("Definition of interface FolderItems"),
+        oleautomation,
+        dual,
+        odl,
+    ]
+    interface FolderItems : IDispatch
+    {
+        //Properties
+        [propget, helpstring("Get count of items in the folder")]
+        HRESULT Count([out, retval] long *plCount);
+
+        [propget, helpstring("Get Application object")]
+        HRESULT Application ([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("Get Parent object")]
+        HRESULT Parent([out, retval] IDispatch **ppid);
+
+        //Methods
+        //Standard Methods
+        [helpstring("Return the figure for the given index")]
+        HRESULT Item([in,optional] VARIANT index, [out, retval]FolderItem **ppid);
+
+        [id(-4), helpstring("Enumerates the figures")]
+        HRESULT _NewEnum([out, retval] IUnknown **ppunk);
+    }
+
+    [
+        uuid(BBCBDE60-C3FF-11CE-8350-444553540000), // IID_Folder
+        helpstring("Definition of interface Folder"),
+        oleautomation,
+        dual,
+        odl,
+    ]
+    interface Folder : IDispatch
+    {
+        //Properties
+        [id(0), propget, helpstring("Get the display name for the window")]
+        HRESULT Title([out, retval] BSTR *pbs);
+
+        [propget, helpstring("Get Application object")]
+        HRESULT Application ([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("Get Parent object")]
+        HRESULT Parent([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("Get Parent object")]
+        HRESULT ParentFolder([out, retval] Folder **ppsf);
+
+        //Methods
+        [helpstring("The collection of Items in folder")]
+        HRESULT Items([out, retval] FolderItems **ppid);
+
+        [helpstring("Parse the name to get an item.")]
+        HRESULT ParseName([in] BSTR bName, [out, retval] FolderItem **ppid);
+
+        [helpstring("Create a new sub folder in this folder.")]
+        HRESULT NewFolder([in] BSTR bName, [in, optional] VARIANT vOptions);
+
+        [helpstring("Move Items to this folder.")]
+        HRESULT MoveHere([in] VARIANT vItem, [in, optional] VARIANT vOptions);
+
+        [helpstring("Copy Items to this folder.")]
+        HRESULT CopyHere([in] VARIANT vItem, [in, optional] VARIANT vOptions);
+
+        [helpstring("Get the details about an item.")]
+        HRESULT GetDetailsOf([in] VARIANT vItem, [in] int iColumn, [out, retval]BSTR *pbs);
+    }
+
+    [
+        uuid(E7A1AF80-4D96-11CF-960C-0080C7F4EE85), // IID_IShellFolderViewDual
+        helpstring("definition of interface IShellFolderViewDual"),
+        oleautomation,
+        hidden,
+        dual,
+        odl,
+    ]
+    interface IShellFolderViewDual : IDispatch
+    {
+        [propget, helpstring("Get Application object")]
+        HRESULT Application([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("Get Parent object")]
+        HRESULT Parent([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("Get the folder being viewed")]
+        HRESULT Folder([out, retval] Folder **ppid);
+
+        [helpstring("The collection of Selected Items in folder")]
+        HRESULT SelectedItems([out, retval] FolderItems **ppid);
+
+        [propget, helpstring("The currently focused item in the folder")]
+        HRESULT FocusedItem([out, retval] FolderItem **ppid);
+
+        [helpstring("Select the item")]
+        HRESULT SelectItem([in]VARIANT *pvfi, [in] int dwFlags);
+
+        [helpstring("Show items menu and return command selected")]
+        HRESULT PopupItemMenu([in]FolderItem *pfi, [in, optional]VARIANT vx, [in, optional]VARIANT vy, [out, retval] BSTR *pbs);
+
+        [propget, helpstring("Returns the scripting automation model."), helpcontext(0x0000)]
+        HRESULT Script([out,retval] IDispatch** ppDisp);
+
+        [propget, helpstring("Returns the view options for showing a folder."), helpcontext(0x0000)]
+        HRESULT ViewOptions([out,retval] long * plViewOptions);
+    }
+
+    [
+        uuid(62112AA1-EBE4-11cf-A5FB-0020AFE7292D),  // CLSID_ShellFolderView
+        helpstring("Shell Folder View Object")
+    ]
+    coclass ShellFolderView
+    {
+        [default] interface IShellFolderViewDual;
+        [source,default] dispinterface DShellFolderViewEvents;
+    }
+
+    typedef
+    [
+        uuid(742A99A0-C77E-11D0-A32C-00A0C91EEDBA),
+        helpstring("Constants for ViewOptions")
+    ]
+    enum ShellFolderViewOptions {
+        [helpstring("Show All Objects")]                        SFVVO_SHOWALLOBJECTS = 0x00000001,
+        [helpstring("Show File Extensions")]                    SFVVO_SHOWEXTENSIONS = 0x00000002,
+        [helpstring("Color encode Compressed files")]           SFVVO_SHOWCOMPCOLOR = 0x00000008,
+        [helpstring("Show System Files")]                       SFVVO_SHOWSYSFILES = 0x00000020,
+        [helpstring("Use Windows 95 UI settings")]              SFVVO_WIN95CLASSIC = 0x00000040,
+        [helpstring("User needs to double click in web View")]  SFVVO_DOUBLECLICKINWEBVIEW = 0x00000080,
+        [helpstring("Is Desktop HTML enabled")]                 SFVVO_DESKTOPHTML = 0x00000200,
+    } ShellFolderViewOptions;
+
+    [
+        uuid(D8F015C0-C278-11CE-A49E-444553540000), // IID_IShellDispatch
+        helpstring("Definition of interface IShellDispatch"),
+        oleautomation,
+        hidden,
+        dual,
+        odl,
+    ]
+    interface IShellDispatch : IDispatch
+    {
+        [propget, helpstring("Get Application object")]
+        HRESULT Application ([out, retval] IDispatch **ppid);
+
+        [propget, helpstring("Get Parent object")]
+        HRESULT Parent([out, retval] IDispatch **ppid);
+
+        //=========================================================
+        // Name Space methods and properties
+
+        [helpstring("Enum the contents of a folder")]
+        HRESULT NameSpace([in] VARIANT vDir, [out, retval] Folder **ppsdf);
+
+        [helpstring("Browse the name space for a Folder")]
+        HRESULT BrowseForFolder([in] long Hwnd,
+            [in] BSTR Title,
+            [in] long Options,
+            [in,optional] VARIANT RootFolder,
+            [out, retval] FOLDER **ppsdf);
+
+        [helpstring("The collection of open folder windows")]
+        HRESULT Windows([out, retval] IDispatch **ppid);
+
+        [helpstring("Open a folder")]
+        HRESULT Open([in] VARIANT vDir);
+
+        [helpstring("Explore a folder")]
+        HRESULT Explore([in] VARIANT vDir);
+
+        [helpstring("Minimize all windows")]
+        HRESULT MinimizeAll(void);
+
+        [helpstring("Undo Minimize All")]
+        HRESULT UndoMinimizeALL(void);
+
+        [helpstring("Bring up the file run")]
+        HRESULT FileRun(void);
+
+        [helpstring("Cascade Windows")]
+        HRESULT CascadeWindows(void);
+
+        [helpstring("Tile windows vertically")]
+        HRESULT TileVertically(void);
+
+        [helpstring("Tile windows horizontally")]
+        HRESULT TileHorizontally(void);
+
+        [helpstring("Exit Windows")]
+        HRESULT ShutdownWindows(void);
+
+        [helpstring("Suspend the pc")]
+        HRESULT Suspend(void);
+
+        [helpstring("Eject the pc")]
+        HRESULT EjectPC(void);
+
+        [helpstring("Bring up the Set time dialog")]
+        HRESULT SetTime(void);
+
+        [helpstring("Handle Tray properties")]
+        HRESULT TrayProperties(void);
+
+        [helpstring("Display shell help")]
+        HRESULT Help(void);
+
+        [helpstring("Find Files")]
+        HRESULT FindFiles(void);
+
+        [helpstring("Find a computer")]
+        HRESULT FindComputer(void);
+
+        [helpstring("Refresh the menu")]
+        HRESULT RefreshMenu(void);
+
+        [helpstring("Run a controlpanelItem")]
+        HRESULT ControlPanelItem([in] BSTR szDir);
+    }
+
+    [
+        uuid(13709620-C279-11CE-A49E-444553540000), // CLSID_Shell
+        helpstring("Shell Object Type Information")
+    ]
+    coclass Shell
+    {
+        [default] interface IShellDispatch;
+    }
+
+    [
+        uuid(0A89A860-D7B1-11CE-8350-444553540000), // CLSID_ShellDispatchInproc
+        helpstring("ShellDispatch Load in Shell Context"),
+        hidden
+    ]
+    coclass ShellDispatchInproc
+    {
+        interface IUnknown;
+    }
+
+    [
+        uuid(1820FED0-473E-11D0-A96C-00C04FD705A2),     // CLSID_WebViewFolderContents
+        hidden
+    ]
+    coclass WebViewFolderContents
+    {
+        [default] interface IShellFolderViewDual;
+        [source,default] dispinterface DShellFolderViewEvents;
+    }
+
+    typedef
+    [
+        uuid(CA31EA20-48D0-11CF-8350-444553540000),
+        helpstring("Constants for Special Folders for open/Explore")
+    ]
+    enum ShellSpecialFolderConstants    {
+        [helpstring("Special Folder DESKTOP")]      ssfDESKTOP = 0x0000,
+        [helpstring("Special Folder PROGRAMS")]     ssfPROGRAMS = 0x0002,
+        [helpstring("Special Folder CONTROLS")]     ssfCONTROLS = 0x0003,
+        [helpstring("Special Folder PRINTERS")]     ssfPRINTERS = 0x0004,
+        [helpstring("Special Folder PERSONAL")]     ssfPERSONAL = 0x0005,
+        [helpstring("Special Folder FAVORITES")]    ssfFAVORITES = 0x0006,
+        [helpstring("Special Folder STARTUP")]      ssfSTARTUP = 0x0007,
+        [helpstring("Special Folder RECENT")]       ssfRECENT = 0x0008,
+        [helpstring("Special Folder SENDTO")]       ssfSENDTO = 0x0009,
+        [helpstring("Special Folder BITBUCKET")]    ssfBITBUCKET = 0x000a,
+        [helpstring("Special Folder STARTMENU")]    ssfSTARTMENU = 0x000b,
+        [helpstring("Special Folder DESKTOPDIRECTORY")]    ssfDESKTOPDIRECTORY = 0x0010,
+        [helpstring("Special Folder DRIVES")]       ssfDRIVES = 0x0011,
+        [helpstring("Special Folder NETWORK")]      ssfNETWORK = 0x0012,
+        [helpstring("Special Folder NETHOOD")]      ssfNETHOOD = 0x0013,
+        [helpstring("Special Folder FONTS")]        ssfFONTS = 0x0014,
+        [helpstring("Special Folder TEMPLATES")]    ssfTEMPLATES = 0x0015,
+    } ShellSpecialFolderConstants;
+
+    [
+        uuid(729FE2F8-1EA8-11d1-8F85-00C04FC2FBE1),     // IID_IShellUIHelper
+        helpstring("Shell UI Helper Control Interface"),
+        oleautomation, dual
+    ]
+    interface IShellUIHelper : IDispatch
+    {
+        [hidden, id(DISPID_RESETFIRSTBOOTMODE)] HRESULT ResetFirstBootMode();
+        [hidden, id(DISPID_RESETSAFEMODE)] HRESULT ResetSafeMode();
+        [hidden, id(DISPID_REFRESHOFFLINEDESKTOP)] HRESULT RefreshOfflineDesktop();
+        [id(DISPID_ADDFAVORITE)] HRESULT AddFavorite([in] BSTR URL, [optional, in] VARIANT *Title);
+        [id(DISPID_ADDCHANNEL)] HRESULT AddChannel([in] BSTR URL);
+        [id(DISPID_ADDDESKTOPCOMPONENT)] HRESULT AddDesktopComponent([in] BSTR URL, [in] BSTR Type,
+            [optional, in] VARIANT *Left,
+            [optional, in] VARIANT *Top,
+            [optional, in] VARIANT *Width,
+            [optional, in] VARIANT *Height);
+        [id(DISPID_ISSUBSCRIBED)] HRESULT IsSubscribed([in] BSTR URL, [out,retval] VARIANT_BOOL* pBool);
+    }
+    [
+        uuid(64AB4BB7-111E-11d1-8F79-00C04FC2FBE1)  // CLSID_ShellUIHelper
+    ]
+    coclass ShellUIHelper
+    {
+        [default] interface IShellUIHelper;
+    }
+*/
+}  // extern (Windows)
+
--- a/dwt/internal/ole/win32/MSHTMHST.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/ole/win32/MSHTMHST.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,209 +1,209 @@
-module dwt.internal.ole.win32.MSHTMHST;
-//+------------------------------------------------------------------------
-//
-//  Microsoft Forms
-//  Copyright 1996 - 1998 Microsoft Corporation.
-//
-//  File:       mshtmhst.idl
-//
-//  Contents:   MSHTML advanced host interfaces
-//
-//-------------------------------------------------------------------------
-
-//private import std.c.windows.windows;
-//private import std.c.windows.com;
-import dwt.internal.win32.OS;
-
-//import win32.oleextra;
-private import dwt.internal.ole.win32.extras;
-private import dwt.internal.ole.win32.OAIDL;
-private import dwt.internal.ole.win32.OBJIDL;
-private import dwt.internal.ole.win32.OLEIDL;
-private import dwt.internal.ole.win32.DOCOBJ;
-
-extern( Windows ) {
-/*
-cpp_quote("#define CONTEXT_MENU_DEFAULT        0")
-cpp_quote("#define CONTEXT_MENU_IMAGE          1")
-cpp_quote("#define CONTEXT_MENU_CONTROL        2")
-cpp_quote("#define CONTEXT_MENU_TABLE          3")
-cpp_quote("// in browse mode")
-cpp_quote("#define CONTEXT_MENU_TEXTSELECT     4")
-cpp_quote("#define CONTEXT_MENU_ANCHOR         5")
-cpp_quote("#define CONTEXT_MENU_UNKNOWN        6")
-cpp_quote("//;begin_internal")
-cpp_quote("// These 2 are mapped to IMAGE for the public")
-cpp_quote("#define CONTEXT_MENU_IMGDYNSRC      7")
-cpp_quote("#define CONTEXT_MENU_IMGART         8")
-cpp_quote("#define CONTEXT_MENU_DEBUG          9")
-cpp_quote("//;end_internal")
-
-cpp_quote("#define MENUEXT_SHOWDIALOG           0x1")
-
-cpp_quote("#define DOCHOSTUIFLAG_BROWSER       DOCHOSTUIFLAG_DISABLE_HELP_MENU | DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE ")
-
-import "ocidl.idl";
-import "objidl.idl";
-import "oleidl.idl";
-import "oaidl.idl";
-import "docobj.idl";
-import "mshtml.idl";
-
-cpp_quote("EXTERN_C const GUID CGID_MSHTML;")
-cpp_quote("#define CMDSETID_Forms3 CGID_MSHTML")
-cpp_quote("#define SZ_HTML_CLIENTSITE_OBJECTPARAM L\"{d4db6850-5385-11d0-89e9-00a0c90a90ac}\"")
-#pragma midl_echo("typedef HRESULT STDAPICALLTYPE SHOWHTMLDIALOGFN (HWND hwndParent, IMoniker *pmk, VARIANT *pvarArgIn, TCHAR* pchOptions, VARIANT *pvArgOut);")
-#pragma midl_echo("STDAPI ShowHTMLDialog(                   ")
-#pragma midl_echo("    HWND        hwndParent,              ")
-#pragma midl_echo("    IMoniker *  pMk,                     ")
-#pragma midl_echo("    VARIANT *   pvarArgIn,               ")
-#pragma midl_echo("    TCHAR *     pchOptions,              ")
-#pragma midl_echo("    VARIANT *   pvarArgOut               ")
-#pragma midl_echo("    );                                   ")
-*/
-
-//-------------------------------------------------------------------------
-//  IDocHostUIHandler
-//
-//-------------------------------------------------------------------------
-
-enum DOCHOSTUITYPE {
-        DOCHOSTUITYPE_BROWSE    = 0,
-        DOCHOSTUITYPE_AUTHOR    = 1,
-        BROWSE    = 0,
-        AUTHOR    = 1,
-}
-
-enum DOCHOSTUIDBLCLK {
-        DOCHOSTUIDBLCLK_DEFAULT         = 0,
-        DOCHOSTUIDBLCLK_SHOWPROPERTIES  = 1,
-        DOCHOSTUIDBLCLK_SHOWCODE        = 2,
-
-        DEFAULT         = 0,
-        SHOWPROPERTIES  = 1,
-        SHOWCODE        = 2,
-}
-
-enum DOCHOSTUIFLAG {
-        DOCHOSTUIFLAG_DIALOG            = 1,
-        DOCHOSTUIFLAG_DISABLE_HELP_MENU = 2,
-        DOCHOSTUIFLAG_NO3DBORDER        = 4,
-        DOCHOSTUIFLAG_SCROLL_NO         = 8,
-        DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 16,
-        DOCHOSTUIFLAG_OPENNEWWIN        = 32,
-        DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 64,
-        DOCHOSTUIFLAG_FLAT_SCROLLBAR = 128,
-        DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 256,
-        DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 512,
-        DOCHOSTUIFLAG_DISABLE_COOKIE = 1024,
-//
-//  DOCHOSTUIFLAG.name versions
-//
-        DIALOG            = 1,
-        DISABLE_HELP_MENU = 2,
-        NO3DBORDER        = 4,
-        SCROLL_NO         = 8,
-        DISABLE_SCRIPT_INACTIVE = 16,
-        OPENNEWWIN        = 32,
-        DISABLE_OFFSCREEN = 64,
-        FLAT_SCROLLBAR = 128,
-        DIV_BLOCKDEFAULT = 256,
-        ACTIVATE_CLIENTHIT_ONLY = 512,
-        DISABLE_COOKIE = 1024,
-}
-/* polute the global namespace */
-enum {
-        DOCHOSTUITYPE_BROWSE    = 0,
-        DOCHOSTUITYPE_AUTHOR    = 1,
-
-        DOCHOSTUIDBLCLK_DEFAULT         = 0,
-        DOCHOSTUIDBLCLK_SHOWPROPERTIES  = 1,
-        DOCHOSTUIDBLCLK_SHOWCODE        = 2,
-
-       DOCHOSTUIFLAG_DIALOG            = 1,
-        DOCHOSTUIFLAG_DISABLE_HELP_MENU = 2,
-        DOCHOSTUIFLAG_NO3DBORDER        = 4,
-        DOCHOSTUIFLAG_SCROLL_NO         = 8,
-        DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 16,
-        DOCHOSTUIFLAG_OPENNEWWIN        = 32,
-        DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 64,
-        DOCHOSTUIFLAG_FLAT_SCROLLBAR = 128,
-        DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 256,
-        DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 512,
-        DOCHOSTUIFLAG_DISABLE_COOKIE = 1024,
-}
-
-struct DOCHOSTUIINFO
-{
-	ULONG cbSize;
-	DWORD dwFlags;
-	DWORD dwDoubleClick;
-}
-
-interface IDocHostUIHandler : IUnknown
-{
-	HRESULT ShowContextMenu( DWORD dwID, POINT* ppt, IUnknown pcmdtReserved, IDispatch pdispReserved);
-	HRESULT GetHostInfo( DOCHOSTUIINFO * pInfo );
-	HRESULT ShowUI( DWORD dwID, IOleInPlaceActiveObject pActiveObject, IOleCommandTarget pCommandTarget, IOleInPlaceFrame pFrame, IOleInPlaceUIWindow pDoc );
-	HRESULT HideUI();
-	HRESULT UpdateUI();
-	HRESULT EnableModeless( BOOL fEnable );
-	HRESULT OnDocWindowActivate( BOOL fActivate );
-	HRESULT OnFrameWindowActivate( BOOL fActivate );
-	HRESULT ResizeBorder(LPRECT prcBorder, IOleInPlaceUIWindow pUIWindow, BOOL fRameWindow );
-	HRESULT TranslateAccelerator( LPMSG lpMsg, GUID * pguidCmdGroup, DWORD nCmdID );
-	HRESULT GetOptionKeyPath( LPOLESTR * pchKey, DWORD dw );
-	HRESULT GetDropTarget( IDropTarget pDropTarget, IDropTarget * ppDropTarget );
-	HRESULT GetExternal( IDispatch * ppDispatch );
-	HRESULT TranslateUrl( DWORD dwTranslate, OLECHAR * pchURLIn, OLECHAR ** ppchURLOut );
-	HRESULT FilterDataObject( IDataObject pDO, IDataObject * ppDORet );
-}
-
-
-//-------------------------------------------------------------------------
-//  ICustomDoc
-//
-//-------------------------------------------------------------------------
-
-interface ICustomDoc : IUnknown
-{
-	HRESULT SetUIHandler( IDocHostUIHandler pUIHandler );
-}
-
-//-------------------------------------------------------------------------
-//  IDocHostShowUI
-//
-//-------------------------------------------------------------------------
-
-interface IDocHostShowUI : IUnknown
-{
-	HRESULT ShowMessage( HWND hwnd, LPOLESTR lpstrText, LPOLESTR lpstrCaption, DWORD dwType, LPOLESTR lpstrHelpFile, DWORD dwHelpContext, LRESULT * plResult);
-	HRESULT ShowHelp( HWND hwnd, LPOLESTR pszHelpFile, UINT uCommand, DWORD dwData, POINT ptMouse, IDispatch pDispatchObjectHit );
-}
-
-/*
-
-//-------------------------------------------------------------------------
-//  ICSSFilterSite
-//
-//-------------------------------------------------------------------------
-interface ICSSFilterSite : IUnknown
-{
-	HRESULT GetElement( IHTMLElement * ppElem );
-	HRESULT FireOnFilterChangeEvent();
-}
-
-
-//-------------------------------------------------------------------------
-//  ICSSFilter
-//
-//-------------------------------------------------------------------------
-interface ICSSFilter : IUnknown
-{
-	HRESULT SetSite( ICSSFilterSite * pSink );
-	HRESULT OnAmbientPropertyChange( LONG dispid );
-}
-
-*/
-
-} // extern( Windows )
+module dwt.internal.ole.win32.MSHTMHST;
+//+------------------------------------------------------------------------
+//
+//  Microsoft Forms
+//  Copyright 1996 - 1998 Microsoft Corporation.
+//
+//  File:       mshtmhst.idl
+//
+//  Contents:   MSHTML advanced host interfaces
+//
+//-------------------------------------------------------------------------
+
+//private import std.c.windows.windows;
+//private import std.c.windows.com;
+import dwt.internal.win32.OS;
+
+//import win32.oleextra;
+private import dwt.internal.ole.win32.extras;
+private import dwt.internal.ole.win32.OAIDL;
+private import dwt.internal.ole.win32.OBJIDL;
+private import dwt.internal.ole.win32.OLEIDL;
+private import dwt.internal.ole.win32.DOCOBJ;
+
+extern( Windows ) {
+/*
+cpp_quote("#define CONTEXT_MENU_DEFAULT        0")
+cpp_quote("#define CONTEXT_MENU_IMAGE          1")
+cpp_quote("#define CONTEXT_MENU_CONTROL        2")
+cpp_quote("#define CONTEXT_MENU_TABLE          3")
+cpp_quote("// in browse mode")
+cpp_quote("#define CONTEXT_MENU_TEXTSELECT     4")
+cpp_quote("#define CONTEXT_MENU_ANCHOR         5")
+cpp_quote("#define CONTEXT_MENU_UNKNOWN        6")
+cpp_quote("//;begin_internal")
+cpp_quote("// These 2 are mapped to IMAGE for the public")
+cpp_quote("#define CONTEXT_MENU_IMGDYNSRC      7")
+cpp_quote("#define CONTEXT_MENU_IMGART         8")
+cpp_quote("#define CONTEXT_MENU_DEBUG          9")
+cpp_quote("//;end_internal")
+
+cpp_quote("#define MENUEXT_SHOWDIALOG           0x1")
+
+cpp_quote("#define DOCHOSTUIFLAG_BROWSER       DOCHOSTUIFLAG_DISABLE_HELP_MENU | DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE ")
+
+import "ocidl.idl";
+import "objidl.idl";
+import "oleidl.idl";
+import "oaidl.idl";
+import "docobj.idl";
+import "mshtml.idl";
+
+cpp_quote("EXTERN_C const GUID CGID_MSHTML;")
+cpp_quote("#define CMDSETID_Forms3 CGID_MSHTML")
+cpp_quote("#define SZ_HTML_CLIENTSITE_OBJECTPARAM L\"{d4db6850-5385-11d0-89e9-00a0c90a90ac}\"")
+#pragma midl_echo("typedef HRESULT STDAPICALLTYPE SHOWHTMLDIALOGFN (HWND hwndParent, IMoniker *pmk, VARIANT *pvarArgIn, TCHAR* pchOptions, VARIANT *pvArgOut);")
+#pragma midl_echo("STDAPI ShowHTMLDialog(                   ")
+#pragma midl_echo("    HWND        hwndParent,              ")
+#pragma midl_echo("    IMoniker *  pMk,                     ")
+#pragma midl_echo("    VARIANT *   pvarArgIn,               ")
+#pragma midl_echo("    TCHAR *     pchOptions,              ")
+#pragma midl_echo("    VARIANT *   pvarArgOut               ")
+#pragma midl_echo("    );                                   ")
+*/
+
+//-------------------------------------------------------------------------
+//  IDocHostUIHandler
+//
+//-------------------------------------------------------------------------
+
+enum DOCHOSTUITYPE {
+        DOCHOSTUITYPE_BROWSE    = 0,
+        DOCHOSTUITYPE_AUTHOR    = 1,
+        BROWSE    = 0,
+        AUTHOR    = 1,
+}
+
+enum DOCHOSTUIDBLCLK {
+        DOCHOSTUIDBLCLK_DEFAULT         = 0,
+        DOCHOSTUIDBLCLK_SHOWPROPERTIES  = 1,
+        DOCHOSTUIDBLCLK_SHOWCODE        = 2,
+
+        DEFAULT         = 0,
+        SHOWPROPERTIES  = 1,
+        SHOWCODE        = 2,
+}
+
+enum DOCHOSTUIFLAG {
+        DOCHOSTUIFLAG_DIALOG            = 1,
+        DOCHOSTUIFLAG_DISABLE_HELP_MENU = 2,
+        DOCHOSTUIFLAG_NO3DBORDER        = 4,
+        DOCHOSTUIFLAG_SCROLL_NO         = 8,
+        DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 16,
+        DOCHOSTUIFLAG_OPENNEWWIN        = 32,
+        DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 64,
+        DOCHOSTUIFLAG_FLAT_SCROLLBAR = 128,
+        DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 256,
+        DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 512,
+        DOCHOSTUIFLAG_DISABLE_COOKIE = 1024,
+//
+//  DOCHOSTUIFLAG.name versions
+//
+        DIALOG            = 1,
+        DISABLE_HELP_MENU = 2,
+        NO3DBORDER        = 4,
+        SCROLL_NO         = 8,
+        DISABLE_SCRIPT_INACTIVE = 16,
+        OPENNEWWIN        = 32,
+        DISABLE_OFFSCREEN = 64,
+        FLAT_SCROLLBAR = 128,
+        DIV_BLOCKDEFAULT = 256,
+        ACTIVATE_CLIENTHIT_ONLY = 512,
+        DISABLE_COOKIE = 1024,
+}
+/* polute the global namespace */
+enum {
+        DOCHOSTUITYPE_BROWSE    = 0,
+        DOCHOSTUITYPE_AUTHOR    = 1,
+
+        DOCHOSTUIDBLCLK_DEFAULT         = 0,
+        DOCHOSTUIDBLCLK_SHOWPROPERTIES  = 1,
+        DOCHOSTUIDBLCLK_SHOWCODE        = 2,
+
+       DOCHOSTUIFLAG_DIALOG            = 1,
+        DOCHOSTUIFLAG_DISABLE_HELP_MENU = 2,
+        DOCHOSTUIFLAG_NO3DBORDER        = 4,
+        DOCHOSTUIFLAG_SCROLL_NO         = 8,
+        DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE = 16,
+        DOCHOSTUIFLAG_OPENNEWWIN        = 32,
+        DOCHOSTUIFLAG_DISABLE_OFFSCREEN = 64,
+        DOCHOSTUIFLAG_FLAT_SCROLLBAR = 128,
+        DOCHOSTUIFLAG_DIV_BLOCKDEFAULT = 256,
+        DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY = 512,
+        DOCHOSTUIFLAG_DISABLE_COOKIE = 1024,
+}
+
+struct DOCHOSTUIINFO
+{
+	ULONG cbSize;
+	DWORD dwFlags;
+	DWORD dwDoubleClick;
+}
+
+interface IDocHostUIHandler : IUnknown
+{
+	HRESULT ShowContextMenu( DWORD dwID, POINT* ppt, IUnknown pcmdtReserved, IDispatch pdispReserved);
+	HRESULT GetHostInfo( DOCHOSTUIINFO * pInfo );
+	HRESULT ShowUI( DWORD dwID, IOleInPlaceActiveObject pActiveObject, IOleCommandTarget pCommandTarget, IOleInPlaceFrame pFrame, IOleInPlaceUIWindow pDoc );
+	HRESULT HideUI();
+	HRESULT UpdateUI();
+	HRESULT EnableModeless( BOOL fEnable );
+	HRESULT OnDocWindowActivate( BOOL fActivate );
+	HRESULT OnFrameWindowActivate( BOOL fActivate );
+	HRESULT ResizeBorder(LPRECT prcBorder, IOleInPlaceUIWindow pUIWindow, BOOL fRameWindow );
+	HRESULT TranslateAccelerator( LPMSG lpMsg, GUID * pguidCmdGroup, DWORD nCmdID );
+	HRESULT GetOptionKeyPath( LPOLESTR * pchKey, DWORD dw );
+	HRESULT GetDropTarget( IDropTarget pDropTarget, IDropTarget * ppDropTarget );
+	HRESULT GetExternal( IDispatch * ppDispatch );
+	HRESULT TranslateUrl( DWORD dwTranslate, OLECHAR * pchURLIn, OLECHAR ** ppchURLOut );
+	HRESULT FilterDataObject( IDataObject pDO, IDataObject * ppDORet );
+}
+
+
+//-------------------------------------------------------------------------
+//  ICustomDoc
+//
+//-------------------------------------------------------------------------
+
+interface ICustomDoc : IUnknown
+{
+	HRESULT SetUIHandler( IDocHostUIHandler pUIHandler );
+}
+
+//-------------------------------------------------------------------------
+//  IDocHostShowUI
+//
+//-------------------------------------------------------------------------
+
+interface IDocHostShowUI : IUnknown
+{
+	HRESULT ShowMessage( HWND hwnd, LPOLESTR lpstrText, LPOLESTR lpstrCaption, DWORD dwType, LPOLESTR lpstrHelpFile, DWORD dwHelpContext, LRESULT * plResult);
+	HRESULT ShowHelp( HWND hwnd, LPOLESTR pszHelpFile, UINT uCommand, DWORD dwData, POINT ptMouse, IDispatch pDispatchObjectHit );
+}
+
+/*
+
+//-------------------------------------------------------------------------
+//  ICSSFilterSite
+//
+//-------------------------------------------------------------------------
+interface ICSSFilterSite : IUnknown
+{
+	HRESULT GetElement( IHTMLElement * ppElem );
+	HRESULT FireOnFilterChangeEvent();
+}
+
+
+//-------------------------------------------------------------------------
+//  ICSSFilter
+//
+//-------------------------------------------------------------------------
+interface ICSSFilter : IUnknown
+{
+	HRESULT SetSite( ICSSFilterSite * pSink );
+	HRESULT OnAmbientPropertyChange( LONG dispid );
+}
+
+*/
+
+} // extern( Windows )
--- a/dwt/internal/ole/win32/OAIDL.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/ole/win32/OAIDL.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,1158 +1,1158 @@
-module dwt.internal.ole.win32.OAIDL;
-
-//+---------------------------------------------------------------------------
-//
-//  Microsoft Windows
-//  Copyright 1992 - 1998 Microsoft Corporation.
-//
-//  File: oaidl.idl
-//
-//----------------------------------------------------------------------------
-
-//private import std.c.windows.windows;
-//private import std.c.windows.com;
-private import dwt.internal.ole.win32.OBJIDL;
-private import dwt.internal.ole.win32.extras;
-private import dwt.internal.win32.WINTYPES;
-private import dwt.ole.win32.Variant;
-
-extern(Windows) {
-
-struct  DECIMAL
-    {
-    USHORT wReserved;
-    BYTE scale;
-    BYTE sign;
-    ULONG Hi32;
-    ulong Lo64;
-    }	;
-
-alias wchar * BSTR;
-struct  FLAGGED_WORD_BLOB
-    {
-    ULONG fFlags;
-    ULONG clSize;
-    ushort[1] asData;
-    }
-
-alias FLAGGED_WORD_BLOB  *wireBSTR;
-
- struct BYTE_SIZEDARR
-    {
-    ULONG clSize;
-    byte  *pData;
-    }	;
-
- struct  WORD_SIZEDARR
-    {
-    ULONG clSize;
-    ushort *pData;
-    }	;
-
-struct  DWORD_SIZEDARR
-    {
-    ULONG clSize;
-    ULONG * pData;
-    }	;
-
-struct  HYPER_SIZEDARR
-    {
-    ULONG clSize;
-    long *pData;
-    }
-
-
-enum
-{	VT_EMPTY	= 0,
-	VT_NULL	= 1,
-	VT_I2	= 2,
-	VT_I4	= 3,
-	VT_R4	= 4,
-	VT_R8	= 5,
-	VT_CY	= 6,
-	VT_DATE	= 7,
-	VT_BSTR	= 8,
-	VT_DISPATCH	= 9,
-	VT_ERROR	= 10,
-	VT_BOOL	= 11,
-	VT_VARIANT	= 12,
-	VT_UNKNOWN	= 13,
-	VT_DECIMAL	= 14,
-	VT_I1	= 16,
-	VT_UI1	= 17,
-	VT_UI2	= 18,
-	VT_UI4	= 19,
-	VT_I8	= 20,
-	VT_UI8	= 21,
-	VT_INT	= 22,
-	VT_UINT	= 23,
-	VT_VOID	= 24,
-	VT_HRESULT	= 25,
-	VT_PTR	= 26,
-	VT_SAFEARRAY	= 27,
-	VT_CARRAY	= 28,
-	VT_USERDEFINED	= 29,
-	VT_LPSTR	= 30,
-	VT_LPWSTR	= 31,
-	VT_RECORD	= 36,
-	VT_FILETIME	= 64,
-	VT_BLOB	= 65,
-	VT_STREAM	= 66,
-	VT_STORAGE	= 67,
-	VT_STREAMED_OBJECT	= 68,
-	VT_STORED_OBJECT	= 69,
-	VT_BLOB_OBJECT	= 70,
-	VT_CF	= 71,
-	VT_CLSID	= 72,
-	VT_BSTR_BLOB	= 0xfff,
-	VT_VECTOR	= 0x1000,
-	VT_ARRAY	= 0x2000,
-	VT_BYREF	= 0x4000,
-	VT_RESERVED	= 0x8000,
-	VT_ILLEGAL	= 0xffff,
-	VT_ILLEGALMASKED	= 0xfff,
-	VT_TYPEMASK	= 0xfff
-};
-
-
-/*
-cpp_quote("//+-------------------------------------------------------------------------")
-cpp_quote("//")
-cpp_quote("//  Microsoft Windows")
-cpp_quote("//  Copyright 1992 - 1998 Microsoft Corporation.")
-cpp_quote("//")
-cpp_quote("//--------------------------------------------------------------------------")
-
-cpp_quote("#if ( _MSC_VER >= 800 )")
-*/
-//cpp_quote("#pragma warning(disable:4201)    /* Nameless struct/union */")
-/*
-cpp_quote("#endif")
-
-#ifndef DO_NO_IMPORTS
-import "objidl.idl";
-#endif
-
-interface ICreateTypeInfo;
-interface ICreateTypeInfo2;
-interface ICreateTypeLib;
-interface ICreateTypeLib2;
-interface IDispatch;
-interface IEnumVARIANT;
-interface ITypeComp;
-interface ITypeInfo;
-interface ITypeInfo2;
-interface ITypeLib;
-interface ITypeLib2;
-interface ITypeChangeEvents;
-interface IErrorInfo;
-interface ICreateErrorInfo;
-interface ISupportErrorInfo;
-interface ITypeFactory;
-interface ITypeMarshal;
-interface IRecordInfo;
-
-
-[
-  version(1.0), pointer_default(unique)
-]
-
-interface IOleAutomationTypes
-{
-
-typedef CY CURRENCY;
-
-// #########################################################################
-//      SAFEARRAY
-// #########################################################################
-*/
-struct SAFEARRAYBOUND {
-    ULONG cElements;
-    LONG  lLbound;
-}
-alias SAFEARRAYBOUND * LPSAFEARRAYBOUND;
-
-struct _wireVARIANT {
-}
-struct _wireBRECORD {
-}
-// Forward references.
-alias _wireVARIANT * wireVARIANT;
-alias _wireBRECORD * wireBRECORD;
-
-struct SAFEARR_BSTR {
-    ULONG Size;
-    wireBSTR * aBstr;
-}
-struct SAFEARR_UNKNOWN {
-    ULONG Size;
-    IUnknown * apUnknown;
-}
-
-struct SAFEARR_DISPATCH {
-    ULONG Size;
-    IDispatch * apDispatch;
-}
-
-struct SAFEARR_VARIANT {
-    ULONG Size;
-    wireVARIANT * aVariant;
-}
-
-struct SAFEARR_BRECORD {
-    ULONG Size;
-    wireBRECORD * aRecord;
-}
-
-struct SAFEARR_HAVEIID {
-    ULONG Size;
-    IUnknown * apUnknown;
-    IID   iid;
-}
-
-enum SF_TYPE {
-    SF_ERROR    = VT_ERROR,
-    SF_I1       = VT_I1,
-    SF_I2       = VT_I2,
-    SF_I4       = VT_I4,
-    SF_I8       = VT_I8,
-    SF_BSTR     = VT_BSTR,
-    SF_UNKNOWN  = VT_UNKNOWN,
-    SF_DISPATCH = VT_DISPATCH,
-    SF_VARIANT  = VT_VARIANT,
-    SF_RECORD   = VT_RECORD,
-    SF_HAVEIID  = VT_UNKNOWN|VT_RESERVED,
-}
-
-union uSAFEARRAY_UNION {
-SAFEARR_BSTR     BstrStr;
-SAFEARR_UNKNOWN  UnknownStr;
-SAFEARR_DISPATCH DispatchStr;
-SAFEARR_VARIANT  VariantStr;
-SAFEARR_BRECORD  RecordStr;
-SAFEARR_HAVEIID  HaveIidStr;
-BYTE_SIZEDARR    ByteStr;
-WORD_SIZEDARR    WordStr;
-DWORD_SIZEDARR   LongStr;
-HYPER_SIZEDARR   HyperStr;
-}
-
-struct SAFEARRAY_UNION {
-	ULONG sfType;
-	uSAFEARRAY_UNION u;
-}
-
-alias SAFEARRAY_UNION SAFEARRAYUNION;
-
-struct wireSAFEARRAY {
-    USHORT cDims;
-    USHORT fFeatures;
-    ULONG  cbElements;
-    ULONG  cLocks;
-    SAFEARRAYUNION uArrayStructs;
-    SAFEARRAYBOUND[1] rgsabound;
-}
-alias wireSAFEARRAY SAFEARRAY ;
-
-alias wireSAFEARRAY * wirePSAFEARRAY;
-
-
-struct tagSAFEARRAY {
-    USHORT cDims;
-    USHORT fFeatures;
-    ULONG  cbElements;
-    ULONG  cLocks;
-    PVOID  pvData;
-    SAFEARRAYBOUND[1] rgsabound;
-}
-
-alias SAFEARRAY * LPSAFEARRAY;
-
-const USHORT FADF_AUTO       = 0x0001;  /* array is allocated on the stack */
-const USHORT FADF_STATIC     = 0x0002;  /* array is staticly allocated */
-const USHORT FADF_EMBEDDED   = 0x0004;  /* array is embedded in a structure */
-const USHORT FADF_FIXEDSIZE  = 0x0010;  /* may not be resized or reallocated */
-const USHORT FADF_RECORD     = 0x0020;  /* an array of records */
-const USHORT FADF_HAVEIID    = 0x0040;  /* with FADF_DISPATCH, FADF_UNKNOWN */
-                                        /* array has an IID for interfaces */
-const USHORT FADF_HAVEVARTYPE= 0x0080;  /* array has a VT type */
-const USHORT FADF_BSTR       = 0x0100;  /* an array of BSTRs */
-const USHORT FADF_UNKNOWN    = 0x0200;  /* an array of IUnknown* */
-const USHORT FADF_DISPATCH   = 0x0400;  /* an array of IDispatch* */
-const USHORT FADF_VARIANT    = 0x0800;  /* an array of VARIANTs */
-const USHORT FADF_RESERVED   = 0xF008;  /* reserved bits */
-
-
-// #########################################################################
-//      VARIANT
-// #########################################################################
-/*
-cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)")
-cpp_quote("#define __VARIANT_NAME_1 n1")
-cpp_quote("#define __VARIANT_NAME_2 n2")
-cpp_quote("#define __VARIANT_NAME_3 n3")
-cpp_quote("#define __VARIANT_NAME_4 brecVal")
-cpp_quote("#else")
-cpp_quote("#define __tagVARIANT")
-cpp_quote("#define __VARIANT_NAME_1")
-cpp_quote("#define __VARIANT_NAME_2")
-cpp_quote("#define __VARIANT_NAME_3")
-cpp_quote("#define __tagBRECORD")
-cpp_quote("#define __VARIANT_NAME_4")
-cpp_quote("#endif")
-*/
-
-/*struct brecVal_t {
-	PVOID         pvRecord;
-	IRecordInfo * pRecInfo;
-}*/
-struct brecVal_t {
-	PVOID         pvRecord;
-	IUnknown * pRecInfo;
-}
-
-alias double DOUBLE;
-alias double DATE;
-alias VARIANT_BOOL _VARIANT_BOOL;
-alias long CY;
-
-
-union n3_t {
-    LONG          lVal;         /* VT_I4                */
-    BYTE          bVal;         /* VT_UI1               */
-    SHORT         iVal;         /* VT_I2                */
-    FLOAT         fltVal;       /* VT_R4                */
-    DOUBLE        dblVal;       /* VT_R8                */
-    VARIANT_BOOL  boolVal;      /* VT_BOOL              */
-    _VARIANT_BOOL BOOLval;         /* (obsolete)           */
-    SCODE         scode;        /* VT_ERROR             */
-    CY            cyVal;        /* VT_CY                */
-    DATE          date;         /* VT_DATE              */
-    BSTR          bstrVal;      /* VT_BSTR              */
-    IUnknown     punkVal;      /* VT_UNKNOWN           */
-    IDispatch    pdispVal;     /* VT_DISPATCH          */
-    SAFEARRAY *   parray;       /* VT_ARRAY             */
-    BYTE *        pbVal;        /* VT_BYREF|VT_UI1      */
-    SHORT *       piVal;        /* VT_BYREF|VT_I2       */
-    LONG *        plVal;        /* VT_BYREF|VT_I4       */
-    FLOAT *       pfltVal;      /* VT_BYREF|VT_R4       */
-    DOUBLE *      pdblVal;      /* VT_BYREF|VT_R8       */
-    VARIANT_BOOL *pboolVal;     /* VT_BYREF|VT_BOOL     */
-    _VARIANT_BOOL *pbool;       /* (obsolete)           */
-    SCODE *       pscode;       /* VT_BYREF|VT_ERROR    */
-    CY *          pcyVal;       /* VT_BYREF|VT_CY       */
-    DATE *        pdate;        /* VT_BYREF|VT_DATE     */
-    BSTR *        pbstrVal;     /* VT_BYREF|VT_BSTR     */
-    IUnknown *   ppunkVal;     /* VT_BYREF|VT_UNKNOWN  */
-    IDispatch *   ppdispVal;    /* VT_BYREF|VT_DISPATCH */
-    SAFEARRAY **  pparray;      /* VT_BYREF|VT_ARRAY    */
-    VARIANT *     pvarVal;      /* VT_BYREF|VT_VARIANT  */
-    PVOID         byref;        /* Generic ByRef        */
-    CHAR          cVal;         /* VT_I1                */
-    USHORT        uiVal;        /* VT_UI2               */
-    ULONG         ulVal;        /* VT_UI4               */
-    INT           intVal;       /* VT_INT               */
-    UINT          uintVal;      /* VT_UINT              */
-    DECIMAL *     pdecVal;      /* VT_BYREF|VT_DECIMAL  */
-    CHAR *        pcVal;        /* VT_BYREF|VT_I1       */
-    USHORT *      puiVal;       /* VT_BYREF|VT_UI2      */
-    ULONG *       pulVal;       /* VT_BYREF|VT_UI4      */
-    INT *         pintVal;      /* VT_BYREF|VT_INT      */
-    UINT *        puintVal;     /* VT_BYREF|VT_UINT     */
-	brecVal_t brecVal;         /* VT_RECORD            */
-}
-
-struct n2_t {
-    VARTYPE vt;
-    WORD    wReserved1;
-    WORD    wReserved2;
-    WORD    wReserved3;
-    n3_t n3;
-};
-union n1_t {
-	n2_t n2;
-    DECIMAL decVal;
-};
-
-// in tango.sys.win32.Types
-/+
-struct VARIANT {
-	n1_t n1;
-
-	VARTYPE vt() { return n1.n2.vt; };
-	void vt(VARTYPE val) { n1.n2.vt = val; }
-	LONG lVal()  { return n1.n2.n3.lVal; }
-	void lVal(LONG val) { return n1.n2.n3.lVal = val; }
-	FLOAT fltVal()  { return n1.n2.n3.fltVal; }
-	void fltVal(FLOAT val) { return n1.n2.n3.fltVal = val; }
-	IDispatch pdispVal() { return n1.n2.n3.pdispVal; }
-	void pdispVal(IDispatch val) { n1.n2.n3.pdispVal = val; }
-	IUnknown punkVal() { return n1.n2.n3.punkVal; }
-	void punkVal(IUnknown val) { n1.n2.n3.punkVal = val; }
-	VARIANT_BOOL boolVal() { return n1.n2.n3.boolVal; }
-	void boolVal(VARIANT_BOOL val) { n1.n2.n3.boolVal = val; }
-	SHORT iVal() { return n1.n2.n3.iVal; }
-	void iVal(SHORT val) { n1.n2.n3.iVal = val; }
-	BSTR bstrVal() { return n1.n2.n3.bstrVal; }
-	void bstrVal(BSTR val) { n1.n2.n3.bstrVal = val; }
-
-};
-+/
-
-
-/*
-struct VARIANT {
-	LONG[4] mmmm;
-}
-*/
-alias VARIANT * LPVARIANT;
-alias VARIANT VARIANTARG;
-alias VARIANT * LPVARIANTARG;
-
-/+
-struct _wireBRECORD {
-    ULONG fFlags;
-    ULONG clSize;
-    IRecordInfo pRecInfo;
-    byte * pRecord;
-};
-++++++++++++++++++++/
-
-
-/+
-struct _wireVARIANT {
-    DWORD  clSize;
-    DWORD  rpcReserved;
-    USHORT vt;
-    USHORT wReserved1;
-    USHORT wReserved2;
-    USHORT wReserved3;
-    [switch_type(ULONG), switch_is(vt)] union {
-    [case(VT_I4)]       LONG          lVal;         /* VT_I4                */
-    [case(VT_UI1)]      BYTE          bVal;         /* VT_UI1               */
-    [case(VT_I2)]       SHORT         iVal;         /* VT_I2                */
-    [case(VT_R4)]       FLOAT         fltVal;       /* VT_R4                */
-    [case(VT_R8)]       DOUBLE        dblVal;       /* VT_R8                */
-    [case(VT_BOOL)]     VARIANT_BOOL  boolVal;      /* VT_BOOL              */
-    [case(VT_ERROR)]    SCODE         scode;        /* VT_ERROR             */
-    [case(VT_CY)]       CY            cyVal;        /* VT_CY                */
-    [case(VT_DATE)]     DATE          date;         /* VT_DATE              */
-    [case(VT_BSTR)]     wireBSTR      bstrVal;      /* VT_BSTR              */
-    [case(VT_UNKNOWN)]  IUnknown *    punkVal;      /* VT_UNKNOWN           */
-    [case(VT_DISPATCH)] IDispatch *   pdispVal;     /* VT_DISPATCH          */
-    [case(VT_ARRAY)]    wireSAFEARRAY parray;       /* VT_ARRAY             */
-
-    [case(VT_RECORD, VT_RECORD|VT_BYREF)]
-                        wireBRECORD   brecVal;      /* VT_RECORD            */
-
-    [case(VT_UI1|VT_BYREF)]
-                        BYTE *        pbVal;        /* VT_BYREF|VT_UI1      */
-    [case(VT_I2|VT_BYREF)]
-                        SHORT *       piVal;        /* VT_BYREF|VT_I2       */
-    [case(VT_I4|VT_BYREF)]
-                        LONG *        plVal;        /* VT_BYREF|VT_I4       */
-    [case(VT_R4|VT_BYREF)]
-                        FLOAT *       pfltVal;      /* VT_BYREF|VT_R4       */
-    [case(VT_R8|VT_BYREF)]
-                        DOUBLE *      pdblVal;      /* VT_BYREF|VT_R8       */
-    [case(VT_BOOL|VT_BYREF)]
-                        VARIANT_BOOL *pboolVal;     /* VT_BYREF|VT_BOOL     */
-    [case(VT_ERROR|VT_BYREF)]
-                        SCODE *       pscode;       /* VT_BYREF|VT_ERROR    */
-    [case(VT_CY|VT_BYREF)]
-                        CY *          pcyVal;       /* VT_BYREF|VT_CY       */
-    [case(VT_DATE|VT_BYREF)]
-                        DATE *        pdate;        /* VT_BYREF|VT_DATE     */
-    [case(VT_BSTR|VT_BYREF)]
-                        wireBSTR *    pbstrVal;     /* VT_BYREF|VT_BSTR     */
-    [case(VT_UNKNOWN|VT_BYREF)]
-                        IUnknown **   ppunkVal;     /* VT_BYREF|VT_UNKNOWN  */
-    [case(VT_DISPATCH|VT_BYREF)]
-                        IDispatch **  ppdispVal;    /* VT_BYREF|VT_DISPATCH */
-    [case(VT_ARRAY|VT_BYREF)]
-                        wireSAFEARRAY *pparray;     /* VT_BYREF|VT_ARRAY    */
-    [case(VT_VARIANT|VT_BYREF)]
-                        wireVARIANT * pvarVal;      /* VT_BYREF|VT_VARIANT  */
-
-    [case(VT_I1)]       CHAR          cVal;         /* VT_I1                */
-    [case(VT_UI2)]      USHORT        uiVal;        /* VT_UI2               */
-    [case(VT_UI4)]      ULONG         ulVal;        /* VT_UI4               */
-    [case(VT_INT)]      INT           intVal;       /* VT_INT               */
-    [case(VT_UINT)]     UINT          uintVal;      /* VT_UINT              */
-    [case(VT_DECIMAL)]  DECIMAL       decVal;       /* VT_DECIMAL           */
-
-    [case(VT_BYREF|VT_DECIMAL)]
-                        DECIMAL *     pdecVal;      /* VT_BYREF|VT_DECIMAL  */
-    [case(VT_BYREF|VT_I1)]
-                        CHAR *        pcVal;        /* VT_BYREF|VT_I1       */
-    [case(VT_BYREF|VT_UI2)]
-                        USHORT *      puiVal;       /* VT_BYREF|VT_UI2      */
-    [case(VT_BYREF|VT_UI4)]
-                        ULONG *       pulVal;       /* VT_BYREF|VT_UI4      */
-    [case(VT_BYREF|VT_INT)]
-                        INT *         pintVal;      /* VT_BYREF|VT_INT      */
-    [case(VT_BYREF|VT_UINT)]
-                        UINT *        puintVal;     /* VT_BYREF|VT_UINT     */
-    [case(VT_EMPTY)]    ;                           /* nothing              */
-    [case(VT_NULL)]     ;                           /* nothing              */
-    };
-};
-+/
-
-//########################################################################
-//     End of VARIANT & SAFEARRAY
-//########################################################################
-
-
-//TypeInfo stuff.
-
-alias LONG DISPID;
-alias DISPID MEMBERID;
-alias DWORD HREFTYPE;
-
-enum TYPEKIND {
-    TKIND_ENUM = 0,
-    TKIND_RECORD,
-    TKIND_MODULE,
-    TKIND_INTERFACE,
-    TKIND_DISPATCH,
-    TKIND_COCLASS,
-    TKIND_ALIAS,
-    TKIND_UNION,
-    TKIND_MAX                   /* end of enum marker */
-}
-union TD_00{
-        TYPEDESC * lptdesc;
-        ARRAYDESC * lpadesc;
-		  HREFTYPE hreftype;
-};
-
-struct TYPEDESC {
-    TD_00 u;
-    VARTYPE vt;
-}
-
-struct ARRAYDESC {
-    TYPEDESC tdescElem;         /* element type */
-    USHORT cDims;               /* dimension count */
-    SAFEARRAYBOUND[1] rgbounds; /* var len array of bounds */
-}
-
-// parameter description
-struct PARAMDESCEX {
-    ULONG cBytes;               /* size of this structure */
-    VARIANTARG varDefaultValue; /* default value of this parameter */
-}
-alias PARAMDESCEX * LPPARAMDESCEX;
-
-struct PARAMDESC {
-    LPPARAMDESCEX pparamdescex; /* valid if PARAMFLAG_FHASDEFAULT bit is set */
-    USHORT wParamFlags;         /* IN, OUT, etc */
-}
-alias PARAMDESC * LPPARAMDESC;
-
-const USHORT PARAMFLAG_NONE         = 0x00;
-const USHORT PARAMFLAG_FIN          = 0x01;
-const USHORT PARAMFLAG_FOUT         = 0x02;
-const USHORT PARAMFLAG_FLCID        = 0x04;
-const USHORT PARAMFLAG_FRETVAL      = 0x08;
-const USHORT PARAMFLAG_FOPT         = 0x10;
-const USHORT PARAMFLAG_FHASDEFAULT  = 0x20;
-const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
-
-struct IDLDESC {
-    ULONG dwReserved;
-    USHORT wIDLFlags;           /* IN, OUT, etc */
-}
-alias IDLDESC * LPIDLDESC;
-
-const USHORT IDLFLAG_NONE    = PARAMFLAG_NONE;
-const USHORT IDLFLAG_FIN     = PARAMFLAG_FIN;
-const USHORT IDLFLAG_FOUT    = PARAMFLAG_FOUT;
-const USHORT IDLFLAG_FLCID   = PARAMFLAG_FLCID;
-const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
-
-
-struct ELEMDESC {    /* a format that MIDL likes */
-    TYPEDESC tdesc;             /* the type of the element */
-    PARAMDESC paramdesc;        /* IDLDESC is a subset of PARAMDESC */
-}
-
-struct TYPEATTR {
-    GUID guid;                  /* the GUID of the TypeInfo */
-    LCID lcid;                  /* locale of member names and doc strings */
-    DWORD dwReserved;
-    MEMBERID memidConstructor;  /* ID of constructor, MEMBERID_NIL if none */
-    MEMBERID memidDestructor;   /* ID of destructor, MEMBERID_NIL if none */
-    LPOLESTR lpstrSchema;
-    ULONG cbSizeInstance;       /* the size of an instance of this type */
-    TYPEKIND typekind;          /* the kind of type this typeinfo describes */
-    WORD cFuncs;                /* number of functions */
-    WORD cVars;                 /* number of variables / data members */
-    WORD cImplTypes;            /* number of implemented interfaces */
-    WORD cbSizeVft;             /* the size of this types virtual func table */
-    WORD cbAlignment;           /* specifies the alignment requirements for
-                                   an instance of this type,
-                                   0 = align on 64k boundary
-                                   1 = byte align
-                                   2 = word align
-                                   4 = dword align... */
-    WORD wTypeFlags;
-    WORD wMajorVerNum;          /* major version number */
-    WORD wMinorVerNum;          /* minor version number */
-    TYPEDESC tdescAlias;        /* if typekind == TKIND_ALIAS this field
-                                   specifies the type for which this type
-                                   is an alias */
-    IDLDESC idldescType;        /* IDL attributes of the described type */
-}
-alias TYPEATTR * LPTYPEATTR;
-
-
-struct DISPPARAMS {
-    VARIANTARG * rgvarg;
-    DISPID * rgdispidNamedArgs;
-    UINT cArgs;
-    UINT cNamedArgs;
-}
-
-struct EXCEPINFO {
-    WORD  wCode;            /* An error code describing the error. */
-    WORD  wReserved;
-    BSTR  bstrSource;       /* A source of the exception */
-    BSTR  bstrDescription;  /* A description of the error */
-    BSTR  bstrHelpFile;     /* Fully qualified drive, path, and file name */
-    DWORD dwHelpContext;    /* help context of topic within the help file */
-    ULONG pvReserved;
-    ULONG pfnDeferredFillIn;
-    SCODE scode;
-}
-/+
-
-cpp_quote("#else /* 0 */")
-cpp_quote("typedef struct tagEXCEPINFO {")
-cpp_quote("    WORD  wCode;")
-cpp_quote("    WORD  wReserved;")
-cpp_quote("    BSTR  bstrSource;")
-cpp_quote("    BSTR  bstrDescription;")
-cpp_quote("    BSTR  bstrHelpFile;")
-cpp_quote("    DWORD dwHelpContext;")
-cpp_quote("    PVOID pvReserved;")
-cpp_quote("    HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
-cpp_quote("    SCODE scode;")
-cpp_quote("} EXCEPINFO, * LPEXCEPINFO;")
-cpp_quote("#endif /* 0 */")
-+/
-
-enum CALLCONV {
-    CC_FASTCALL = 0,
-    CC_CDECL = 1,
-    CC_MSCPASCAL,
-    CC_PASCAL = CC_MSCPASCAL,
-    CC_MACPASCAL,
-    CC_STDCALL,
-    CC_FPFASTCALL,
-    CC_SYSCALL,
-    CC_MPWCDECL,
-    CC_MPWPASCAL,
-    CC_MAX          /* end of enum marker */
-}
-enum FUNCKIND {
-    FUNC_VIRTUAL,
-    FUNC_PUREVIRTUAL,
-    FUNC_NONVIRTUAL,
-    FUNC_STATIC,
-    FUNC_DISPATCH
-}
-
-enum INVOKEKIND {
-    INVOKE_FUNC = 1,
-    INVOKE_PROPERTYGET = 2,
-    INVOKE_PROPERTYPUT = 4,
-    INVOKE_PROPERTYPUTREF = 8
-}
-
-struct FUNCDESC {
-    MEMBERID memid;
-    SCODE * lprgscode;
-    ELEMDESC * lprgelemdescParam; /* array of param types */
-    FUNCKIND funckind;
-    INVOKEKIND invkind;
-    CALLCONV callconv;
-    SHORT cParams;
-    SHORT cParamsOpt;
-    SHORT oVft;
-    SHORT cScodes;
-    ELEMDESC elemdescFunc;
-    WORD wFuncFlags;
-}
-alias FUNCDESC * LPFUNCDESC;
-
-enum VARKIND {
-    VAR_PERINSTANCE,
-    VAR_STATIC,
-    VAR_CONST,
-    VAR_DISPATCH
-}
-/* IMPLTYPE Flags */
-const USHORT IMPLTYPEFLAG_FDEFAULT      = 0x1;
-const USHORT IMPLTYPEFLAG_FSOURCE       = 0x2;
-const USHORT IMPLTYPEFLAG_FRESTRICTED   = 0x4;
-const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8;
-
-union VD_u {
-        /* offset of variable within the instance */
-	ULONG oInst;
-	VARIANT * lpvarValue; /* the value of the constant */
-}
-struct VARDESC {
-    MEMBERID memid;
-    LPOLESTR lpstrSchema;
-    VD_u u;
-    ELEMDESC elemdescVar;
-    WORD     wVarFlags;
-    VARKIND  varkind;
-}
-alias VARDESC * LPVARDESC;
-
-enum TYPEFLAGS {
-    TYPEFLAG_FAPPOBJECT = 0x01,
-    TYPEFLAG_FCANCREATE = 0x02,
-    TYPEFLAG_FLICENSED = 0x04,
-    TYPEFLAG_FPREDECLID = 0x08,
-    TYPEFLAG_FHIDDEN = 0x10,
-    TYPEFLAG_FCONTROL = 0x20,
-    TYPEFLAG_FDUAL = 0x40,
-    TYPEFLAG_FNONEXTENSIBLE = 0x80,
-    TYPEFLAG_FOLEAUTOMATION = 0x100,
-    TYPEFLAG_FRESTRICTED = 0x200,
-    TYPEFLAG_FAGGREGATABLE = 0x400,
-    TYPEFLAG_FREPLACEABLE = 0x800,
-    TYPEFLAG_FDISPATCHABLE = 0x1000,
-    TYPEFLAG_FREVERSEBIND = 0x2000
-}
-
-enum FUNCFLAGS {
-    FUNCFLAG_FRESTRICTED = 0x1,
-    FUNCFLAG_FSOURCE = 0x2,
-    FUNCFLAG_FBINDABLE = 0x4,
-    FUNCFLAG_FREQUESTEDIT = 0x8,
-    FUNCFLAG_FDISPLAYBIND = 0x10,
-    FUNCFLAG_FDEFAULTBIND = 0x20,
-    FUNCFLAG_FHIDDEN = 0x40,
-    FUNCFLAG_FUSESGETLASTERROR = 0x80,
-    FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
-    FUNCFLAG_FUIDEFAULT = 0x200,
-    FUNCFLAG_FNONBROWSABLE = 0x400,
-    FUNCFLAG_FREPLACEABLE = 0x800,
-    FUNCFLAG_FIMMEDIATEBIND = 0x1000
-}
-
-enum VARFLAGS {
-    VARFLAG_FREADONLY = 0x1,
-    VARFLAG_FSOURCE = 0x2,
-    VARFLAG_FBINDABLE = 0x4,
-    VARFLAG_FREQUESTEDIT = 0x8,
-    VARFLAG_FDISPLAYBIND = 0x10,
-    VARFLAG_FDEFAULTBIND = 0x20,
-    VARFLAG_FHIDDEN = 0x40,
-    VARFLAG_FRESTRICTED = 0x80,
-    VARFLAG_FDEFAULTCOLLELEM = 0x100,
-    VARFLAG_FUIDEFAULT = 0x200,
-    VARFLAG_FNONBROWSABLE = 0x400,
-    VARFLAG_FREPLACEABLE = 0x800,
-    VARFLAG_FIMMEDIATEBIND = 0x1000
-}
-
-struct CLEANLOCALSTORAGE {
-    IUnknown pInterface;      /* interface that is responsible for storage */
-    PVOID pStorage;             /* the storage being managed by interface */
-    DWORD flags;                /* which interface, what storage */
-}
-
-struct CUSTDATAITEM {
-    GUID guid;           /* guid identifying this custom data item */
-    VARIANTARG varValue; /* value of this custom data item */
-}
-alias CUSTDATAITEM * LPCUSTDATAITEM;
-
-struct CUSTDATA {
-    DWORD cCustData;            /* number of custom data items in rgCustData */
-    LPCUSTDATAITEM prgCustData;
-                                /* array of custom data items */
-}
-alias CUSTDATA * LPCUSTDATA;
-
-
-interface ICreateTypeInfo: IUnknown
-{
-    HRESULT SetGuid( REFGUID guid );
-    HRESULT SetTypeFlags( UINT uTypeFlags );
-    HRESULT SetDocString( LPOLESTR pStrDoc );
-    HRESULT SetHelpContext( DWORD dwHelpContext);
-    HRESULT SetVersion( WORD wMajorVerNum, WORD wMinorVerNum );
-    HRESULT AddRefTypeInfo( ITypeInfo pTInfo, HREFTYPE * phRefType );
-    HRESULT AddFuncDesc( UINT index, FUNCDESC * pFuncDesc            );
-    HRESULT AddImplType( UINT index, HREFTYPE hRefType             );
-    HRESULT SetImplTypeFlags( UINT index, INT implTypeFlags            );
-    HRESULT SetAlignment( WORD cbAlignment             );
-    HRESULT SetSchema( LPOLESTR pStrSchema            );
-    HRESULT AddVarDesc( UINT index, VARDESC * pVarDesc            );
-    HRESULT SetFuncAndParamNames( UINT index, LPOLESTR * rgszNames, UINT cNames );
-    HRESULT SetVarName( UINT index, LPOLESTR szName         );
-    HRESULT SetTypeDescAlias( TYPEDESC * pTDescAlias    );
-    HRESULT DefineFuncAsDllEntry( UINT index,LPOLESTR szDllName,LPOLESTR szProcName            );
-    HRESULT SetFuncDocString( UINT index, LPOLESTR szDocString            );
-    HRESULT SetVarDocString(UINT index,LPOLESTR szDocString            );
-    HRESULT SetFuncHelpContext(UINT index,DWORD dwHelpContext            );
-    HRESULT SetVarHelpContext(UINT index,DWORD dwHelpContext            );
-    HRESULT SetMops(UINT index,BSTR bstrMops            );
-    HRESULT SetTypeIdldesc(IDLDESC * pIdlDesc            );
-    HRESULT LayOut();
-}
-alias ICreateTypeInfo LPCREATETYPEINFO;
-
-interface ICreateTypeInfo2: ICreateTypeInfo
-{
-	HRESULT DeleteFuncDesc(UINT index);
-	HRESULT DeleteFuncDescByMemId(MEMBERID memid,INVOKEKIND invKind);
-	HRESULT DeleteVarDesc(UINT index);
-	HRESULT DeleteVarDescByMemId(MEMBERID memid);
-	HRESULT DeleteImplType(UINT index);
-	HRESULT SetCustData(REFGUID guid,VARIANT * pVarVal);
-	HRESULT SetFuncCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
-	HRESULT SetParamCustData(UINT indexFunc,UINT indexParam,REFGUID guid,VARIANT * pVarVal);
-	HRESULT SetVarCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
-	HRESULT SetImplTypeCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
-	HRESULT SetHelpStringContext(ULONG dwHelpStringContext);
-	HRESULT SetFuncHelpStringContext(UINT index,ULONG dwHelpStringContext);
-	HRESULT SetVarHelpStringContext(UINT index,ULONG dwHelpStringContext);
-	HRESULT Invalidate();
-	HRESULT SetName(LPOLESTR szName);
-}
-alias ICreateTypeInfo2 LPCREATETYPEINFO2;
-
-interface ICreateTypeLib : IUnknown
-{
-	HRESULT CreateTypeInfo(LPOLESTR szName,TYPEKIND tkind,ICreateTypeInfo * ppCTInfo);
-	HRESULT SetName(LPOLESTR szName);
-	HRESULT SetVersion(WORD wMajorVerNum,WORD wMinorVerNum);
-	HRESULT SetGuid(REFGUID guid);
-	HRESULT SetDocString( LPOLESTR szDoc);
-	HRESULT SetHelpFileName(LPOLESTR szHelpFileName);
-	HRESULT SetHelpContext(DWORD dwHelpContext);
-	HRESULT SetLcid(LCID lcid);
-	HRESULT SetLibFlags(UINT uLibFlags);
-	HRESULT SaveAllChanges();
-}
-alias ICreateTypeLib LPCREATETYPELIB;
-
-interface ICreateTypeLib2 : ICreateTypeLib
-{
-	HRESULT DeleteTypeInfo(LPOLESTR szName);
-	HRESULT SetCustData(REFGUID guid,VARIANT * pVarVal);
-	HRESULT SetHelpStringContext(ULONG dwHelpStringContext);
-	HRESULT SetHelpStringDll(LPOLESTR szFileName);
-}
-
-interface IDispatch : IUnknown
-{
-HRESULT GetTypeInfoCount(UINT * pctinfo);
-HRESULT GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo * ppTInfo);
-HRESULT GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId);
-HRESULT Invoke(DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS* pDispParams,VARIANT* pVarResult,EXCEPINFO* pExcepInfo,UINT* puArgErr);
-}
-alias IDispatch LPDISPATCH;
-const DISPID DISPID_UNKNOWN = cast(DISPID)-1;
-const DISPID DISPID_VALUE = cast(DISPID)0;
-const DISPID DISPID_PROPERTYPUT = cast(DISPID)-3;
-const DISPID DISPID_NEWENUM = cast(DISPID)-4;
-const DISPID DISPID_EVALUATE = cast(DISPID)-5;
-const DISPID DISPID_CONSTRUCTOR = cast(DISPID)-6;
-const DISPID DISPID_DESTRUCTOR = cast(DISPID)-7;
-const DISPID DISPID_COLLECT = cast(DISPID)-8;
-
-/+++++++++++++++++++++++++++++++++++++++
-
-[
-    object,
-    uuid(00020404-0000-0000-C000-000000000046),
-    pointer_default(unique)
-]
-
-interface IEnumVARIANT : IUnknown
-{
-    typedef [unique] IEnumVARIANT* LPENUMVARIANT;
-
-    [local]
-    HRESULT Next(
-                [in] ULONG celt,
-                [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
-                [out] ULONG * pCeltFetched
-            );
-
-    [call_as(Next)]
-    HRESULT RemoteNext(
-                [in] ULONG celt,
-                [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
-                [out] ULONG * pCeltFetched
-            );
-
-    HRESULT Skip(
-                [in] ULONG celt
-            );
-
-    HRESULT Reset(
-            );
-
-    HRESULT Clone(
-                [out] IEnumVARIANT ** ppEnum
-            );
-}
-
-
-+/
-enum DESCKIND {
-        DESCKIND_NONE = 0,
-        DESCKIND_FUNCDESC,
-        DESCKIND_VARDESC,
-        DESCKIND_TYPECOMP,
-        DESCKIND_IMPLICITAPPOBJ,
-        DESCKIND_MAX
-}
-
-
-union BINDPTR {
-        FUNCDESC  * lpfuncdesc;
-        VARDESC   * lpvardesc;
-        ITypeComp lptcomp;
-}
-alias BINDPTR * LPBINDPTR;
-
-interface ITypeComp : IUnknown
-{
-
-    HRESULT Bind(LPOLESTR szName,ULONG lHashVal,WORD wFlags,
-ITypeInfo * ppTInfo,DESCKIND * pDescKind,BINDPTR * pBindPtr
-            );
-
-
-    HRESULT BindType( LPOLESTR szName,ULONG lHashVal,
-						ITypeInfo * ppTInfo,
-						ITypeComp * ppTComp
-            );
-
-}
-
-interface ITypeInfo : IUnknown
-{
-    HRESULT GetTypeAttr(TYPEATTR ** ppTypeAttr);
-    HRESULT GetTypeComp( ITypeComp * ppTComp );
-    HRESULT GetFuncDesc( UINT index, FUNCDESC ** ppFuncDesc );
-    HRESULT GetVarDesc( UINT index,VARDESC ** ppVarDesc);
-    HRESULT GetNames(MEMBERID memid,BSTR * rgBstrNames,UINT cMaxNames,UINT * pcNames);
-    HRESULT GetRefTypeOfImplType(UINT index,HREFTYPE * pRefType);
-    HRESULT GetImplTypeFlags(UINT index,INT * pImplTypeFlags);
-    HRESULT GetIDsOfNames(LPOLESTR * rgszNames,UINT cNames,MEMBERID * pMemId);
-    HRESULT Invoke(PVOID pvInstance,MEMBERID memid,WORD wFlags,DISPPARAMS * pDispParams,VARIANT * pVarResult,EXCEPINFO * pExcepInfo,UINT * puArgErr);
-    HRESULT GetDocumentation(MEMBERID memid,BSTR * pBstrName,BSTR * pBstrDocString,DWORD * pdwHelpContext,BSTR * pBstrHelpFile);
-    HRESULT GetDllEntry(MEMBERID memid,INVOKEKIND invKind,BSTR * pBstrDllName,BSTR * pBstrName,WORD * pwOrdinal);
-    HRESULT GetRefTypeInfo(HREFTYPE hRefType,ITypeInfo * ppTInfo);
-    HRESULT AddressOfMember(MEMBERID memid,INVOKEKIND invKind,PVOID * ppv);
-    HRESULT CreateInstance(IUnknown pUnkOuter,REFIID riid,PVOID * ppvObj);
-    HRESULT GetMops(MEMBERID memid,BSTR * pBstrMops);
-    HRESULT GetContainingTypeLib( ITypeLib ** ppTLib,UINT * pIndex);
-    void ReleaseTypeAttr(TYPEATTR * pTypeAttr );
-    void ReleaseFuncDesc( FUNCDESC * pFuncDesc  );
-    void ReleaseVarDesc(VARDESC * pVarDesc            );
-}
-alias ITypeInfo LPTYPEINFO;
-
-interface ITypeInfo2 : ITypeInfo
-{
-	HRESULT GetTypeKind(TYPEKIND * pTypeKind);
-	HRESULT GetTypeFlags(ULONG * pTypeFlags);
-	HRESULT GetFuncIndexOfMemId(MEMBERID memid,INVOKEKIND invKind,UINT * pFuncIndex);
-	HRESULT GetVarIndexOfMemId(MEMBERID memid,UINT * pVarIndex);
-	HRESULT GetCustData(REFGUID guid,VARIANT * pVarVal);
-	HRESULT GetFuncCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
-	HRESULT GetParamCustData(UINT indexFunc,UINT indexParam,REFGUID guid,VARIANT * pVarVal);
-	HRESULT GetVarCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
-	HRESULT GetImplTypeCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
-	HRESULT GetDocumentation2(MEMBERID memid,LCID lcid,BSTR *pbstrHelpString,DWORD *pdwHelpStringContext,BSTR *pbstrHelpStringDll);
-	HRESULT GetAllCustData(CUSTDATA * pCustData);
-	HRESULT GetAllFuncCustData(UINT index,CUSTDATA * pCustData);
-	HRESULT GetAllParamCustData(UINT indexFunc,UINT indexParam,CUSTDATA * pCustData);
-	HRESULT GetAllVarCustData(UINT index,CUSTDATA * pCustData);
-	HRESULT GetAllImplTypeCustData(UINT index,CUSTDATA * pCustData);
-}
-
-alias ITypeInfo2 LPTYPEINFO2;
-
-enum SYSKIND {
-        SYS_WIN16 = 0,
-        SYS_WIN32,
-        SYS_MAC
-}
-
-enum LIBFLAGS {
-        LIBFLAG_FRESTRICTED = 0x01,
-        LIBFLAG_FCONTROL = 0x02,
-        LIBFLAG_FHIDDEN = 0x04,
-        LIBFLAG_FHASDISKIMAGE = 0x08
-}
-
-struct TLIBATTR {
-        GUID guid;
-        LCID lcid;
-        SYSKIND syskind;
-        WORD wMajorVerNum;
-        WORD wMinorVerNum;
-        WORD wLibFlags;
-}
-alias TLIBATTR * LPTLIBATTR;
-
-interface ITypeLib : IUnknown
-{
-    UINT GetTypeInfoCount(
-            );
-
-    HRESULT GetTypeInfo(
-	UINT index,
-ITypeInfo * ppTInfo
-            );
-
-HRESULT GetTypeInfoType(
-	UINT index,
-	TYPEKIND * pTKind
-            );
-
-   HRESULT GetTypeInfoOfGuid(
-	REFGUID guid,
-	ITypeInfo * ppTinfo
-            );
-
-    HRESULT GetLibAttr(
-			TLIBATTR ** ppTLibAttr
-);
-
-    HRESULT GetTypeComp(ITypeComp * ppTComp            );
-
-    HRESULT GetDocumentation(INT index,BSTR * pBstrName,BSTR * pBstrDocString,DWORD * pdwHelpContext,BSTR * pBstrHelpFile
-            );
-
-    HRESULT IsName(LPOLESTR szNameBuf,ULONG lHashVal,BOOL * pfName
-            );
-
-    HRESULT FindName(
-			LPOLESTR szNameBuf,
-			ULONG lHashVal,
-			ITypeInfo * ppTInfo,
-			MEMBERID * rgMemId,
-			USHORT * pcFound
-	);
-
-    void ReleaseTLibAttr(		TLIBATTR * pTLibAttr            );
-}
-
-alias ITypeLib  LPTYPELIB;
-
-interface ITypeLib2 : ITypeLib
-{
-	HRESULT GetCustData(REFGUID guid,VARIANT * pVarVal);
-	HRESULT GetLibStatistics(ULONG * pcUniqueNames,ULONG * pcchUniqueNames);
-	HRESULT GetDocumentation2(INT index,LCID lcid,BSTR *pbstrHelpString,DWORD *pdwHelpStringContext,BSTR *pbstrHelpStringDll);
-	HRESULT GetAllCustData(CUSTDATA * pCustData);
-}
-alias ITypeLib2 LPTYPELIB2;
-
-enum CHANGEKIND {
-        CHANGEKIND_ADDMEMBER,
-        CHANGEKIND_DELETEMEMBER,
-        CHANGEKIND_SETNAMES,
-        CHANGEKIND_SETDOCUMENTATION,
-        CHANGEKIND_GENERAL,
-        CHANGEKIND_INVALIDATE,
-        CHANGEKIND_CHANGEFAILED,
-        CHANGEKIND_MAX,
-        ADDMEMBER    = CHANGEKIND_ADDMEMBER,
-        DELETEMEMBER = CHANGEKIND_DELETEMEMBER,
-        SETNAMES     = CHANGEKIND_SETNAMES,
-        SETDOCUMENTATION = CHANGEKIND_SETDOCUMENTATION,
-        GENERAL          = CHANGEKIND_GENERAL,
-        INVALIDATE       = CHANGEKIND_INVALIDATE,
-        CHANGEFAILED     = CHANGEKIND_CHANGEFAILED,
-        MAX       = CHANGEKIND_MAX
-}
-
-interface ITypeChangeEvents: IUnknown
-{
-    // notification messages used by the dynamic typeinfo protocol.
-    HRESULT RequestTypeChange(CHANGEKIND changeKind,ITypeInfo pTInfoBefore,LPOLESTR pStrName,INT * pfCancel);
-    HRESULT AfterTypeChange(CHANGEKIND changeKind,ITypeInfo pTInfoAfter,LPOLESTR pStrName);
-}
-alias ITypeChangeEvents LPTYPECHANGEEVENTS;
-
-interface IErrorInfo: IUnknown
-{
-	HRESULT GetGUID( GUID * pGUID );
-	HRESULT GetSource(BSTR * pBstrSource);
-	HRESULT GetDescription(BSTR * pBstrDescription);
-	HRESULT GetHelpFile(BSTR * pBstrHelpFile);
-	HRESULT GetHelpContext(DWORD * pdwHelpContext);
-}
-alias IErrorInfo LPERRORINFO;
-
-interface ICreateErrorInfo: IUnknown
-{
-	HRESULT SetGUID(REFGUID rguid);
-	HRESULT SetSource(LPOLESTR szSource);
-	HRESULT SetDescription(LPOLESTR szDescription);
-	HRESULT SetHelpFile(LPOLESTR szHelpFile);
-	HRESULT SetHelpContext(DWORD dwHelpContext);
-}
-alias ICreateErrorInfo LPCREATEERRORINFO;
-
-interface ISupportErrorInfo: IUnknown
-{
-	HRESULT InterfaceSupportsErrorInfo(REFIID riid);
-}
-alias ISupportErrorInfo LPSUPPORTERRORINFO;
-
-interface ITypeFactory : IUnknown
-{
-	HRESULT CreateFromTypeInfo(ITypeInfo pTypeInfo,REFIID riid, IUnknown *ppv);
-}
-
-interface ITypeMarshal : IUnknown
-{
-    HRESULT Size(PVOID pvType,DWORD dwDestContext,PVOID pvDestContext,ULONG * pSize);
-    HRESULT Marshal(PVOID pvType,DWORD dwDestContext,PVOID pvDestContext,ULONG cbBufferLength,BYTE  * pBuffer,ULONG * pcbWritten);
-    HRESULT Unmarshal(PVOID pvType,DWORD dwFlags,ULONG cbBufferLength,BYTE  * pBuffer,ULONG * pcbRead);
-    HRESULT Free(PVOID pvType);
-}
-
-
-interface IRecordInfo: IUnknown
-{
-	HRESULT RecordInit(PVOID pvNew);
-	HRESULT RecordClear(PVOID pvExisting);
-	HRESULT RecordCopy(PVOID pvExisting,PVOID pvNew);
-	HRESULT GetGuid(GUID * pguid);
-	HRESULT GetName(BSTR * pbstrName);
-	HRESULT GetSize(ULONG * pcbSize);
-	HRESULT GetTypeInfo(ITypeInfo * ppTypeInfo);
-	HRESULT GetField(PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField);
-	HRESULT GetFieldNoCopy(PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField,PVOID * ppvDataCArray);
-	HRESULT PutField(ULONG wFlags,PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField);
-	HRESULT PutFieldNoCopy(ULONG wFlags,PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField);
-	HRESULT GetFieldNames(ULONG * pcNames,BSTR * rgBstrNames);
-	BOOL IsMatchingType(IRecordInfo pRecordInfo);
-	PVOID RecordCreate();
-	HRESULT RecordCreateCopy(PVOID pvSource,PVOID * ppvDest);
-	HRESULT RecordDestroy(PVOID pvRecord);
-}
-alias IRecordInfo LPRECORDINFO;
-
-} // extern(WIndows);
-
-
+module dwt.internal.ole.win32.OAIDL;
+
+//+---------------------------------------------------------------------------
+//
+//  Microsoft Windows
+//  Copyright 1992 - 1998 Microsoft Corporation.
+//
+//  File: oaidl.idl
+//
+//----------------------------------------------------------------------------
+
+//private import std.c.windows.windows;
+//private import std.c.windows.com;
+private import dwt.internal.ole.win32.OBJIDL;
+private import dwt.internal.ole.win32.extras;
+private import dwt.internal.win32.WINTYPES;
+private import dwt.ole.win32.Variant;
+
+extern(Windows) {
+
+struct  DECIMAL
+    {
+    USHORT wReserved;
+    BYTE scale;
+    BYTE sign;
+    ULONG Hi32;
+    ulong Lo64;
+    }	;
+
+alias wchar * BSTR;
+struct  FLAGGED_WORD_BLOB
+    {
+    ULONG fFlags;
+    ULONG clSize;
+    ushort[1] asData;
+    }
+
+alias FLAGGED_WORD_BLOB  *wireBSTR;
+
+ struct BYTE_SIZEDARR
+    {
+    ULONG clSize;
+    byte  *pData;
+    }	;
+
+ struct  WORD_SIZEDARR
+    {
+    ULONG clSize;
+    ushort *pData;
+    }	;
+
+struct  DWORD_SIZEDARR
+    {
+    ULONG clSize;
+    ULONG * pData;
+    }	;
+
+struct  HYPER_SIZEDARR
+    {
+    ULONG clSize;
+    long *pData;
+    }
+
+
+enum
+{	VT_EMPTY	= 0,
+	VT_NULL	= 1,
+	VT_I2	= 2,
+	VT_I4	= 3,
+	VT_R4	= 4,
+	VT_R8	= 5,
+	VT_CY	= 6,
+	VT_DATE	= 7,
+	VT_BSTR	= 8,
+	VT_DISPATCH	= 9,
+	VT_ERROR	= 10,
+	VT_BOOL	= 11,
+	VT_VARIANT	= 12,
+	VT_UNKNOWN	= 13,
+	VT_DECIMAL	= 14,
+	VT_I1	= 16,
+	VT_UI1	= 17,
+	VT_UI2	= 18,
+	VT_UI4	= 19,
+	VT_I8	= 20,
+	VT_UI8	= 21,
+	VT_INT	= 22,
+	VT_UINT	= 23,
+	VT_VOID	= 24,
+	VT_HRESULT	= 25,
+	VT_PTR	= 26,
+	VT_SAFEARRAY	= 27,
+	VT_CARRAY	= 28,
+	VT_USERDEFINED	= 29,
+	VT_LPSTR	= 30,
+	VT_LPWSTR	= 31,
+	VT_RECORD	= 36,
+	VT_FILETIME	= 64,
+	VT_BLOB	= 65,
+	VT_STREAM	= 66,
+	VT_STORAGE	= 67,
+	VT_STREAMED_OBJECT	= 68,
+	VT_STORED_OBJECT	= 69,
+	VT_BLOB_OBJECT	= 70,
+	VT_CF	= 71,
+	VT_CLSID	= 72,
+	VT_BSTR_BLOB	= 0xfff,
+	VT_VECTOR	= 0x1000,
+	VT_ARRAY	= 0x2000,
+	VT_BYREF	= 0x4000,
+	VT_RESERVED	= 0x8000,
+	VT_ILLEGAL	= 0xffff,
+	VT_ILLEGALMASKED	= 0xfff,
+	VT_TYPEMASK	= 0xfff
+};
+
+
+/*
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("//  Microsoft Windows")
+cpp_quote("//  Copyright 1992 - 1998 Microsoft Corporation.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+cpp_quote("#if ( _MSC_VER >= 800 )")
+*/
+//cpp_quote("#pragma warning(disable:4201)    /* Nameless struct/union */")
+/*
+cpp_quote("#endif")
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+#endif
+
+interface ICreateTypeInfo;
+interface ICreateTypeInfo2;
+interface ICreateTypeLib;
+interface ICreateTypeLib2;
+interface IDispatch;
+interface IEnumVARIANT;
+interface ITypeComp;
+interface ITypeInfo;
+interface ITypeInfo2;
+interface ITypeLib;
+interface ITypeLib2;
+interface ITypeChangeEvents;
+interface IErrorInfo;
+interface ICreateErrorInfo;
+interface ISupportErrorInfo;
+interface ITypeFactory;
+interface ITypeMarshal;
+interface IRecordInfo;
+
+
+[
+  version(1.0), pointer_default(unique)
+]
+
+interface IOleAutomationTypes
+{
+
+typedef CY CURRENCY;
+
+// #########################################################################
+//      SAFEARRAY
+// #########################################################################
+*/
+struct SAFEARRAYBOUND {
+    ULONG cElements;
+    LONG  lLbound;
+}
+alias SAFEARRAYBOUND * LPSAFEARRAYBOUND;
+
+struct _wireVARIANT {
+}
+struct _wireBRECORD {
+}
+// Forward references.
+alias _wireVARIANT * wireVARIANT;
+alias _wireBRECORD * wireBRECORD;
+
+struct SAFEARR_BSTR {
+    ULONG Size;
+    wireBSTR * aBstr;
+}
+struct SAFEARR_UNKNOWN {
+    ULONG Size;
+    IUnknown * apUnknown;
+}
+
+struct SAFEARR_DISPATCH {
+    ULONG Size;
+    IDispatch * apDispatch;
+}
+
+struct SAFEARR_VARIANT {
+    ULONG Size;
+    wireVARIANT * aVariant;
+}
+
+struct SAFEARR_BRECORD {
+    ULONG Size;
+    wireBRECORD * aRecord;
+}
+
+struct SAFEARR_HAVEIID {
+    ULONG Size;
+    IUnknown * apUnknown;
+    IID   iid;
+}
+
+enum SF_TYPE {
+    SF_ERROR    = VT_ERROR,
+    SF_I1       = VT_I1,
+    SF_I2       = VT_I2,
+    SF_I4       = VT_I4,
+    SF_I8       = VT_I8,
+    SF_BSTR     = VT_BSTR,
+    SF_UNKNOWN  = VT_UNKNOWN,
+    SF_DISPATCH = VT_DISPATCH,
+    SF_VARIANT  = VT_VARIANT,
+    SF_RECORD   = VT_RECORD,
+    SF_HAVEIID  = VT_UNKNOWN|VT_RESERVED,
+}
+
+union uSAFEARRAY_UNION {
+SAFEARR_BSTR     BstrStr;
+SAFEARR_UNKNOWN  UnknownStr;
+SAFEARR_DISPATCH DispatchStr;
+SAFEARR_VARIANT  VariantStr;
+SAFEARR_BRECORD  RecordStr;
+SAFEARR_HAVEIID  HaveIidStr;
+BYTE_SIZEDARR    ByteStr;
+WORD_SIZEDARR    WordStr;
+DWORD_SIZEDARR   LongStr;
+HYPER_SIZEDARR   HyperStr;
+}
+
+struct SAFEARRAY_UNION {
+	ULONG sfType;
+	uSAFEARRAY_UNION u;
+}
+
+alias SAFEARRAY_UNION SAFEARRAYUNION;
+
+struct wireSAFEARRAY {
+    USHORT cDims;
+    USHORT fFeatures;
+    ULONG  cbElements;
+    ULONG  cLocks;
+    SAFEARRAYUNION uArrayStructs;
+    SAFEARRAYBOUND[1] rgsabound;
+}
+alias wireSAFEARRAY SAFEARRAY ;
+
+alias wireSAFEARRAY * wirePSAFEARRAY;
+
+
+struct tagSAFEARRAY {
+    USHORT cDims;
+    USHORT fFeatures;
+    ULONG  cbElements;
+    ULONG  cLocks;
+    PVOID  pvData;
+    SAFEARRAYBOUND[1] rgsabound;
+}
+
+alias SAFEARRAY * LPSAFEARRAY;
+
+const USHORT FADF_AUTO       = 0x0001;  /* array is allocated on the stack */
+const USHORT FADF_STATIC     = 0x0002;  /* array is staticly allocated */
+const USHORT FADF_EMBEDDED   = 0x0004;  /* array is embedded in a structure */
+const USHORT FADF_FIXEDSIZE  = 0x0010;  /* may not be resized or reallocated */
+const USHORT FADF_RECORD     = 0x0020;  /* an array of records */
+const USHORT FADF_HAVEIID    = 0x0040;  /* with FADF_DISPATCH, FADF_UNKNOWN */
+                                        /* array has an IID for interfaces */
+const USHORT FADF_HAVEVARTYPE= 0x0080;  /* array has a VT type */
+const USHORT FADF_BSTR       = 0x0100;  /* an array of BSTRs */
+const USHORT FADF_UNKNOWN    = 0x0200;  /* an array of IUnknown* */
+const USHORT FADF_DISPATCH   = 0x0400;  /* an array of IDispatch* */
+const USHORT FADF_VARIANT    = 0x0800;  /* an array of VARIANTs */
+const USHORT FADF_RESERVED   = 0xF008;  /* reserved bits */
+
+
+// #########################################################################
+//      VARIANT
+// #########################################################################
+/*
+cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)")
+cpp_quote("#define __VARIANT_NAME_1 n1")
+cpp_quote("#define __VARIANT_NAME_2 n2")
+cpp_quote("#define __VARIANT_NAME_3 n3")
+cpp_quote("#define __VARIANT_NAME_4 brecVal")
+cpp_quote("#else")
+cpp_quote("#define __tagVARIANT")
+cpp_quote("#define __VARIANT_NAME_1")
+cpp_quote("#define __VARIANT_NAME_2")
+cpp_quote("#define __VARIANT_NAME_3")
+cpp_quote("#define __tagBRECORD")
+cpp_quote("#define __VARIANT_NAME_4")
+cpp_quote("#endif")
+*/
+
+/*struct brecVal_t {
+	PVOID         pvRecord;
+	IRecordInfo * pRecInfo;
+}*/
+struct brecVal_t {
+	PVOID         pvRecord;
+	IUnknown * pRecInfo;
+}
+
+alias double DOUBLE;
+alias double DATE;
+alias VARIANT_BOOL _VARIANT_BOOL;
+alias long CY;
+
+
+union n3_t {
+    LONG          lVal;         /* VT_I4                */
+    BYTE          bVal;         /* VT_UI1               */
+    SHORT         iVal;         /* VT_I2                */
+    FLOAT         fltVal;       /* VT_R4                */
+    DOUBLE        dblVal;       /* VT_R8                */
+    VARIANT_BOOL  boolVal;      /* VT_BOOL              */
+    _VARIANT_BOOL BOOLval;         /* (obsolete)           */
+    SCODE         scode;        /* VT_ERROR             */
+    CY            cyVal;        /* VT_CY                */
+    DATE          date;         /* VT_DATE              */
+    BSTR          bstrVal;      /* VT_BSTR              */
+    IUnknown     punkVal;      /* VT_UNKNOWN           */
+    IDispatch    pdispVal;     /* VT_DISPATCH          */
+    SAFEARRAY *   parray;       /* VT_ARRAY             */
+    BYTE *        pbVal;        /* VT_BYREF|VT_UI1      */
+    SHORT *       piVal;        /* VT_BYREF|VT_I2       */
+    LONG *        plVal;        /* VT_BYREF|VT_I4       */
+    FLOAT *       pfltVal;      /* VT_BYREF|VT_R4       */
+    DOUBLE *      pdblVal;      /* VT_BYREF|VT_R8       */
+    VARIANT_BOOL *pboolVal;     /* VT_BYREF|VT_BOOL     */
+    _VARIANT_BOOL *pbool;       /* (obsolete)           */
+    SCODE *       pscode;       /* VT_BYREF|VT_ERROR    */
+    CY *          pcyVal;       /* VT_BYREF|VT_CY       */
+    DATE *        pdate;        /* VT_BYREF|VT_DATE     */
+    BSTR *        pbstrVal;     /* VT_BYREF|VT_BSTR     */
+    IUnknown *   ppunkVal;     /* VT_BYREF|VT_UNKNOWN  */
+    IDispatch *   ppdispVal;    /* VT_BYREF|VT_DISPATCH */
+    SAFEARRAY **  pparray;      /* VT_BYREF|VT_ARRAY    */
+    VARIANT *     pvarVal;      /* VT_BYREF|VT_VARIANT  */
+    PVOID         byref;        /* Generic ByRef        */
+    CHAR          cVal;         /* VT_I1                */
+    USHORT        uiVal;        /* VT_UI2               */
+    ULONG         ulVal;        /* VT_UI4               */
+    INT           intVal;       /* VT_INT               */
+    UINT          uintVal;      /* VT_UINT              */
+    DECIMAL *     pdecVal;      /* VT_BYREF|VT_DECIMAL  */
+    CHAR *        pcVal;        /* VT_BYREF|VT_I1       */
+    USHORT *      puiVal;       /* VT_BYREF|VT_UI2      */
+    ULONG *       pulVal;       /* VT_BYREF|VT_UI4      */
+    INT *         pintVal;      /* VT_BYREF|VT_INT      */
+    UINT *        puintVal;     /* VT_BYREF|VT_UINT     */
+	brecVal_t brecVal;         /* VT_RECORD            */
+}
+
+struct n2_t {
+    VARTYPE vt;
+    WORD    wReserved1;
+    WORD    wReserved2;
+    WORD    wReserved3;
+    n3_t n3;
+};
+union n1_t {
+	n2_t n2;
+    DECIMAL decVal;
+};
+
+// in tango.sys.win32.Types
+/+
+struct VARIANT {
+	n1_t n1;
+
+	VARTYPE vt() { return n1.n2.vt; };
+	void vt(VARTYPE val) { n1.n2.vt = val; }
+	LONG lVal()  { return n1.n2.n3.lVal; }
+	void lVal(LONG val) { return n1.n2.n3.lVal = val; }
+	FLOAT fltVal()  { return n1.n2.n3.fltVal; }
+	void fltVal(FLOAT val) { return n1.n2.n3.fltVal = val; }
+	IDispatch pdispVal() { return n1.n2.n3.pdispVal; }
+	void pdispVal(IDispatch val) { n1.n2.n3.pdispVal = val; }
+	IUnknown punkVal() { return n1.n2.n3.punkVal; }
+	void punkVal(IUnknown val) { n1.n2.n3.punkVal = val; }
+	VARIANT_BOOL boolVal() { return n1.n2.n3.boolVal; }
+	void boolVal(VARIANT_BOOL val) { n1.n2.n3.boolVal = val; }
+	SHORT iVal() { return n1.n2.n3.iVal; }
+	void iVal(SHORT val) { n1.n2.n3.iVal = val; }
+	BSTR bstrVal() { return n1.n2.n3.bstrVal; }
+	void bstrVal(BSTR val) { n1.n2.n3.bstrVal = val; }
+
+};
++/
+
+
+/*
+struct VARIANT {
+	LONG[4] mmmm;
+}
+*/
+alias VARIANT * LPVARIANT;
+alias VARIANT VARIANTARG;
+alias VARIANT * LPVARIANTARG;
+
+/+
+struct _wireBRECORD {
+    ULONG fFlags;
+    ULONG clSize;
+    IRecordInfo pRecInfo;
+    byte * pRecord;
+};
+++++++++++++++++++++/
+
+
+/+
+struct _wireVARIANT {
+    DWORD  clSize;
+    DWORD  rpcReserved;
+    USHORT vt;
+    USHORT wReserved1;
+    USHORT wReserved2;
+    USHORT wReserved3;
+    [switch_type(ULONG), switch_is(vt)] union {
+    [case(VT_I4)]       LONG          lVal;         /* VT_I4                */
+    [case(VT_UI1)]      BYTE          bVal;         /* VT_UI1               */
+    [case(VT_I2)]       SHORT         iVal;         /* VT_I2                */
+    [case(VT_R4)]       FLOAT         fltVal;       /* VT_R4                */
+    [case(VT_R8)]       DOUBLE        dblVal;       /* VT_R8                */
+    [case(VT_BOOL)]     VARIANT_BOOL  boolVal;      /* VT_BOOL              */
+    [case(VT_ERROR)]    SCODE         scode;        /* VT_ERROR             */
+    [case(VT_CY)]       CY            cyVal;        /* VT_CY                */
+    [case(VT_DATE)]     DATE          date;         /* VT_DATE              */
+    [case(VT_BSTR)]     wireBSTR      bstrVal;      /* VT_BSTR              */
+    [case(VT_UNKNOWN)]  IUnknown *    punkVal;      /* VT_UNKNOWN           */
+    [case(VT_DISPATCH)] IDispatch *   pdispVal;     /* VT_DISPATCH          */
+    [case(VT_ARRAY)]    wireSAFEARRAY parray;       /* VT_ARRAY             */
+
+    [case(VT_RECORD, VT_RECORD|VT_BYREF)]
+                        wireBRECORD   brecVal;      /* VT_RECORD            */
+
+    [case(VT_UI1|VT_BYREF)]
+                        BYTE *        pbVal;        /* VT_BYREF|VT_UI1      */
+    [case(VT_I2|VT_BYREF)]
+                        SHORT *       piVal;        /* VT_BYREF|VT_I2       */
+    [case(VT_I4|VT_BYREF)]
+                        LONG *        plVal;        /* VT_BYREF|VT_I4       */
+    [case(VT_R4|VT_BYREF)]
+                        FLOAT *       pfltVal;      /* VT_BYREF|VT_R4       */
+    [case(VT_R8|VT_BYREF)]
+                        DOUBLE *      pdblVal;      /* VT_BYREF|VT_R8       */
+    [case(VT_BOOL|VT_BYREF)]
+                        VARIANT_BOOL *pboolVal;     /* VT_BYREF|VT_BOOL     */
+    [case(VT_ERROR|VT_BYREF)]
+                        SCODE *       pscode;       /* VT_BYREF|VT_ERROR    */
+    [case(VT_CY|VT_BYREF)]
+                        CY *          pcyVal;       /* VT_BYREF|VT_CY       */
+    [case(VT_DATE|VT_BYREF)]
+                        DATE *        pdate;        /* VT_BYREF|VT_DATE     */
+    [case(VT_BSTR|VT_BYREF)]
+                        wireBSTR *    pbstrVal;     /* VT_BYREF|VT_BSTR     */
+    [case(VT_UNKNOWN|VT_BYREF)]
+                        IUnknown **   ppunkVal;     /* VT_BYREF|VT_UNKNOWN  */
+    [case(VT_DISPATCH|VT_BYREF)]
+                        IDispatch **  ppdispVal;    /* VT_BYREF|VT_DISPATCH */
+    [case(VT_ARRAY|VT_BYREF)]
+                        wireSAFEARRAY *pparray;     /* VT_BYREF|VT_ARRAY    */
+    [case(VT_VARIANT|VT_BYREF)]
+                        wireVARIANT * pvarVal;      /* VT_BYREF|VT_VARIANT  */
+
+    [case(VT_I1)]       CHAR          cVal;         /* VT_I1                */
+    [case(VT_UI2)]      USHORT        uiVal;        /* VT_UI2               */
+    [case(VT_UI4)]      ULONG         ulVal;        /* VT_UI4               */
+    [case(VT_INT)]      INT           intVal;       /* VT_INT               */
+    [case(VT_UINT)]     UINT          uintVal;      /* VT_UINT              */
+    [case(VT_DECIMAL)]  DECIMAL       decVal;       /* VT_DECIMAL           */
+
+    [case(VT_BYREF|VT_DECIMAL)]
+                        DECIMAL *     pdecVal;      /* VT_BYREF|VT_DECIMAL  */
+    [case(VT_BYREF|VT_I1)]
+                        CHAR *        pcVal;        /* VT_BYREF|VT_I1       */
+    [case(VT_BYREF|VT_UI2)]
+                        USHORT *      puiVal;       /* VT_BYREF|VT_UI2      */
+    [case(VT_BYREF|VT_UI4)]
+                        ULONG *       pulVal;       /* VT_BYREF|VT_UI4      */
+    [case(VT_BYREF|VT_INT)]
+                        INT *         pintVal;      /* VT_BYREF|VT_INT      */
+    [case(VT_BYREF|VT_UINT)]
+                        UINT *        puintVal;     /* VT_BYREF|VT_UINT     */
+    [case(VT_EMPTY)]    ;                           /* nothing              */
+    [case(VT_NULL)]     ;                           /* nothing              */
+    };
+};
++/
+
+//########################################################################
+//     End of VARIANT & SAFEARRAY
+//########################################################################
+
+
+//TypeInfo stuff.
+
+alias LONG DISPID;
+alias DISPID MEMBERID;
+alias DWORD HREFTYPE;
+
+enum TYPEKIND {
+    TKIND_ENUM = 0,
+    TKIND_RECORD,
+    TKIND_MODULE,
+    TKIND_INTERFACE,
+    TKIND_DISPATCH,
+    TKIND_COCLASS,
+    TKIND_ALIAS,
+    TKIND_UNION,
+    TKIND_MAX                   /* end of enum marker */
+}
+union TD_00{
+        TYPEDESC * lptdesc;
+        ARRAYDESC * lpadesc;
+		  HREFTYPE hreftype;
+};
+
+struct TYPEDESC {
+    TD_00 u;
+    VARTYPE vt;
+}
+
+struct ARRAYDESC {
+    TYPEDESC tdescElem;         /* element type */
+    USHORT cDims;               /* dimension count */
+    SAFEARRAYBOUND[1] rgbounds; /* var len array of bounds */
+}
+
+// parameter description
+struct PARAMDESCEX {
+    ULONG cBytes;               /* size of this structure */
+    VARIANTARG varDefaultValue; /* default value of this parameter */
+}
+alias PARAMDESCEX * LPPARAMDESCEX;
+
+struct PARAMDESC {
+    LPPARAMDESCEX pparamdescex; /* valid if PARAMFLAG_FHASDEFAULT bit is set */
+    USHORT wParamFlags;         /* IN, OUT, etc */
+}
+alias PARAMDESC * LPPARAMDESC;
+
+const USHORT PARAMFLAG_NONE         = 0x00;
+const USHORT PARAMFLAG_FIN          = 0x01;
+const USHORT PARAMFLAG_FOUT         = 0x02;
+const USHORT PARAMFLAG_FLCID        = 0x04;
+const USHORT PARAMFLAG_FRETVAL      = 0x08;
+const USHORT PARAMFLAG_FOPT         = 0x10;
+const USHORT PARAMFLAG_FHASDEFAULT  = 0x20;
+const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
+
+struct IDLDESC {
+    ULONG dwReserved;
+    USHORT wIDLFlags;           /* IN, OUT, etc */
+}
+alias IDLDESC * LPIDLDESC;
+
+const USHORT IDLFLAG_NONE    = PARAMFLAG_NONE;
+const USHORT IDLFLAG_FIN     = PARAMFLAG_FIN;
+const USHORT IDLFLAG_FOUT    = PARAMFLAG_FOUT;
+const USHORT IDLFLAG_FLCID   = PARAMFLAG_FLCID;
+const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
+
+
+struct ELEMDESC {    /* a format that MIDL likes */
+    TYPEDESC tdesc;             /* the type of the element */
+    PARAMDESC paramdesc;        /* IDLDESC is a subset of PARAMDESC */
+}
+
+struct TYPEATTR {
+    GUID guid;                  /* the GUID of the TypeInfo */
+    LCID lcid;                  /* locale of member names and doc strings */
+    DWORD dwReserved;
+    MEMBERID memidConstructor;  /* ID of constructor, MEMBERID_NIL if none */
+    MEMBERID memidDestructor;   /* ID of destructor, MEMBERID_NIL if none */
+    LPOLESTR lpstrSchema;
+    ULONG cbSizeInstance;       /* the size of an instance of this type */
+    TYPEKIND typekind;          /* the kind of type this typeinfo describes */
+    WORD cFuncs;                /* number of functions */
+    WORD cVars;                 /* number of variables / data members */
+    WORD cImplTypes;            /* number of implemented interfaces */
+    WORD cbSizeVft;             /* the size of this types virtual func table */
+    WORD cbAlignment;           /* specifies the alignment requirements for
+                                   an instance of this type,
+                                   0 = align on 64k boundary
+                                   1 = byte align
+                                   2 = word align
+                                   4 = dword align... */
+    WORD wTypeFlags;
+    WORD wMajorVerNum;          /* major version number */
+    WORD wMinorVerNum;          /* minor version number */
+    TYPEDESC tdescAlias;        /* if typekind == TKIND_ALIAS this field
+                                   specifies the type for which this type
+                                   is an alias */
+    IDLDESC idldescType;        /* IDL attributes of the described type */
+}
+alias TYPEATTR * LPTYPEATTR;
+
+
+struct DISPPARAMS {
+    VARIANTARG * rgvarg;
+    DISPID * rgdispidNamedArgs;
+    UINT cArgs;
+    UINT cNamedArgs;
+}
+
+struct EXCEPINFO {
+    WORD  wCode;            /* An error code describing the error. */
+    WORD  wReserved;
+    BSTR  bstrSource;       /* A source of the exception */
+    BSTR  bstrDescription;  /* A description of the error */
+    BSTR  bstrHelpFile;     /* Fully qualified drive, path, and file name */
+    DWORD dwHelpContext;    /* help context of topic within the help file */
+    ULONG pvReserved;
+    ULONG pfnDeferredFillIn;
+    SCODE scode;
+}
+/+
+
+cpp_quote("#else /* 0 */")
+cpp_quote("typedef struct tagEXCEPINFO {")
+cpp_quote("    WORD  wCode;")
+cpp_quote("    WORD  wReserved;")
+cpp_quote("    BSTR  bstrSource;")
+cpp_quote("    BSTR  bstrDescription;")
+cpp_quote("    BSTR  bstrHelpFile;")
+cpp_quote("    DWORD dwHelpContext;")
+cpp_quote("    PVOID pvReserved;")
+cpp_quote("    HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
+cpp_quote("    SCODE scode;")
+cpp_quote("} EXCEPINFO, * LPEXCEPINFO;")
+cpp_quote("#endif /* 0 */")
++/
+
+enum CALLCONV {
+    CC_FASTCALL = 0,
+    CC_CDECL = 1,
+    CC_MSCPASCAL,
+    CC_PASCAL = CC_MSCPASCAL,
+    CC_MACPASCAL,
+    CC_STDCALL,
+    CC_FPFASTCALL,
+    CC_SYSCALL,
+    CC_MPWCDECL,
+    CC_MPWPASCAL,
+    CC_MAX          /* end of enum marker */
+}
+enum FUNCKIND {
+    FUNC_VIRTUAL,
+    FUNC_PUREVIRTUAL,
+    FUNC_NONVIRTUAL,
+    FUNC_STATIC,
+    FUNC_DISPATCH
+}
+
+enum INVOKEKIND {
+    INVOKE_FUNC = 1,
+    INVOKE_PROPERTYGET = 2,
+    INVOKE_PROPERTYPUT = 4,
+    INVOKE_PROPERTYPUTREF = 8
+}
+
+struct FUNCDESC {
+    MEMBERID memid;
+    SCODE * lprgscode;
+    ELEMDESC * lprgelemdescParam; /* array of param types */
+    FUNCKIND funckind;
+    INVOKEKIND invkind;
+    CALLCONV callconv;
+    SHORT cParams;
+    SHORT cParamsOpt;
+    SHORT oVft;
+    SHORT cScodes;
+    ELEMDESC elemdescFunc;
+    WORD wFuncFlags;
+}
+alias FUNCDESC * LPFUNCDESC;
+
+enum VARKIND {
+    VAR_PERINSTANCE,
+    VAR_STATIC,
+    VAR_CONST,
+    VAR_DISPATCH
+}
+/* IMPLTYPE Flags */
+const USHORT IMPLTYPEFLAG_FDEFAULT      = 0x1;
+const USHORT IMPLTYPEFLAG_FSOURCE       = 0x2;
+const USHORT IMPLTYPEFLAG_FRESTRICTED   = 0x4;
+const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8;
+
+union VD_u {
+        /* offset of variable within the instance */
+	ULONG oInst;
+	VARIANT * lpvarValue; /* the value of the constant */
+}
+struct VARDESC {
+    MEMBERID memid;
+    LPOLESTR lpstrSchema;
+    VD_u u;
+    ELEMDESC elemdescVar;
+    WORD     wVarFlags;
+    VARKIND  varkind;
+}
+alias VARDESC * LPVARDESC;
+
+enum TYPEFLAGS {
+    TYPEFLAG_FAPPOBJECT = 0x01,
+    TYPEFLAG_FCANCREATE = 0x02,
+    TYPEFLAG_FLICENSED = 0x04,
+    TYPEFLAG_FPREDECLID = 0x08,
+    TYPEFLAG_FHIDDEN = 0x10,
+    TYPEFLAG_FCONTROL = 0x20,
+    TYPEFLAG_FDUAL = 0x40,
+    TYPEFLAG_FNONEXTENSIBLE = 0x80,
+    TYPEFLAG_FOLEAUTOMATION = 0x100,
+    TYPEFLAG_FRESTRICTED = 0x200,
+    TYPEFLAG_FAGGREGATABLE = 0x400,
+    TYPEFLAG_FREPLACEABLE = 0x800,
+    TYPEFLAG_FDISPATCHABLE = 0x1000,
+    TYPEFLAG_FREVERSEBIND = 0x2000
+}
+
+enum FUNCFLAGS {
+    FUNCFLAG_FRESTRICTED = 0x1,
+    FUNCFLAG_FSOURCE = 0x2,
+    FUNCFLAG_FBINDABLE = 0x4,
+    FUNCFLAG_FREQUESTEDIT = 0x8,
+    FUNCFLAG_FDISPLAYBIND = 0x10,
+    FUNCFLAG_FDEFAULTBIND = 0x20,
+    FUNCFLAG_FHIDDEN = 0x40,
+    FUNCFLAG_FUSESGETLASTERROR = 0x80,
+    FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
+    FUNCFLAG_FUIDEFAULT = 0x200,
+    FUNCFLAG_FNONBROWSABLE = 0x400,
+    FUNCFLAG_FREPLACEABLE = 0x800,
+    FUNCFLAG_FIMMEDIATEBIND = 0x1000
+}
+
+enum VARFLAGS {
+    VARFLAG_FREADONLY = 0x1,
+    VARFLAG_FSOURCE = 0x2,
+    VARFLAG_FBINDABLE = 0x4,
+    VARFLAG_FREQUESTEDIT = 0x8,
+    VARFLAG_FDISPLAYBIND = 0x10,
+    VARFLAG_FDEFAULTBIND = 0x20,
+    VARFLAG_FHIDDEN = 0x40,
+    VARFLAG_FRESTRICTED = 0x80,
+    VARFLAG_FDEFAULTCOLLELEM = 0x100,
+    VARFLAG_FUIDEFAULT = 0x200,
+    VARFLAG_FNONBROWSABLE = 0x400,
+    VARFLAG_FREPLACEABLE = 0x800,
+    VARFLAG_FIMMEDIATEBIND = 0x1000
+}
+
+struct CLEANLOCALSTORAGE {
+    IUnknown pInterface;      /* interface that is responsible for storage */
+    PVOID pStorage;             /* the storage being managed by interface */
+    DWORD flags;                /* which interface, what storage */
+}
+
+struct CUSTDATAITEM {
+    GUID guid;           /* guid identifying this custom data item */
+    VARIANTARG varValue; /* value of this custom data item */
+}
+alias CUSTDATAITEM * LPCUSTDATAITEM;
+
+struct CUSTDATA {
+    DWORD cCustData;            /* number of custom data items in rgCustData */
+    LPCUSTDATAITEM prgCustData;
+                                /* array of custom data items */
+}
+alias CUSTDATA * LPCUSTDATA;
+
+
+interface ICreateTypeInfo: IUnknown
+{
+    HRESULT SetGuid( REFGUID guid );
+    HRESULT SetTypeFlags( UINT uTypeFlags );
+    HRESULT SetDocString( LPOLESTR pStrDoc );
+    HRESULT SetHelpContext( DWORD dwHelpContext);
+    HRESULT SetVersion( WORD wMajorVerNum, WORD wMinorVerNum );
+    HRESULT AddRefTypeInfo( ITypeInfo pTInfo, HREFTYPE * phRefType );
+    HRESULT AddFuncDesc( UINT index, FUNCDESC * pFuncDesc            );
+    HRESULT AddImplType( UINT index, HREFTYPE hRefType             );
+    HRESULT SetImplTypeFlags( UINT index, INT implTypeFlags            );
+    HRESULT SetAlignment( WORD cbAlignment             );
+    HRESULT SetSchema( LPOLESTR pStrSchema            );
+    HRESULT AddVarDesc( UINT index, VARDESC * pVarDesc            );
+    HRESULT SetFuncAndParamNames( UINT index, LPOLESTR * rgszNames, UINT cNames );
+    HRESULT SetVarName( UINT index, LPOLESTR szName         );
+    HRESULT SetTypeDescAlias( TYPEDESC * pTDescAlias    );
+    HRESULT DefineFuncAsDllEntry( UINT index,LPOLESTR szDllName,LPOLESTR szProcName            );
+    HRESULT SetFuncDocString( UINT index, LPOLESTR szDocString            );
+    HRESULT SetVarDocString(UINT index,LPOLESTR szDocString            );
+    HRESULT SetFuncHelpContext(UINT index,DWORD dwHelpContext            );
+    HRESULT SetVarHelpContext(UINT index,DWORD dwHelpContext            );
+    HRESULT SetMops(UINT index,BSTR bstrMops            );
+    HRESULT SetTypeIdldesc(IDLDESC * pIdlDesc            );
+    HRESULT LayOut();
+}
+alias ICreateTypeInfo LPCREATETYPEINFO;
+
+interface ICreateTypeInfo2: ICreateTypeInfo
+{
+	HRESULT DeleteFuncDesc(UINT index);
+	HRESULT DeleteFuncDescByMemId(MEMBERID memid,INVOKEKIND invKind);
+	HRESULT DeleteVarDesc(UINT index);
+	HRESULT DeleteVarDescByMemId(MEMBERID memid);
+	HRESULT DeleteImplType(UINT index);
+	HRESULT SetCustData(REFGUID guid,VARIANT * pVarVal);
+	HRESULT SetFuncCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
+	HRESULT SetParamCustData(UINT indexFunc,UINT indexParam,REFGUID guid,VARIANT * pVarVal);
+	HRESULT SetVarCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
+	HRESULT SetImplTypeCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
+	HRESULT SetHelpStringContext(ULONG dwHelpStringContext);
+	HRESULT SetFuncHelpStringContext(UINT index,ULONG dwHelpStringContext);
+	HRESULT SetVarHelpStringContext(UINT index,ULONG dwHelpStringContext);
+	HRESULT Invalidate();
+	HRESULT SetName(LPOLESTR szName);
+}
+alias ICreateTypeInfo2 LPCREATETYPEINFO2;
+
+interface ICreateTypeLib : IUnknown
+{
+	HRESULT CreateTypeInfo(LPOLESTR szName,TYPEKIND tkind,ICreateTypeInfo * ppCTInfo);
+	HRESULT SetName(LPOLESTR szName);
+	HRESULT SetVersion(WORD wMajorVerNum,WORD wMinorVerNum);
+	HRESULT SetGuid(REFGUID guid);
+	HRESULT SetDocString( LPOLESTR szDoc);
+	HRESULT SetHelpFileName(LPOLESTR szHelpFileName);
+	HRESULT SetHelpContext(DWORD dwHelpContext);
+	HRESULT SetLcid(LCID lcid);
+	HRESULT SetLibFlags(UINT uLibFlags);
+	HRESULT SaveAllChanges();
+}
+alias ICreateTypeLib LPCREATETYPELIB;
+
+interface ICreateTypeLib2 : ICreateTypeLib
+{
+	HRESULT DeleteTypeInfo(LPOLESTR szName);
+	HRESULT SetCustData(REFGUID guid,VARIANT * pVarVal);
+	HRESULT SetHelpStringContext(ULONG dwHelpStringContext);
+	HRESULT SetHelpStringDll(LPOLESTR szFileName);
+}
+
+interface IDispatch : IUnknown
+{
+HRESULT GetTypeInfoCount(UINT * pctinfo);
+HRESULT GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo * ppTInfo);
+HRESULT GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId);
+HRESULT Invoke(DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS* pDispParams,VARIANT* pVarResult,EXCEPINFO* pExcepInfo,UINT* puArgErr);
+}
+alias IDispatch LPDISPATCH;
+const DISPID DISPID_UNKNOWN = cast(DISPID)-1;
+const DISPID DISPID_VALUE = cast(DISPID)0;
+const DISPID DISPID_PROPERTYPUT = cast(DISPID)-3;
+const DISPID DISPID_NEWENUM = cast(DISPID)-4;
+const DISPID DISPID_EVALUATE = cast(DISPID)-5;
+const DISPID DISPID_CONSTRUCTOR = cast(DISPID)-6;
+const DISPID DISPID_DESTRUCTOR = cast(DISPID)-7;
+const DISPID DISPID_COLLECT = cast(DISPID)-8;
+
+/+++++++++++++++++++++++++++++++++++++++
+
+[
+    object,
+    uuid(00020404-0000-0000-C000-000000000046),
+    pointer_default(unique)
+]
+
+interface IEnumVARIANT : IUnknown
+{
+    typedef [unique] IEnumVARIANT* LPENUMVARIANT;
+
+    [local]
+    HRESULT Next(
+                [in] ULONG celt,
+                [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
+                [out] ULONG * pCeltFetched
+            );
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+                [in] ULONG celt,
+                [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
+                [out] ULONG * pCeltFetched
+            );
+
+    HRESULT Skip(
+                [in] ULONG celt
+            );
+
+    HRESULT Reset(
+            );
+
+    HRESULT Clone(
+                [out] IEnumVARIANT ** ppEnum
+            );
+}
+
+
++/
+enum DESCKIND {
+        DESCKIND_NONE = 0,
+        DESCKIND_FUNCDESC,
+        DESCKIND_VARDESC,
+        DESCKIND_TYPECOMP,
+        DESCKIND_IMPLICITAPPOBJ,
+        DESCKIND_MAX
+}
+
+
+union BINDPTR {
+        FUNCDESC  * lpfuncdesc;
+        VARDESC   * lpvardesc;
+        ITypeComp lptcomp;
+}
+alias BINDPTR * LPBINDPTR;
+
+interface ITypeComp : IUnknown
+{
+
+    HRESULT Bind(LPOLESTR szName,ULONG lHashVal,WORD wFlags,
+ITypeInfo * ppTInfo,DESCKIND * pDescKind,BINDPTR * pBindPtr
+            );
+
+
+    HRESULT BindType( LPOLESTR szName,ULONG lHashVal,
+						ITypeInfo * ppTInfo,
+						ITypeComp * ppTComp
+            );
+
+}
+
+interface ITypeInfo : IUnknown
+{
+    HRESULT GetTypeAttr(TYPEATTR ** ppTypeAttr);
+    HRESULT GetTypeComp( ITypeComp * ppTComp );
+    HRESULT GetFuncDesc( UINT index, FUNCDESC ** ppFuncDesc );
+    HRESULT GetVarDesc( UINT index,VARDESC ** ppVarDesc);
+    HRESULT GetNames(MEMBERID memid,BSTR * rgBstrNames,UINT cMaxNames,UINT * pcNames);
+    HRESULT GetRefTypeOfImplType(UINT index,HREFTYPE * pRefType);
+    HRESULT GetImplTypeFlags(UINT index,INT * pImplTypeFlags);
+    HRESULT GetIDsOfNames(LPOLESTR * rgszNames,UINT cNames,MEMBERID * pMemId);
+    HRESULT Invoke(PVOID pvInstance,MEMBERID memid,WORD wFlags,DISPPARAMS * pDispParams,VARIANT * pVarResult,EXCEPINFO * pExcepInfo,UINT * puArgErr);
+    HRESULT GetDocumentation(MEMBERID memid,BSTR * pBstrName,BSTR * pBstrDocString,DWORD * pdwHelpContext,BSTR * pBstrHelpFile);
+    HRESULT GetDllEntry(MEMBERID memid,INVOKEKIND invKind,BSTR * pBstrDllName,BSTR * pBstrName,WORD * pwOrdinal);
+    HRESULT GetRefTypeInfo(HREFTYPE hRefType,ITypeInfo * ppTInfo);
+    HRESULT AddressOfMember(MEMBERID memid,INVOKEKIND invKind,PVOID * ppv);
+    HRESULT CreateInstance(IUnknown pUnkOuter,REFIID riid,PVOID * ppvObj);
+    HRESULT GetMops(MEMBERID memid,BSTR * pBstrMops);
+    HRESULT GetContainingTypeLib( ITypeLib ** ppTLib,UINT * pIndex);
+    void ReleaseTypeAttr(TYPEATTR * pTypeAttr );
+    void ReleaseFuncDesc( FUNCDESC * pFuncDesc  );
+    void ReleaseVarDesc(VARDESC * pVarDesc            );
+}
+alias ITypeInfo LPTYPEINFO;
+
+interface ITypeInfo2 : ITypeInfo
+{
+	HRESULT GetTypeKind(TYPEKIND * pTypeKind);
+	HRESULT GetTypeFlags(ULONG * pTypeFlags);
+	HRESULT GetFuncIndexOfMemId(MEMBERID memid,INVOKEKIND invKind,UINT * pFuncIndex);
+	HRESULT GetVarIndexOfMemId(MEMBERID memid,UINT * pVarIndex);
+	HRESULT GetCustData(REFGUID guid,VARIANT * pVarVal);
+	HRESULT GetFuncCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
+	HRESULT GetParamCustData(UINT indexFunc,UINT indexParam,REFGUID guid,VARIANT * pVarVal);
+	HRESULT GetVarCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
+	HRESULT GetImplTypeCustData(UINT index,REFGUID guid,VARIANT * pVarVal);
+	HRESULT GetDocumentation2(MEMBERID memid,LCID lcid,BSTR *pbstrHelpString,DWORD *pdwHelpStringContext,BSTR *pbstrHelpStringDll);
+	HRESULT GetAllCustData(CUSTDATA * pCustData);
+	HRESULT GetAllFuncCustData(UINT index,CUSTDATA * pCustData);
+	HRESULT GetAllParamCustData(UINT indexFunc,UINT indexParam,CUSTDATA * pCustData);
+	HRESULT GetAllVarCustData(UINT index,CUSTDATA * pCustData);
+	HRESULT GetAllImplTypeCustData(UINT index,CUSTDATA * pCustData);
+}
+
+alias ITypeInfo2 LPTYPEINFO2;
+
+enum SYSKIND {
+        SYS_WIN16 = 0,
+        SYS_WIN32,
+        SYS_MAC
+}
+
+enum LIBFLAGS {
+        LIBFLAG_FRESTRICTED = 0x01,
+        LIBFLAG_FCONTROL = 0x02,
+        LIBFLAG_FHIDDEN = 0x04,
+        LIBFLAG_FHASDISKIMAGE = 0x08
+}
+
+struct TLIBATTR {
+        GUID guid;
+        LCID lcid;
+        SYSKIND syskind;
+        WORD wMajorVerNum;
+        WORD wMinorVerNum;
+        WORD wLibFlags;
+}
+alias TLIBATTR * LPTLIBATTR;
+
+interface ITypeLib : IUnknown
+{
+    UINT GetTypeInfoCount(
+            );
+
+    HRESULT GetTypeInfo(
+	UINT index,
+ITypeInfo * ppTInfo
+            );
+
+HRESULT GetTypeInfoType(
+	UINT index,
+	TYPEKIND * pTKind
+            );
+
+   HRESULT GetTypeInfoOfGuid(
+	REFGUID guid,
+	ITypeInfo * ppTinfo
+            );
+
+    HRESULT GetLibAttr(
+			TLIBATTR ** ppTLibAttr
+);
+
+    HRESULT GetTypeComp(ITypeComp * ppTComp            );
+
+    HRESULT GetDocumentation(INT index,BSTR * pBstrName,BSTR * pBstrDocString,DWORD * pdwHelpContext,BSTR * pBstrHelpFile
+            );
+
+    HRESULT IsName(LPOLESTR szNameBuf,ULONG lHashVal,BOOL * pfName
+            );
+
+    HRESULT FindName(
+			LPOLESTR szNameBuf,
+			ULONG lHashVal,
+			ITypeInfo * ppTInfo,
+			MEMBERID * rgMemId,
+			USHORT * pcFound
+	);
+
+    void ReleaseTLibAttr(		TLIBATTR * pTLibAttr            );
+}
+
+alias ITypeLib  LPTYPELIB;
+
+interface ITypeLib2 : ITypeLib
+{
+	HRESULT GetCustData(REFGUID guid,VARIANT * pVarVal);
+	HRESULT GetLibStatistics(ULONG * pcUniqueNames,ULONG * pcchUniqueNames);
+	HRESULT GetDocumentation2(INT index,LCID lcid,BSTR *pbstrHelpString,DWORD *pdwHelpStringContext,BSTR *pbstrHelpStringDll);
+	HRESULT GetAllCustData(CUSTDATA * pCustData);
+}
+alias ITypeLib2 LPTYPELIB2;
+
+enum CHANGEKIND {
+        CHANGEKIND_ADDMEMBER,
+        CHANGEKIND_DELETEMEMBER,
+        CHANGEKIND_SETNAMES,
+        CHANGEKIND_SETDOCUMENTATION,
+        CHANGEKIND_GENERAL,
+        CHANGEKIND_INVALIDATE,
+        CHANGEKIND_CHANGEFAILED,
+        CHANGEKIND_MAX,
+        ADDMEMBER    = CHANGEKIND_ADDMEMBER,
+        DELETEMEMBER = CHANGEKIND_DELETEMEMBER,
+        SETNAMES     = CHANGEKIND_SETNAMES,
+        SETDOCUMENTATION = CHANGEKIND_SETDOCUMENTATION,
+        GENERAL          = CHANGEKIND_GENERAL,
+        INVALIDATE       = CHANGEKIND_INVALIDATE,
+        CHANGEFAILED     = CHANGEKIND_CHANGEFAILED,
+        MAX       = CHANGEKIND_MAX
+}
+
+interface ITypeChangeEvents: IUnknown
+{
+    // notification messages used by the dynamic typeinfo protocol.
+    HRESULT RequestTypeChange(CHANGEKIND changeKind,ITypeInfo pTInfoBefore,LPOLESTR pStrName,INT * pfCancel);
+    HRESULT AfterTypeChange(CHANGEKIND changeKind,ITypeInfo pTInfoAfter,LPOLESTR pStrName);
+}
+alias ITypeChangeEvents LPTYPECHANGEEVENTS;
+
+interface IErrorInfo: IUnknown
+{
+	HRESULT GetGUID( GUID * pGUID );
+	HRESULT GetSource(BSTR * pBstrSource);
+	HRESULT GetDescription(BSTR * pBstrDescription);
+	HRESULT GetHelpFile(BSTR * pBstrHelpFile);
+	HRESULT GetHelpContext(DWORD * pdwHelpContext);
+}
+alias IErrorInfo LPERRORINFO;
+
+interface ICreateErrorInfo: IUnknown
+{
+	HRESULT SetGUID(REFGUID rguid);
+	HRESULT SetSource(LPOLESTR szSource);
+	HRESULT SetDescription(LPOLESTR szDescription);
+	HRESULT SetHelpFile(LPOLESTR szHelpFile);
+	HRESULT SetHelpContext(DWORD dwHelpContext);
+}
+alias ICreateErrorInfo LPCREATEERRORINFO;
+
+interface ISupportErrorInfo: IUnknown
+{
+	HRESULT InterfaceSupportsErrorInfo(REFIID riid);
+}
+alias ISupportErrorInfo LPSUPPORTERRORINFO;
+
+interface ITypeFactory : IUnknown
+{
+	HRESULT CreateFromTypeInfo(ITypeInfo pTypeInfo,REFIID riid, IUnknown *ppv);
+}
+
+interface ITypeMarshal : IUnknown
+{
+    HRESULT Size(PVOID pvType,DWORD dwDestContext,PVOID pvDestContext,ULONG * pSize);
+    HRESULT Marshal(PVOID pvType,DWORD dwDestContext,PVOID pvDestContext,ULONG cbBufferLength,BYTE  * pBuffer,ULONG * pcbWritten);
+    HRESULT Unmarshal(PVOID pvType,DWORD dwFlags,ULONG cbBufferLength,BYTE  * pBuffer,ULONG * pcbRead);
+    HRESULT Free(PVOID pvType);
+}
+
+
+interface IRecordInfo: IUnknown
+{
+	HRESULT RecordInit(PVOID pvNew);
+	HRESULT RecordClear(PVOID pvExisting);
+	HRESULT RecordCopy(PVOID pvExisting,PVOID pvNew);
+	HRESULT GetGuid(GUID * pguid);
+	HRESULT GetName(BSTR * pbstrName);
+	HRESULT GetSize(ULONG * pcbSize);
+	HRESULT GetTypeInfo(ITypeInfo * ppTypeInfo);
+	HRESULT GetField(PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField);
+	HRESULT GetFieldNoCopy(PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField,PVOID * ppvDataCArray);
+	HRESULT PutField(ULONG wFlags,PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField);
+	HRESULT PutFieldNoCopy(ULONG wFlags,PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField);
+	HRESULT GetFieldNames(ULONG * pcNames,BSTR * rgBstrNames);
+	BOOL IsMatchingType(IRecordInfo pRecordInfo);
+	PVOID RecordCreate();
+	HRESULT RecordCreateCopy(PVOID pvSource,PVOID * ppvDest);
+	HRESULT RecordDestroy(PVOID pvRecord);
+}
+alias IRecordInfo LPRECORDINFO;
+
+} // extern(WIndows);
+
+
--- a/dwt/internal/ole/win32/OBJIDL.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/ole/win32/OBJIDL.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,2744 +1,2744 @@
-module dwt.internal.ole.win32.OBJIDL;
-//+-------------------------------------------------------------------------
-//
-//  Microsoft Windows
-//  Copyright (C) Microsoft Corporation, 1992-1997.
-//
-//  File: objidl.idl
-//
-//--------------------------------------------------------------------------
-
-
-private import dwt.internal.ole.win32.extras;
-private import dwt.internal.win32.WINTYPES;
-// private import std.c.windows.windows;
-// private import std.c.windows.com;
-// private import dwt.internal.win32.os;
-
-
-/* *NEED* to port wtypes.h */
-
-extern( Windows ) {
-
-
-
-
-//#ifndef DO_NO_IMPORTS
-//import "unknwn.idl";
-//import "wtypes.idl";
-//#endif
-
-enum SRVINFO
-{
-    SRVINFO_F_COSERVERINFO = 0,
-    SRVINFO_F_COSERVERINFO2 = 1
-}
-
-struct COSERVERINFO
-{
-    DWORD             dwReserved1;
-    LPWSTR            pwszName;
-    COAUTHINFO *      pAuthInfo;
-    DWORD             dwReserved2;
-}
-
-struct COSERVERINFO2 {
-    DWORD           dwFlags;
-    LPWSTR          pwszName;
-    COAUTHINFO*     pAuthInfo;
-    IUnknown*       ppCall;
-    LPWSTR          pwszCodeURL;
-    DWORD           dwFileVersionMS;
-    DWORD           dwFileVersionLS;
-    LPWSTR          pwszContentType;
-}
-
-
-/****************************************************************************
- *  Component Object Interfaces
- ****************************************************************************/
-
-interface IMarshal : IUnknown
-{
-	HRESULT GetUnmarshalClass( REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *pCid );
-	HRESULT GetMarshalSizeMax( REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, DWORD *pSize );
-	HRESULT MarshalInterface( IStream pStm, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags );
-	HRESULT UnmarshalInterface( IStream pStm, REFIID riid, void **ppv );
-	HRESULT ReleaseMarshalData( IStream pStm );
-	HRESULT DisconnectObject( DWORD dwReserved );
-}
-alias IMarshal LPMARSHAL;
-
-interface IMalloc : IUnknown
-{
-	void * Alloc( ULONG cb );
-	void * Realloc( void * pv, ULONG cb );
-	void   Free( void * pv );
-	ULONG  GetSize( void * pv );
-	int    DidAlloc( void * pv );
-	void   HeapMinimize();
-}
-alias IMalloc LPMALLOC;
-
-interface IMallocSpy : IUnknown
-{
-	ULONG   PreAlloc( ULONG cbRequest );
-	void  * PostAlloc( void * pActual );
-	void  * PreFree( void *pRequest, BOOL  fSpyed );
-	void    PostFree( BOOL  fSpyed );
-	ULONG   PreRealloc( void   *pRequest, ULONG   cbRequest, void **ppNewRequest, BOOL    fSpyed );
-	void  * PostRealloc( void *pActual, BOOL  fSpyed );
-	void  * PreGetSize( void *pRequest, BOOL  fSpyed );
-	ULONG   PostGetSize( ULONG cbActual, BOOL  fSpyed );
-	void  * PreDidAlloc( void * pRequest, BOOL  fSpyed );
-	int    PostDidAlloc( void *pRequest, BOOL  fSpyed, int   fActual );
-	void  PreHeapMinimize();
-	void  PostHeapMinimize();
-}
-alias IMallocSpy LPMALLOCSPY;
-
-interface IStdMarshalInfo : IUnknown
-{
-	HRESULT GetClassForHandler( DWORD dwDestContext, void *pvDestContext, CLSID *pClsid );
-}
-alias IStdMarshalInfo LPSTDMARSHALINFO;
-
-    // bit flags for IExternalConnection
-enum EXTCONN
-{
-	EXTCONN_STRONG      = 0x0001,   // strong connection
-	EXTCONN_WEAK        = 0x0002,   // weak connection (table, container)
-	EXTCONN_CALLABLE    = 0x0004,   // table .vs. callable
-}
-
-interface IExternalConnection : IUnknown
-{
-    // *** IExternalConnection methods ***
-	DWORD AddConnection( DWORD extconn, DWORD reserved );
-	DWORD ReleaseConnection( DWORD extconn, DWORD reserved, BOOL  fLastReleaseCloses );
-}
-alias IExternalConnection LPEXTERNALCONNECTION;
-
-
-struct MULTI_QI
-{
-	const IID  *pIID; // pass this one in
-	IUnknown   pItf; // get these out (you must set to NULL before calling)
-	HRESULT     hr;
-}
-
-interface IMultiQI : IUnknown
-{
-    HRESULT QueryMultipleInterfaces( ULONG      cMQIs, MULTI_QI  *pMQIs );
-}
-alias IMultiQI LPMULTIQI;
-
-interface IEnumUnknown : IUnknown
-{
-	HRESULT Next( ULONG celt, IUnknown * rgelt, ULONG *pceltFetched);
-	HRESULT Skip( ULONG celt );
-	HRESULT Reset();
-	HRESULT Clone( IEnumUnknown * ppenum );
-}
-alias IEnumUnknown LPENUMUNKNOWN;
-
-
-
-/****************************************************************************
- *  Binding Interfaces
- ****************************************************************************/
-
-struct BIND_OPTS {
-    DWORD       cbStruct;       //  sizeof(BIND_OPTS)
-    DWORD       grfFlags;
-    DWORD       grfMode;
-    DWORD       dwTickCountDeadline;
-}
-alias BIND_OPTS * LPBIND_OPTS;
-
-struct BIND_OPTS2 {
-    DWORD           cbStruct;       //  sizeof(BIND_OPTS2)
-    DWORD           grfFlags;
-    DWORD           grfMode;
-    DWORD           dwTickCountDeadline;
-    DWORD           dwTrackFlags;
-    DWORD           dwClassContext;
-    LCID            locale;
-    COSERVERINFO *  pServerInfo;
-}
-alias BIND_OPTS2 * LPBIND_OPTS2;
-
-enum BIND_FLAGS
-{
-	BIND_MAYBOTHERUSER = 1,
-	BIND_JUSTTESTEXISTENCE = 2
-}
-
-interface IBindCtx : IUnknown
-{
-	HRESULT RegisterObjectBound( IUnknown  punk );
-	HRESULT RevokeObjectBound( IUnknown punk );
-	HRESULT ReleaseBoundObjects();
-	HRESULT SetBindOptions( BIND_OPTS * pbindopts );
-	HRESULT GetBindOptions( BIND_OPTS * pbindopts );
-	HRESULT GetRunningObjectTable( IRunningObjectTable * pprot );
-	HRESULT RegisterObjectParam( LPOLESTR pszKey, IUnknown punk );
-	HRESULT GetObjectParam( LPOLESTR pszKey, IUnknown * ppunk );
-	HRESULT EnumObjectParam( IEnumString * ppenum );
-	HRESULT RevokeObjectParam( LPOLESTR pszKey );
-}
-alias IBindCtx LPBC;
-alias IBindCtx LPBINDCTX;
-
-interface IEnumMoniker : IUnknown
-{
-	HRESULT Next( ULONG celt, IMoniker * rgelt, ULONG *pceltFetched );
-	HRESULT Skip( ULONG celt );
-	HRESULT Reset();
-	HRESULT Clone( IEnumMoniker * ppenum );
-}
-alias IEnumMoniker LPENUMMONIKER;
-
-interface IRunnableObject : IUnknown
-{
-	HRESULT GetRunningClass( LPCLSID lpClsid );
-	HRESULT Run( LPBINDCTX pbc );
-	BOOL IsRunning();
-	HRESULT LockRunning( BOOL fLock, BOOL fLastUnlockCloses );
-	HRESULT SetContainedObject( BOOL fContained );
-}
-alias IRunnableObject LPRUNNABLEOBJECT;
-
-interface IRunningObjectTable : IUnknown
-{
-	HRESULT Register( DWORD grfFlags, IUnknown punkObject, IMoniker pmkObjectName, DWORD *pdwRegister );
-	HRESULT Revoke ( DWORD dwRegister );
-	HRESULT IsRunning( IMoniker pmkObjectName );
-	HRESULT GetObject( IMoniker pmkObjectName, IUnknown * ppunkObject );
-	HRESULT NoteChangeTime( DWORD dwRegister, FILETIME *pfiletime );
-	HRESULT GetTimeOfLastChange( IMoniker  pmkObjectName, FILETIME *pfiletime );
-	HRESULT EnumRunning( IEnumMoniker * ppenumMoniker );
-}
-alias IRunningObjectTable LPRUNNINGOBJECTTABLE;
-
-interface IPersist : IUnknown
-{
-	HRESULT GetClassID( CLSID * pClassID );
-}
-alias IPersist LPPERSIST;
-
-interface IPersistStream : IPersist
-{
-	HRESULT IsDirty(  );
-	HRESULT Load( IStream pStm );
-	HRESULT Save( IStream pStm, BOOL fClearDirty );
-	HRESULT GetSizeMax( ULARGE_INTEGER *pcbSize );
-}
-alias IPersistStream LPPERSISTSTREAM;
-
-    // system moniker types; returned from IsSystemMoniker.
-enum MKSYS
-{
-	MKSYS_NONE = 0,
-	MKSYS_GENERICCOMPOSITE = 1,
-	MKSYS_FILEMONIKER = 2,
-	MKSYS_ANTIMONIKER = 3,
-	MKSYS_ITEMMONIKER = 4,
-	MKSYS_POINTERMONIKER = 5,
-    //  MKSYS_URLMONIKER = 6,
-	MKSYS_CLASSMONIKER = 7
-}
-
-enum MKREDUCE
-{
-	MKRREDUCE_ONE           =   3<<16,
-	MKRREDUCE_TOUSER        =   2<<16,
-	MKRREDUCE_THROUGHUSER   =   1<<16,
-	MKRREDUCE_ALL           =   0
-}
-
-interface IMoniker : IPersistStream
-{
-	HRESULT BindToObject( IBindCtx pbc, IMoniker pmkToLeft, REFIID riidResult, void **ppvResult );
-	HRESULT BindToStorage( IBindCtx pbc, IMoniker pmkToLeft, REFIID riid, void * ppvObj );
-	HRESULT Reduce( IBindCtx pbc, DWORD dwReduceHowFar, IMoniker * ppmkToLeft, IMoniker * ppmkReduced );
-	HRESULT ComposeWith( IMoniker pmkRight, BOOL fOnlyIfNotGeneric, IMoniker * ppmkComposite );
-	HRESULT Enum( BOOL fForward, IEnumMoniker * ppenumMoniker );
-	HRESULT IsEqual( IMoniker pmkOtherMoniker );
-	HRESULT Hash( DWORD *pdwHash );
-	HRESULT IsRunning( IBindCtx pbc, IMoniker pmkToLeft, IMoniker pmkNewlyRunning );
-	HRESULT GetTimeOfLastChange( IBindCtx pbc, IMoniker pmkToLeft, FILETIME *pFileTime );
-	HRESULT Inverse( IMoniker * ppmk );
-	HRESULT CommonPrefixWith( IMoniker pmkOther, IMoniker * ppmkPrefix );
-	HRESULT RelativePathTo( IMoniker pmkOther, IMoniker * ppmkRelPath );
-	HRESULT GetDisplayName( IBindCtx pbc, IMoniker pmkToLeft, LPOLESTR *ppszDisplayName );
-	HRESULT ParseDisplayName( IBindCtx pbc, IMoniker pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten,	IMoniker * ppmkOut );
-	HRESULT IsSystemMoniker( DWORD * pdwMksys );
-}
-alias IMoniker LPMONIKER;
-
-interface IROTData : IUnknown
-{
-	HRESULT GetComparisonData( byte * pbData, ULONG cbMax, ULONG *pcbData );
-}
-
-interface IEnumString : IUnknown
-{
-	HRESULT Next( ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched );
-	HRESULT Skip( ULONG celt );
-	HRESULT Reset();
-	HRESULT Clone( IEnumString * ppenum );
-}
-alias IEnumString LPENUMSTRING;
-
-
-/****************************************************************************
- *  Structured Storage Interfaces
- ****************************************************************************/
-
-interface ISequentialStream : IUnknown
-{
-	HRESULT Read( void *pv, ULONG cb, ULONG *pcbRead );
-	HRESULT Write( void *pv, ULONG cb, ULONG *pcbWritten );
-}
-
-    /* Storage stat buffer */
-struct STATSTG
-{
-        LPOLESTR pwcsName;
-        DWORD type;
-        ULARGE_INTEGER cbSize;
-        FILETIME mtime;
-        FILETIME ctime;
-        FILETIME atime;
-        DWORD grfMode;
-        DWORD grfLocksSupported;
-        CLSID clsid;
-        DWORD grfStateBits;
-    DWORD reserved;
-}
-
-    /* Storage element types */
-enum STGTY
-{
-	STGTY_STORAGE   = 1,
-	STGTY_STREAM    = 2,
-	STGTY_LOCKBYTES = 3,
-	STGTY_PROPERTY  = 4
-}
-
-enum STREAM_SEEK
-{
-        STREAM_SEEK_SET = 0,
-        STREAM_SEEK_CUR = 1,
-        STREAM_SEEK_END = 2
-}
-
-enum LOCKTYPE
-{
-        LOCK_WRITE      = 1,
-        LOCK_EXCLUSIVE  = 2,
-        LOCK_ONLYONCE   = 4
-}
-
-interface IStream : ISequentialStream
-{
-	HRESULT Seek( LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition );
-	HRESULT SetSize( ULARGE_INTEGER libNewSize );
-	HRESULT CopyTo( IStream pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten);
-	HRESULT Commit( DWORD grfCommitFlags );
-	HRESULT Revert();
-	HRESULT LockRegion( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType );
-	HRESULT UnlockRegion( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType );
-	HRESULT Stat( STATSTG *pstatstg, DWORD grfStatFlag);
-	HRESULT Clone( IStream * ppstm );
-}
-alias IStream LPSTREAM;
-
-interface IEnumSTATSTG : IUnknown
-{
-	HRESULT Next( ULONG celt, STATSTG *rgelt, ULONG *pceltFetched );
-	HRESULT Skip( ULONG celt );
-	HRESULT Reset();
-	HRESULT Clone( IEnumSTATSTG * ppenum );
-}
-alias IEnumSTATSTG LPENUMSTATSTG;
-
-struct RemSNB
-{
-	ULONG ulCntStr;
-	ULONG ulCntChar;
-	OLECHAR rgString[];
-}
-alias RemSNB * wireSNB;
-alias OLECHAR ** SNB;
-
-interface IStorage : IUnknown
-{
-	HRESULT CreateStream( OLECHAR *pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream * ppstm);
-   HRESULT OpenStream( OLECHAR *pwcsName, void *reserved1, DWORD grfMode, DWORD reserved2, IStream * ppstm);
-   HRESULT CreateStorage( OLECHAR *pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStorage * ppstg);
-   HRESULT OpenStorage( OLECHAR *pwcsName, IStorage pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage * ppstg );
-   HRESULT CopyTo( DWORD ciidExclude, IID *rgiidExclude, SNB snbExclude, IStorage pstgDest );
-	HRESULT MoveElementTo( OLECHAR * pwcsName, IStorage pstgDest, OLECHAR *pwcsNewName, DWORD grfFlags );
-	HRESULT Commit( DWORD grfCommitFlags );
-	HRESULT Revert();
-	HRESULT EnumElements( DWORD reserved1, void *reserved2, DWORD reserved3, IEnumSTATSTG * ppenum);
-	HRESULT DestroyElement( OLECHAR * pwcsName );
-	HRESULT RenameElement( OLECHAR *pwcsOldName, OLECHAR *pwcsNewName );
-	HRESULT SetElementTimes( OLECHAR * pwcsName, FILETIME * pctime, FILETIME *patime, FILETIME *pmtime );
-	HRESULT SetClass( REFCLSID clsid );
-	HRESULT SetStateBits( DWORD grfStateBits, DWORD grfMask );
-	HRESULT Stat( STATSTG *pstatstg, DWORD grfStatFlag );
-}
-alias IStorage LPSTORAGE;
-
-interface IPersistFile : IPersist
-{
-	HRESULT IsDirty();
-	HRESULT Load(LPCOLESTR pszFileName,DWORD dwMode);
-	HRESULT Save(LPCOLESTR pszFileName,BOOL fRemember);
-	HRESULT SaveCompleted(LPCOLESTR pszFileName);
-	HRESULT GetCurFile(LPOLESTR *ppszFileName );
-}
-alias IPersistFile LPPERSISTFILE;
-
-interface IPersistStorage : IPersist
-{
-	HRESULT IsDirty();
-	HRESULT InitNew(IStorage pStg);
-	HRESULT Load(IStorage pStg);
-	HRESULT Save(IStorage pStgSave,BOOL fSameAsLoad);
-	HRESULT SaveCompleted(IStorage pStgNew);
-	HRESULT HandsOffStorage();
-}
-alias IPersistStorage LPPERSISTSTORAGE;
-
-interface ILockBytes : IUnknown
-{
-    HRESULT ReadAt(
-ULARGE_INTEGER ulOffset,
-void *pv,
-ULONG cb,
-ULONG *pcbRead);
-
-    HRESULT WriteAt(
-ULARGE_INTEGER ulOffset,
-void  *pv,
-ULONG cb,
-ULONG *pcbWritten);
-
-HRESULT Flush();
-
-HRESULT SetSize(
-ULARGE_INTEGER cb);
-
-    HRESULT LockRegion(
-ULARGE_INTEGER libOffset,
-ULARGE_INTEGER cb,
-DWORD dwLockType);
-
-    HRESULT UnlockRegion(
-ULARGE_INTEGER libOffset,
-ULARGE_INTEGER cb,
-DWORD dwLockType);
-
-    HRESULT Stat(
-STATSTG *pstatstg,
-DWORD grfStatFlag);
-}
-alias ILockBytes LPLOCKBYTES;
-
-struct DVTARGETDEVICE {
-        DWORD tdSize;
-        WORD tdDriverNameOffset;
-        WORD tdDeviceNameOffset;
-        WORD tdPortNameOffset;
-        WORD tdExtDevmodeOffset;
-BYTE[1] tdData;
-}
-
-typedef CLIPFORMAT LPCLIPFORMAT;
-
-struct FORMATETC {
-        CLIPFORMAT cfFormat;
-DVTARGETDEVICE * ptd;
-        DWORD dwAspect;
-        LONG lindex;
-        DWORD tymed;
-}
-alias FORMATETC *LPFORMATETC;
-
-interface IEnumFORMATETC : IUnknown
-{
-    HRESULT Next(
-ULONG celt,
-        FORMATETC *rgelt,
-ULONG *pceltFetched);
-
-    HRESULT Skip(
-ULONG celt);
-
-    HRESULT Reset();
-
-    HRESULT Clone(
-IEnumFORMATETC * ppenum);
-}
-alias IEnumFORMATETC LPENUMFORMATETC;
-
-    //Advise Flags
-enum ADVF
-{
-        ADVF_NODATA = 1,
-        ADVF_PRIMEFIRST = 2,
-        ADVF_ONLYONCE = 4,
-        ADVF_DATAONSTOP = 64,
-        ADVFCACHE_NOHANDLER = 8,
-        ADVFCACHE_FORCEBUILTIN = 16,
-        ADVFCACHE_ONSAVE = 32
-}
-
-    // Stats for data; used by several enumerations and by at least one
-    // implementation of IDataAdviseHolder; if a field is not used, it
-    // will be NULL.
-
-struct STATDATA
-{                              // field used by:
-	FORMATETC formatetc;       // EnumAdvise, EnumData (cache), EnumFormats
-	DWORD advf;                // EnumAdvise, EnumData (cache)
-	IAdviseSink pAdvSink; // EnumAdvise
-	DWORD dwConnection;        // EnumAdvise
-}
-alias STATDATA * LPSTATDATA;
-
-interface IEnumSTATDATA : IUnknown
-{
-    HRESULT Next(
-ULONG celt,
-        STATDATA *rgelt,
-ULONG *pceltFetched);
-
-
-    HRESULT Skip(
-ULONG celt);
-
-    HRESULT Reset();
-
-    HRESULT Clone(
-IEnumSTATDATA * ppenum);
-}
-alias IEnumSTATDATA LPENUMSTATDATA;
-
-interface IRootStorage : IUnknown
-{
-    HRESULT SwitchToFile( LPOLESTR pszFile    );
-}
-alias IRootStorage LPROOTSTORAGE;
-
-
-/****************************************************************************
- *  Notification Interfaces
- ****************************************************************************/
-
-enum TYMED {
-        TYMED_HGLOBAL = 1,
-        TYMED_FILE = 2,
-        TYMED_ISTREAM = 4,
-        TYMED_ISTORAGE = 8,
-        TYMED_GDI = 16,
-        TYMED_MFPICT = 32,
-        TYMED_ENHMF = 64,
-        TYMED_NULL = 0
-}
-
-struct RemSTGMEDIUM {
-        DWORD tymed;
-        DWORD dwHandleType;
-        ULONG pData;
-        ULONG pUnkForRelease;
-        ULONG cbData;
-        byte[1] data;
-}
-
-union UNION_u {
-	HBITMAP hBitmap;
-	HMETAFILEPICT hMetaFilePict;
-	HENHMETAFILE hEnhMetaFile;
-	HGLOBAL hGlobal;
-	LPOLESTR lpszFileName;
-	IStream pstm;
-	IStorage pstg;
-}
-/*
-struct uSTGMEDIUM {
-	DWORD tymed;
-	UNION_u u;
-	IUnknown pUnkForRelease;
-}
-*/
-// <Shawn Liu> modified
-struct uSTGMEDIUM {
-	DWORD tymed;
-	void* unionField;
-	IUnknown pUnkForRelease;
-}
-
-
-enum {
-	OBJ_PEN             =1,
-	OBJ_BRUSH           =2,
-	OBJ_DC              =3,
-	OBJ_METADC          =4,
-	OBJ_PAL             =5,
-	OBJ_FONT            =6,
-	OBJ_BITMAP          =7,
-	OBJ_REGION          =8,
-	OBJ_METAFILE        =9,
-	OBJ_MEMDC           =10,
-	OBJ_EXTPEN          =11,
-	OBJ_ENHMETADC       =12,
-	OBJ_ENHMETAFILE     =13
-}
-union __MIDL_IAdviseSink_0002
-{
-		wireHBITMAP hBitmap;
-		wireHPALETTE hPalette;
-		wireHGLOBAL hGeneric;
-}
-
-struct GDI_OBJECT
-{
-	DWORD ObjectType;
-   __MIDL_IAdviseSink_0002 u;
-}
-
-union __MIDL_IAdviseSink_0003
-{
-			wireHMETAFILEPICT hMetaFilePict;
-			wireHENHMETAFILE hHEnhMetaFile;
-			GDI_OBJECT  *hGdiHandle;
-			wireHGLOBAL hGlobal;
-			LPOLESTR lpszFileName;
-			BYTE_BLOB  *pstm;
-			BYTE_BLOB  *pstg;
-}
-
-struct  userSTGMEDIUM
-{
-   DWORD tymed;
-   __MIDL_IAdviseSink_0003 u;
-	IUnknown pUnkForRelease;
-}
-
-alias userSTGMEDIUM *wireSTGMEDIUM;
-alias uSTGMEDIUM STGMEDIUM;
-alias userSTGMEDIUM *wireASYNC_STGMEDIUM;
-alias STGMEDIUM ASYNC_STGMEDIUM;
-alias STGMEDIUM *LPSTGMEDIUM;
-
-struct  userFLAG_STGMEDIUM
-{
-    LONG ContextFlags;
-    LONG fPassOwnership;
-	userSTGMEDIUM Stgmed;
-}
-
-alias userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
-
-struct  FLAG_STGMEDIUM
-{
-	LONG ContextFlags;
-	LONG fPassOwnership;
-	STGMEDIUM Stgmed;
-}
-
-
-interface IAdviseSink : IUnknown
-{
-    void OnDataChange(FORMATETC *pFormatetc,STGMEDIUM *pStgmed);
-    void OnViewChange(DWORD dwAspect,LONG lindex);
-    void OnRename(IMoniker pmk);
-    void OnSave();
-    void OnClose();
-}
-alias IAdviseSink LPADVISESINK;
-
-interface IAdviseSink2 : IAdviseSink
-{
-    void OnLinkSrcChange( IMoniker pmk );
-}
-alias IAdviseSink2 LPADVISESINK2;
-
-
-enum DATADIR
-{
-	DATADIR_GET = 1,
-	DATADIR_SET = 2
-}
-
-interface IDataObject : IUnknown
-{
-
-    HRESULT GetData( FORMATETC *pformatetcIn, STGMEDIUM *pmedium);
-
-    HRESULT GetDataHere( FORMATETC *pformatetc, STGMEDIUM *pmedium);
-
-    HRESULT QueryGetData(	FORMATETC *pformatetc);
-
-    HRESULT GetCanonicalFormatEtc(
-			FORMATETC *pformatectIn,
-			FORMATETC *pformatetcOut);
-
-    HRESULT SetData(
-		FORMATETC *pformatetc,
-		STGMEDIUM *pmedium,
-			BOOL fRelease);
-
-    HRESULT EnumFormatEtc(
-			DWORD dwDirection,
-			IEnumFORMATETC * ppenumFormatEtc);
-
-    HRESULT DAdvise(
-		FORMATETC *pformatetc,
-		DWORD advf,
-		IAdviseSink pAdvSink,
-		DWORD *pdwConnection);
-
-    HRESULT DUnadvise(DWORD dwConnection);
-
-    HRESULT EnumDAdvise(IEnumSTATDATA * ppenumAdvise);
-
-}
-alias IDataObject LPDATAOBJECT;
-
-interface IDataAdviseHolder : IUnknown
-{
-    HRESULT Advise
-    (
-	IDataObject pDataObject,
-	FORMATETC *pFetc,
-	DWORD advf,
-	IAdviseSink pAdvise,
-	DWORD *pdwConnection
-    );
-
-    HRESULT Unadvise
-    (
-	DWORD dwConnection
-    );
-
-    HRESULT EnumAdvise
-    (
-IEnumSTATDATA * ppenumAdvise
-    );
-
-    HRESULT SendOnDataChange
-    (
-		IDataObject pDataObject,
-		DWORD dwReserved,
-		DWORD advf
-    );
-
-}
-alias IDataAdviseHolder LPDATAADVISEHOLDER;
-
-
-// call type used by IMessageFilter::HandleIncomingMessage
-enum CALLTYPE
-{
-    CALLTYPE_TOPLEVEL = 1,      // toplevel call - no outgoing call
-    CALLTYPE_NESTED   = 2,      // callback on behalf of previous outgoing call - should always handle
-    CALLTYPE_ASYNC    = 3,      // aysnchronous call - can NOT be rejected
-    CALLTYPE_TOPLEVEL_CALLPENDING = 4,  // new toplevel call with new LID
-    CALLTYPE_ASYNC_CALLPENDING    = 5   // async call - can NOT be rejected
-}
-
-// status of server call - returned by IMessageFilter::HandleIncomingCall
-// and passed to  IMessageFilter::RetryRejectedCall
-enum SERVERCALL
-{
-    SERVERCALL_ISHANDLED    = 0,
-    SERVERCALL_REJECTED     = 1,
-    SERVERCALL_RETRYLATER   = 2
-}
-
-// Pending type indicates the level of nesting
-enum PENDINGTYPE
-{
-    PENDINGTYPE_TOPLEVEL = 1, // toplevel call
-    PENDINGTYPE_NESTED   = 2  // nested call
-}
-
-// return values of MessagePending
-enum PENDINGMSG
-{
-    PENDINGMSG_CANCELCALL  = 0, // cancel the outgoing call
-    PENDINGMSG_WAITNOPROCESS  = 1, // wait for the return and don't dispatch the message
-    PENDINGMSG_WAITDEFPROCESS = 2  // wait and dispatch the message
-
-}
-
-// additional interface information about the incoming call
-struct INTERFACEINFO
-{
-    IUnknown    pUnk;      // the pointer to the object
-    IID         iid;        // interface id
-    WORD        wMethod;    // interface method
-}
-alias INTERFACEINFO *LPINTERFACEINFO;
-
-
-interface IMessageFilter : IUnknown
-{
-
-    DWORD HandleInComingCall
-    (
-DWORD dwCallType,
-HTASK htaskCaller,
-DWORD dwTickCount,
-LPINTERFACEINFO lpInterfaceInfo
-    );
-
-    DWORD RetryRejectedCall
-    (
-HTASK htaskCallee,
-DWORD dwTickCount,
-DWORD dwRejectType
-    );
-
-    DWORD MessagePending
-    (
-HTASK htaskCallee,
-DWORD dwTickCount,
-DWORD dwPendingType
-    );
-}
-alias IMessageFilter LPMESSAGEFILTER;
-
-
-
-/****************************************************************************
- *  Object Remoting Interfaces
- ****************************************************************************/
-/*
-interface IRpcChannelBuffer : IUnknown
-{
-
-    typedef unsigned long RPCOLEDATAREP;
-
-    typedef struct tagRPCOLEMESSAGE
-    {
-        void             *reserved1;
-        RPCOLEDATAREP     dataRepresentation;
-        void             *Buffer;
-        ULONG             cbBuffer;
-        ULONG             iMethod;
-        void             *reserved2[5];
-        ULONG             rpcFlags;
-    } RPCOLEMESSAGE;
-
-    typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
-
-    HRESULT GetBuffer
-    (
-        [in] RPCOLEMESSAGE *pMessage,
-        [in] REFIID riid
-    );
-
-    HRESULT SendReceive
-    (
-        [in,out] RPCOLEMESSAGE *pMessage,
-        [out] ULONG *pStatus
-    );
-
-    HRESULT FreeBuffer
-    (
-        [in] RPCOLEMESSAGE *pMessage
-    );
-
-    HRESULT GetDestCtx
-    (
-        [out] DWORD *pdwDestContext,
-        [out] void **ppvDestContext
-    );
-
-    HRESULT IsConnected
-    (
-        void
-    );
-
-}
-
-[
-    local,
-    object,
-    uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
-]
-interface IRpcChannelBuffer2 : IRpcChannelBuffer
-{
-
-    HRESULT GetProtocolVersion
-    (
-        [in,out] DWORD *pdwVersion
-    );
-}
-
-[
-    local,
-    object,
-    uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
-]
-interface IRpcChannelBuffer3 : IRpcChannelBuffer2
-{
-
-    HRESULT Send
-    (
-        [in,out] RPCOLEMESSAGE *pMsg,
-        [out]    ULONG *pulStatus
-    );
-
-    HRESULT Receive
-    (
-        [in,out] RPCOLEMESSAGE *pMsg,
-        [in]     ULONG ulSize,
-        [out]    ULONG *pulStatus
-    );
-
-    HRESULT Cancel
-    (
-        [in] RPCOLEMESSAGE *pMsg
-    );
-
-    HRESULT GetCallContext
-    (
-        [in]  RPCOLEMESSAGE *pMsg,
-        [in]  REFIID riid,
-        [out] void **pInterface
-    );
-
-    HRESULT GetDestCtxEx
-    (
-        [in] RPCOLEMESSAGE *pMsg,
-        [out] DWORD *pdwDestContext,
-        [out] void **ppvDestContext
-    );
-
-    HRESULT GetState
-    (
-        [in]  RPCOLEMESSAGE   *pMsg,
-        [out] DWORD           *pState
-    );
-
-    HRESULT RegisterAsync
-    (
-        [in] RPCOLEMESSAGE *pMsg,
-        [in] IAsyncManager *pAsyncMgr
-    );
-
-}
-
-
-[
-    local,
-    object,
-    uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
-]
-interface IRpcProxyBuffer : IUnknown
-{
-
-    HRESULT Connect
-    (
-        [in, unique] IRpcChannelBuffer *pRpcChannelBuffer
-    );
-
-    void Disconnect
-    (
-        void
-    );
-
-}
-
-[
-    local,
-    object,
-    uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
-]
-interface IRpcStubBuffer : IUnknown
-{
-
-    HRESULT Connect
-    (
-        [in] IUnknown *pUnkServer
-    );
-
-    void Disconnect();
-
-    HRESULT Invoke
-    (
-        [in] RPCOLEMESSAGE *_prpcmsg,
-        [in] IRpcChannelBuffer *_pRpcChannelBuffer
-    );
-
-    IRpcStubBuffer *IsIIDSupported
-    (
-        [in] REFIID riid
-    );
-
-    ULONG CountRefs
-    (
-        void
-    );
-
-    HRESULT DebugServerQueryInterface
-    (
-        void **ppv
-    );
-
-    void DebugServerRelease
-    (
-        void *pv
-    );
-
-}
-
-
-
-[
-    local,
-    object,
-    uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
-]
-interface IPSFactoryBuffer : IUnknown
-{
-
-    HRESULT CreateProxy
-    (
-        [in] IUnknown *pUnkOuter,
-        [in] REFIID riid,
-        [out] IRpcProxyBuffer **ppProxy,
-        [out] void **ppv
-    );
-
-    HRESULT CreateStub
-    (
-        [in] REFIID riid,
-        [in, unique] IUnknown *pUnkServer,
-        [out] IRpcStubBuffer **ppStub
-    );
-}
-
-cpp_quote( "#if  (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
-cpp_quote( "// This interface is only valid on Windows NT 4.0" )
-
-// This structure contains additional data for hooks.  As a backward
-// compatability hack, the entire structure is passed in place of the
-// RIID parameter on all hook methods.  Thus the IID must be the first
-// parameter.  As a forward compatability hack the second field is the
-// current size of the structure.
-typedef struct SChannelHookCallInfo
-{
-    IID               iid;
-    DWORD             cbSize;
-    GUID              uCausality;
-    DWORD             dwServerPid;
-    DWORD             iMethod;
-    void             *pObject;
-} SChannelHookCallInfo;
-
-[
-    local,
-    object,
-    uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
-]
-interface IChannelHook : IUnknown
-{
-    void ClientGetSize(
-        [in]  REFGUID uExtent,
-        [in]  REFIID  riid,
-        [out] ULONG  *pDataSize );
-
-    void ClientFillBuffer(
-        [in]      REFGUID uExtent,
-        [in]      REFIID  riid,
-        [in, out] ULONG  *pDataSize,
-        [in]      void   *pDataBuffer );
-
-    void ClientNotify(
-        [in] REFGUID uExtent,
-        [in] REFIID  riid,
-        [in] ULONG   cbDataSize,
-        [in] void   *pDataBuffer,
-        [in] DWORD   lDataRep,
-        [in] HRESULT hrFault );
-
-    void ServerNotify(
-        [in] REFGUID uExtent,
-        [in] REFIID  riid,
-        [in] ULONG   cbDataSize,
-        [in] void   *pDataBuffer,
-        [in] DWORD   lDataRep );
-
-    void ServerGetSize(
-        [in]  REFGUID uExtent,
-        [in]  REFIID  riid,
-        [in]  HRESULT hrFault,
-        [out] ULONG  *pDataSize );
-
-    void ServerFillBuffer(
-        [in]      REFGUID uExtent,
-        [in]      REFIID  riid,
-        [in, out] ULONG  *pDataSize,
-        [in]      void   *pDataBuffer,
-        [in]      HRESULT hrFault );
-};
-
-cpp_quote( "#endif //DCOM" )
-*/
-
-/****************************************************************************
- *  Property Storage Interfaces
- ****************************************************************************/
-
- /*
-interface IPropertyStorage;
-interface IEnumSTATPROPSTG;
-interface IEnumSTATPROPSETSTG;
-
-[
-    object,
-    uuid(00000138-0000-0000-C000-000000000046),
-    pointer_default(unique)
-]
-
-interface IPropertyStorage : IUnknown
-{
-
-    cpp_quote("")
-    cpp_quote("// Well-known Property Set Format IDs")
-    extern const FMTID FMTID_SummaryInformation;
-    extern const FMTID FMTID_DocSummaryInformation;
-    extern const FMTID FMTID_UserDefinedProperties;
-
-    cpp_quote("")
-    cpp_quote("// Flags for IPropertySetStorage::Create")
-    const DWORD PROPSETFLAG_DEFAULT = 0;
-    const DWORD PROPSETFLAG_NONSIMPLE = 1;
-    const DWORD PROPSETFLAG_ANSI = 2;
-    cpp_quote("// This flag is only supported on StgCreatePropStg & StgOpenPropStg")
-    const DWORD PROPSETFLAG_UNBUFFERED = 4;
-
-    typedef [unique] IPropertyStorage * LPPROPERTYSTORAGE;
-
-    typedef struct tagPROPVARIANT PROPVARIANT;
-
-    #define TYPEDEF_CA(type, name) \
-        typedef struct tag##name\
-        {\
-            ULONG   cElems;\
-            [size_is( cElems )]\
-            type *  pElems;\
-        } name
-
-    TYPEDEF_CA(unsigned char,       CAUB);
-    TYPEDEF_CA(short,               CAI);
-    TYPEDEF_CA(USHORT,              CAUI);
-    TYPEDEF_CA(long,                CAL);
-    TYPEDEF_CA(ULONG,               CAUL);
-    TYPEDEF_CA(float,               CAFLT);
-    TYPEDEF_CA(double,              CADBL);
-    TYPEDEF_CA(CY,                  CACY);
-    TYPEDEF_CA(DATE,                CADATE);
-    TYPEDEF_CA(BSTR,                CABSTR);
-    TYPEDEF_CA(BSTRBLOB,            CABSTRBLOB);
-    TYPEDEF_CA(VARIANT_BOOL,        CABOOL);
-    TYPEDEF_CA(SCODE,               CASCODE);
-    TYPEDEF_CA(PROPVARIANT,         CAPROPVARIANT);
-    TYPEDEF_CA(LARGE_INTEGER,       CAH);
-    TYPEDEF_CA(ULARGE_INTEGER,      CAUH);
-    TYPEDEF_CA(LPSTR,               CALPSTR);
-    TYPEDEF_CA(LPWSTR,              CALPWSTR);
-    TYPEDEF_CA(FILETIME,            CAFILETIME);
-    TYPEDEF_CA(CLIPDATA,            CACLIPDATA);
-    TYPEDEF_CA(CLSID,               CACLSID);
-
-cpp_quote("// Disable the warning about the obsolete member named 'bool'")
-cpp_quote("// 'bool', 'true', 'false', 'mutable', 'explicit', & 'typename'")
-cpp_quote("// are reserved keywords")
-cpp_quote("#pragma warning(disable:4237)")
-
-    struct tagPROPVARIANT
-    {
-        VARTYPE vt;
-        WORD    wReserved1;
-        WORD    wReserved2;
-        WORD    wReserved3;
-        [switch_is((unsigned short) (vt & 0x1fff))] union
-        {
-            [case(VT_EMPTY, VT_NULL)]
-                ;
-            [case(VT_UI1)]
-                UCHAR               bVal;
-            [case(VT_I2)]
-                short               iVal;
-            [case(VT_UI2)]
-                USHORT              uiVal;
-            [case(VT_BOOL)]
-                VARIANT_BOOL        boolVal;
-            [case(VT_ILLEGAL)]  // obsolete field name; use boolVal
-                _VARIANT_BOOL        bool;
-            [case(VT_I4)]
-                long                lVal;
-            [case(VT_UI4)]
-                ULONG               ulVal;
-            [case(VT_R4)]
-                float               fltVal;
-            [case(VT_ERROR)]
-                SCODE               scode;
-            [case(VT_I8)]
-                LARGE_INTEGER       hVal;
-            [case(VT_UI8)]
-                ULARGE_INTEGER      uhVal;
-            [case(VT_R8)]
-                double              dblVal;
-            [case(VT_CY)]
-                CY                  cyVal;
-            [case(VT_DATE)]
-                DATE                date;
-            [case(VT_FILETIME)]
-                FILETIME            filetime;
-            [case(VT_CLSID)]
-                CLSID *             puuid;
-            [case(VT_BLOB, VT_BLOB_OBJECT)]
-                BLOB                blob;
-            [case(VT_CF)]
-                CLIPDATA            *pclipdata;
-            [case(VT_STREAM, VT_STREAMED_OBJECT)]
-                IStream *           pStream;
-            [case(VT_STORAGE, VT_STORED_OBJECT)]
-                IStorage *          pStorage;
-            [case(VT_BSTR)]
-                BSTR                bstrVal;
-            [case(VT_BSTR_BLOB)]        // System use only
-                BSTRBLOB            bstrblobVal;
-            [case(VT_LPSTR)]
-                LPSTR               pszVal;
-            [case(VT_LPWSTR)]
-                LPWSTR              pwszVal;
-            [case(VT_UI1|VT_VECTOR)]
-                CAUB                caub;
-            [case(VT_I2|VT_VECTOR)]
-                CAI                 cai;
-            [case(VT_UI2|VT_VECTOR)]
-                CAUI                caui;
-            [case(VT_BOOL|VT_VECTOR)]
-                CABOOL              cabool;
-            [case(VT_I4|VT_VECTOR)]
-                CAL                 cal;
-            [case(VT_UI4|VT_VECTOR)]
-                CAUL                caul;
-            [case(VT_R4|VT_VECTOR)]
-                CAFLT               caflt;
-            [case(VT_ERROR|VT_VECTOR)]
-                CASCODE             cascode;
-            [case(VT_I8|VT_VECTOR)]
-                CAH                 cah;
-            [case(VT_UI8|VT_VECTOR)]
-                CAUH                cauh;
-            [case(VT_R8|VT_VECTOR)]
-                CADBL               cadbl;
-            [case(VT_CY|VT_VECTOR)]
-                CACY                cacy;
-            [case(VT_DATE|VT_VECTOR)]
-                CADATE              cadate;
-            [case(VT_FILETIME|VT_VECTOR)]
-                CAFILETIME          cafiletime;
-            [case(VT_CLSID|VT_VECTOR)]
-                CACLSID             cauuid;
-            [case(VT_CF|VT_VECTOR)]
-                CACLIPDATA          caclipdata;
-            [case(VT_BSTR|VT_VECTOR)]
-                CABSTR              cabstr;
-            [case(VT_BSTR_BLOB|VT_VECTOR)]  // System use only
-                CABSTRBLOB          cabstrblob;
-            [case(VT_LPSTR|VT_VECTOR)]
-                CALPSTR             calpstr;
-            [case(VT_LPWSTR|VT_VECTOR)]
-                CALPWSTR            calpwstr;
-            [case(VT_VARIANT|VT_VECTOR)]
-                CAPROPVARIANT       capropvar;
-        };
-    };
-
-    typedef struct tagPROPVARIANT * LPPROPVARIANT;
-
-    cpp_quote("// Reserved global Property IDs")
-    const PROPID PID_DICTIONARY         = 0x00000000;
-    const PROPID PID_CODEPAGE           = 0x00000001;
-    const PROPID PID_FIRST_USABLE       = 0x00000002;
-    const PROPID PID_FIRST_NAME_DEFAULT = 0x00000fff;
-    const PROPID PID_LOCALE             = 0x80000000;
-    const PROPID PID_MODIFY_TIME        = 0x80000001;
-    const PROPID PID_SECURITY           = 0x80000002;
-    const PROPID PID_ILLEGAL            = 0xffffffff;
-
-
-    cpp_quote("// Property IDs for the SummaryInformation Property Set")
-    cpp_quote("")
-    cpp_quote("#define PIDSI_TITLE               0x00000002L  // VT_LPSTR")
-    cpp_quote("#define PIDSI_SUBJECT             0x00000003L  // VT_LPSTR")
-    cpp_quote("#define PIDSI_AUTHOR              0x00000004L  // VT_LPSTR")
-    cpp_quote("#define PIDSI_KEYWORDS            0x00000005L  // VT_LPSTR")
-    cpp_quote("#define PIDSI_COMMENTS            0x00000006L  // VT_LPSTR")
-    cpp_quote("#define PIDSI_TEMPLATE            0x00000007L  // VT_LPSTR")
-    cpp_quote("#define PIDSI_LASTAUTHOR          0x00000008L  // VT_LPSTR")
-    cpp_quote("#define PIDSI_REVNUMBER           0x00000009L  // VT_LPSTR")
-    cpp_quote("#define PIDSI_EDITTIME            0x0000000aL  // VT_FILETIME (UTC)")
-    cpp_quote("#define PIDSI_LASTPRINTED         0x0000000bL  // VT_FILETIME (UTC)")
-    cpp_quote("#define PIDSI_CREATE_DTM          0x0000000cL  // VT_FILETIME (UTC)")
-    cpp_quote("#define PIDSI_LASTSAVE_DTM        0x0000000dL  // VT_FILETIME (UTC)")
-    cpp_quote("#define PIDSI_PAGECOUNT           0x0000000eL  // VT_I4")
-    cpp_quote("#define PIDSI_WORDCOUNT           0x0000000fL  // VT_I4")
-    cpp_quote("#define PIDSI_CHARCOUNT           0x00000010L  // VT_I4")
-    cpp_quote("#define PIDSI_THUMBNAIL           0x00000011L  // VT_CF")
-    cpp_quote("#define PIDSI_APPNAME             0x00000012L  // VT_LPSTR")
-    cpp_quote("#define PIDSI_DOC_SECURITY        0x00000013L  // VT_I4")
-
-    const ULONG PRSPEC_INVALID = 0xffffffff;
-    const ULONG PRSPEC_LPWSTR = 0;
-    const ULONG PRSPEC_PROPID = 1;
-
-    typedef struct tagPROPSPEC
-    {
-
-        ULONG   ulKind;
-        [switch_is(ulKind)] union
-        {
-            [case(PRSPEC_PROPID)]
-                PROPID      propid;
-            [case(PRSPEC_LPWSTR)]
-                LPOLESTR    lpwstr;
-            [default] ;
-        } ;
-
-    } PROPSPEC;
-
-    typedef struct tagSTATPROPSTG
-    {
-
-        LPOLESTR    lpwstrName;
-        PROPID      propid;
-        VARTYPE     vt;
-
-    } STATPROPSTG;
-
-    cpp_quote("// Macros for parsing the OS Version of the Property Set Header")
-    cpp_quote("#define PROPSETHDR_OSVER_KIND(dwOSVer)      HIWORD( (dwOSVer) )")
-    cpp_quote("#define PROPSETHDR_OSVER_MAJOR(dwOSVer)     LOBYTE(LOWORD( (dwOSVer) ))")
-    cpp_quote("#define PROPSETHDR_OSVER_MINOR(dwOSVer)     HIBYTE(LOWORD( (dwOSVer) ))")
-    cpp_quote("#define PROPSETHDR_OSVERSION_UNKNOWN        0xFFFFFFFF")
-
-
-    typedef struct tagSTATPROPSETSTG
-    {
-
-        FMTID       fmtid;
-        CLSID       clsid;
-        DWORD       grfFlags;
-        FILETIME    mtime;
-        FILETIME    ctime;
-        FILETIME    atime;
-        DWORD       dwOSVersion;
-
-    } STATPROPSETSTG;
-
-
-    // When this IDL file is used for "IProp.dll" (the
-    // standalone property set DLL), we must have local
-    // and remotable routines (call_as routines are used
-    // to remove BSTRs, which are not remotable with some
-    // RPC run-times).
-    //
-    // For the remotable routines, we must use pointer
-    // parameters (e.g. "*rgspec" rather than "rgspec[]")
-    // so that the MIDL 2.0 compiler will generate an
-    // interpereted proxy/stub, rather than inline.
-
-#ifdef IPROPERTY_DLL
-    [local]
-#endif
-    HRESULT ReadMultiple(
-        [in]    ULONG                   cpspec,
-        [in, size_is(cpspec)]
-                const PROPSPEC          rgpspec[],
-        [out, size_is(cpspec)]
-                PROPVARIANT             rgpropvar[]
-        );
-
-#ifdef IPROPERTY_DLL
-    [call_as(ReadMultiple)]
-    HRESULT RemoteReadMultiple(
-        [out]   BOOL                    *pfBstrPresent,
-        [in]    ULONG                   cpspec,
-        [in, size_is(cpspec)]
-                const PROPSPEC          *rgpspec,
-        [out, size_is(cpspec)]
-                PROPVARIANT             *rgpropvar
-        );
-#endif
-
-#ifdef IPROPERTY_DLL
-    [local]
-#endif
-    HRESULT WriteMultiple(
-        [in]    ULONG                   cpspec,
-        [in, size_is(cpspec)]
-                const PROPSPEC          rgpspec[],
-        [in, size_is(cpspec)]
-                const PROPVARIANT       rgpropvar[],
-        [in]    PROPID                  propidNameFirst
-        );
-
-#ifdef IPROPERTY_DLL
-    [call_as(WriteMultiple)]
-    HRESULT RemoteWriteMultiple(
-        [in]    BOOL                    fBstrPresent,
-        [in]    ULONG                   cpspec,
-        [in, size_is(cpspec)]
-                const PROPSPEC          *rgpspec,
-        [in, size_is(cpspec)]
-                const PROPVARIANT       *rgpropvar,
-        [in]    PROPID                  propidNameFirst
-        );
-#endif
-
-#ifdef IPROPERTY_DLL
-    [local]
-#endif
-    HRESULT DeleteMultiple(
-        [in]    ULONG                   cpspec,
-        [in, size_is(cpspec)]
-                const PROPSPEC          rgpspec[]
-        );
-
-#ifdef IPROPERTY_DLL
-    [call_as(DeleteMultiple)]
-    HRESULT RemoteDeleteMultiple(
-        [in]    ULONG                   cpspec,
-        [in, size_is(cpspec)]
-                const PROPSPEC          *rgpspec
-        );
-#endif
-
-    HRESULT ReadPropertyNames(
-        [in]    ULONG                   cpropid,
-        [in, size_is(cpropid)]
-                const PROPID            rgpropid[],
-        [out, size_is(cpropid)]
-                LPOLESTR                rglpwstrName[]
-        );
-
-    HRESULT WritePropertyNames(
-        [in]    ULONG                   cpropid,
-        [in, size_is(cpropid)]
-                const PROPID            rgpropid[],
-        [in, size_is(cpropid)]
-                const LPOLESTR          rglpwstrName[]
-        );
-
-    HRESULT DeletePropertyNames(
-        [in]    ULONG                   cpropid,
-        [in, size_is(cpropid)]
-                const PROPID            rgpropid[]
-        );
-
-    HRESULT Commit(
-        [in]    DWORD                   grfCommitFlags
-        );
-
-    HRESULT Revert();
-
-    HRESULT Enum(
-        [out]   IEnumSTATPROPSTG **     ppenum
-        );
-
-    HRESULT SetTimes(
-        [in]    FILETIME const *        pctime,
-        [in]    FILETIME const *        patime,
-        [in]    FILETIME const *        pmtime
-        );
-
-    HRESULT SetClass(
-        [in]    REFCLSID                clsid
-        );
-
-    HRESULT Stat(
-        [out]   STATPROPSETSTG *        pstatpsstg
-        );
-}
-
-[
-    object,
-    uuid(0000013A-0000-0000-C000-000000000046),
-    pointer_default(unique)
-]
-
-interface IPropertySetStorage : IUnknown
-{
-
-    typedef [unique] IPropertySetStorage * LPPROPERTYSETSTORAGE;
-
-    HRESULT Create(
-        [in]    REFFMTID                rfmtid,
-        [in, unique]
-                const CLSID *           pclsid,
-        [in]    DWORD                   grfFlags,
-        [in]    DWORD                   grfMode,
-        [out]   IPropertyStorage **     ppprstg
-        );
-
-    HRESULT Open(
-        [in]    REFFMTID                rfmtid,
-        [in]    DWORD                   grfMode,
-        [out]   IPropertyStorage **     ppprstg
-        );
-
-    HRESULT Delete(
-        [in]    REFFMTID                rfmtid
-        );
-
-    HRESULT Enum(
-        [out]   IEnumSTATPROPSETSTG **  ppenum
-        );
-
-}
-
-
-[
-    object,
-    uuid(00000139-0000-0000-C000-000000000046),
-    pointer_default(unique)
-]
-
-interface IEnumSTATPROPSTG : IUnknown
-{
-
-    typedef [unique] IEnumSTATPROPSTG * LPENUMSTATPROPSTG;
-
-    [local]
-    HRESULT Next(
-        [in]    ULONG                   celt,
-        [out, size_is(celt), length_is(*pceltFetched)]
-                STATPROPSTG *           rgelt,
-        [out]   ULONG *                 pceltFetched
-        );
-
-    [call_as(Next)]
-    HRESULT RemoteNext(
-        [in]    ULONG                   celt,
-        [out, size_is(celt), length_is(*pceltFetched)]
-                STATPROPSTG *           rgelt,
-        [out]   ULONG *                 pceltFetched
-        );
-
-    HRESULT Skip(
-        [in]    ULONG                   celt
-        );
-
-    HRESULT Reset();
-
-    HRESULT Clone(
-        [out]   IEnumSTATPROPSTG **     ppenum
-        );
-}
-
-
-[
-    object,
-    uuid(0000013B-0000-0000-C000-000000000046),
-    pointer_default(unique)
-]
-
-interface IEnumSTATPROPSETSTG : IUnknown
-{
-
-    typedef [unique] IEnumSTATPROPSETSTG * LPENUMSTATPROPSETSTG;
-
-    [local]
-    HRESULT Next(
-        [in]    ULONG                   celt,
-        [out, size_is(celt), length_is(*pceltFetched)]
-                STATPROPSETSTG *        rgelt,
-        [out]   ULONG *                 pceltFetched
-        );
-
-    [call_as(Next)]
-    HRESULT RemoteNext(
-        [in]    ULONG                   celt,
-        [out, size_is(celt), length_is(*pceltFetched)]
-                STATPROPSETSTG *        rgelt,
-        [out]   ULONG *                 pceltFetched
-        );
-
-    HRESULT Skip(
-        [in]    ULONG                   celt
-        );
-
-    HRESULT Reset();
-
-    HRESULT Clone(
-        [out]   IEnumSTATPROPSETSTG **  ppenum
-        );
-}
-
-
-cpp_quote("WINOLEAPI PropVariantCopy ( PROPVARIANT * pvarDest, const PROPVARIANT * pvarSrc );")
-cpp_quote("WINOLEAPI PropVariantClear ( PROPVARIANT * pvar );")
-cpp_quote("WINOLEAPI FreePropVariantArray ( ULONG cVariants, PROPVARIANT * rgvars );")
-
-cpp_quote("")
-cpp_quote("#define _PROPVARIANTINIT_DEFINED_")
-cpp_quote("#   ifdef __cplusplus")
-cpp_quote("inline void PropVariantInit ( PROPVARIANT * pvar )")
-cpp_quote("{")
-cpp_quote("    memset ( pvar, 0, sizeof(PROPVARIANT) );")
-cpp_quote("}")
-cpp_quote("#   else")
-cpp_quote("#   define PropVariantInit(pvar) memset ( pvar, 0, sizeof(PROPVARIANT) )")
-cpp_quote("#   endif")
-cpp_quote("")
-
-cpp_quote("")
-cpp_quote("#ifndef _STGCREATEPROPSTG_DEFINED_")
-cpp_quote("WINOLEAPI StgCreatePropStg( IUnknown* pUnk, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );")
-cpp_quote("WINOLEAPI StgOpenPropStg( IUnknown* pUnk, REFFMTID fmtid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );")
-cpp_quote("WINOLEAPI StgCreatePropSetStg( IStorage *pStorage, DWORD dwReserved, IPropertySetStorage **ppPropSetStg);")
-
-cpp_quote("")
-cpp_quote("#define CCH_MAX_PROPSTG_NAME    31")
-cpp_quote("WINOLEAPI FmtIdToPropStgName( const FMTID *pfmtid, LPOLESTR oszName );" )
-cpp_quote("WINOLEAPI PropStgNameToFmtId( const LPOLESTR oszName, FMTID *pfmtid );" )
-cpp_quote("#endif")
-
-	*/
-
-/****************************************************************************
- *  Connection Point Interfaces
- ****************************************************************************/
- /*
-#ifdef __INCLUDE_CPIFS
-interface IConnectionPointContainer;
-interface IConnectionPoint;
-interface IEnumConnections;
-interface IEnumConnectionPoints;
-
-[
-    object,
-    uuid(B196B286-BAB4-101A-B69C-00AA00341D07),
-    pointer_default(unique)
-]
-interface IConnectionPoint : IUnknown
-{
-    typedef IConnectionPoint * PCONNECTIONPOINT;
-    typedef IConnectionPoint * LPCONNECTIONPOINT;
-
-    HRESULT GetConnectionInterface
-    (
-        [out]           IID * piid
-    );
-
-    HRESULT GetConnectionPointContainer
-    (
-        [out]           IConnectionPointContainer ** ppCPC
-    );
-
-    HRESULT Advise
-    (
-        [in]    IUnknown * pUnkSink,
-        [out]   DWORD *    pdwCookie
-    );
-
-    HRESULT Unadvise
-    (
-        [in]    DWORD dwCookie
-    );
-
-    HRESULT EnumConnections
-    (
-        [out]   IEnumConnections ** ppEnum
-    );
-}
-
-[
-    object,
-    uuid(B196B284-BAB4-101A-B69C-00AA00341D07),
-    pointer_default(unique)
-]
-interface IConnectionPointContainer : IUnknown
-{
-    typedef IConnectionPointContainer * PCONNECTIONPOINTCONTAINER;
-    typedef IConnectionPointContainer * LPCONNECTIONPOINTCONTAINER;
-
-    HRESULT EnumConnectionPoints
-    (
-        [out]   IEnumConnectionPoints ** ppEnum
-    );
-
-    HRESULT FindConnectionPoint
-    (
-        [in]    REFIID riid,
-        [out]   IConnectionPoint ** ppCP
-    );
-}
-
-
-[
-    object,
-    uuid(B196B287-BAB4-101A-B69C-00AA00341D07),
-    pointer_default(unique)
-]
-interface IEnumConnections : IUnknown
-{
-    typedef IEnumConnections * PENUMCONNECTIONS;
-    typedef IEnumConnections * LPENUMCONNECTIONS;
-
-    typedef struct tagCONNECTDATA
-    {
-        IUnknown *  pUnk;
-        DWORD       dwCookie;
-    } CONNECTDATA;
-
-    typedef struct tagCONNECTDATA * PCONNECTDATA;
-    typedef struct tagCONNECTDATA * LPCONNECTDATA;
-
-    [local]
-    HRESULT Next(
-        [in]                        ULONG           cConnections,
-        [out,
-         size_is(cConnections),
-         length_is(*lpcFetched)]    CONNECTDATA *   rgcd,
-        [out]                       ULONG *         lpcFetched
-    );
-
-    [call_as(Next)]
-    HRESULT RemoteNext(
-        [in]                            ULONG           cConnections,
-        [out,
-         size_is(cConnections),
-         length_is(*lpcFetched)]        CONNECTDATA *   rgcd,
-        [out]                           ULONG *         lpcFetched
-    );
-
-    HRESULT Skip
-    (
-        [in]    ULONG cConnections
-    );
-
-    HRESULT Reset
-    (
-        void
-    );
-
-    HRESULT Clone
-    (
-        [out]   IEnumConnections ** ppEnum
-    );
-}
-
-
-[
-    object,
-    uuid(B196B285-BAB4-101A-B69C-00AA00341D07),
-    pointer_default(unique)
-]
-interface IEnumConnectionPoints : IUnknown
-{
-    typedef IEnumConnectionPoints * PENUMCONNECTIONPOINTS;
-    typedef IEnumConnectionPoints * LPENUMCONNECTIONPOINTS;
-
-    [local]
-    HRESULT Next(
-        [in]                        ULONG               cConnections,
-        [out,
-         size_is(cConnections),
-         length_is(*lpcFetched)]    IConnectionPoint ** rgpcn,
-        [out]                       ULONG *             lpcFetched
-    );
-
-    [call_as(Next)]
-    HRESULT RemoteNext(
-        [in]                        ULONG               cConnections,
-        [out,
-         size_is(cConnections),
-         length_is(*lpcFetched)]    IConnectionPoint ** rgpcn,
-        [out]                       ULONG *             lpcFetched
-    );
-
-    HRESULT Skip
-    (
-        [in]    ULONG   cConnections
-    );
-
-    HRESULT Reset
-    (
-        void
-    );
-
-    HRESULT Clone
-    (
-        [out]   IEnumConnectionPoints **    ppEnum
-    );
-}
-#endif // __INCLUDE_CPIFS
-
-
-cpp_quote( "#if  (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
-cpp_quote( "// This interface is only valid on Windows NT 4.0" )
-
-[
-    local,
-    object,
-    uuid(0000013D-0000-0000-C000-000000000046)
-]
-interface IClientSecurity : IUnknown
-{
-
-    typedef struct tagSOLE_AUTHENTICATION_SERVICE
-    {
-        DWORD    dwAuthnSvc;
-        DWORD    dwAuthzSvc;
-        OLECHAR *pPrincipalName;
-        HRESULT  hr;
-    } SOLE_AUTHENTICATION_SERVICE;
-
-    typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
-
-    typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
-    {
-        EOAC_NONE           = 0x0,
-        EOAC_MUTUAL_AUTH    = 0x1,
-        EOAC_CLOAKING       = 0x10,
-
-        // These are only valid for CoInitializeSecurity
-        EOAC_SECURE_REFS    = 0x2,
-        EOAC_ACCESS_CONTROL = 0x4,
-        EOAC_APPID          = 0x8
-    } EOLE_AUTHENTICATION_CAPABILITIES;
-
-    HRESULT QueryBlanket
-    (
-        [in]  IUnknown                *pProxy,
-        [out] DWORD                   *pAuthnSvc,
-        [out] DWORD                   *pAuthzSvc,
-        [out] OLECHAR                **pServerPrincName,
-        [out] DWORD                   *pAuthnLevel,
-        [out] DWORD                   *pImpLevel,
-        [out] void                   **pAuthInfo,
-        [out] DWORD                   *pCapabilites
-    );
-
-    HRESULT SetBlanket
-    (
-        [in] IUnknown                 *pProxy,
-        [in] DWORD                     AuthnSvc,
-        [in] DWORD                     AuthzSvc,
-        [in] OLECHAR                  *pServerPrincName,
-        [in] DWORD                     AuthnLevel,
-        [in] DWORD                     ImpLevel,
-        [in] void                     *pAuthInfo,
-        [in] DWORD                     Capabilities
-    );
-
-    HRESULT CopyProxy
-    (
-        [in]  IUnknown  *pProxy,
-        [out] IUnknown **ppCopy
-    );
-}
-
-[
-    local,
-    object,
-    uuid(0000013E-0000-0000-C000-000000000046)
-]
-interface IServerSecurity : IUnknown
-{
-    HRESULT QueryBlanket
-    (
-        [out] DWORD    *pAuthnSvc,
-        [out] DWORD    *pAuthzSvc,
-        [out] OLECHAR **pServerPrincName,
-        [out] DWORD    *pAuthnLevel,
-        [out] DWORD    *pImpLevel,
-        [out] void    **pPrivs,
-        [out] DWORD    *pCapabilities
-    );
-
-    HRESULT ImpersonateClient();
-
-    HRESULT RevertToSelf();
-
-    BOOL IsImpersonating();
-}
-
-[
-    object,
-    uuid(00000140-0000-0000-C000-000000000046)
-]
-
-interface IClassActivator : IUnknown
-{
-    HRESULT GetClassObject(
-        [in] REFCLSID rclsid,
-        [in] DWORD dwClassContext,
-        [in] LCID locale,
-        [in] REFIID riid,
-        [out, iid_is(riid)] void **ppv);
-}
-
-
-[
-object,
-local,
-uuid(00000144-0000-0000-C000-000000000046),
-oleautomation
-]
-interface IRpcOptions : IUnknown
-{
-    HRESULT Set([in] IUnknown * pPrx,
-                [in] DWORD dwProperty,
-                [in] DWORD dwValue);
-
-    HRESULT Query([in] IUnknown * pPrx,
-                  [in] DWORD dwProperty,
-                  [out] DWORD * pdwValue);
-
-    HRESULT CopyProxy([in] IUnknown * punkProxy,
-                      [out] IUnknown ** ppunkCopy);
-}
-
-enum {COMBND_RPCSTRINGS = 0x01};  // flag indicating arBndInfo is the
-                                  // Rpc string bindings to be used.
-
-[
-object,
-local,
-uuid(00000148-0000-0000-C000-000000000046)
-]
-interface IComBinding : IUnknown
-{
-  HRESULT InitBinding([in]    DWORD    dwEndpointFlags,
-                      [in]    DWORD    dwNICFlags,
-                      [in]    DWORD    mbzReserved1,
-                      [in]    DWORD    mbzReserved2,
-                      [in]    LPOLESTR pszBinding
-	              );
-
-  HRESULT QueryBinding([out]    LPDWORD    pdwEndpointFlags,
-                       [out]    LPDWORD    pdwNICFlags,
-                       [out]    LPDWORD    mbzReserved1,
-                       [out]    LPDWORD    mbzReserved2,
-                       [out]    LPOLESTR  *ppszBinding
-	              );
-
-
-}
-
-
-
-
-cpp_quote( "#endif //DCOM" )
-
-
-[
-    object,
-    uuid(99caf010-415e-11cf-8814-00aa00b569f5),
-    pointer_default(unique)
-]
-
-interface IFillLockBytes: IUnknown
-{
-    [local]
-    HRESULT FillAppend
-    (
-        [in, size_is(cb)] void const *pv,
-        [in] ULONG cb,
-        [out] ULONG *pcbWritten
-    );
-
-    [call_as(FillAppend)]
-    HRESULT _stdcall RemoteFillAppend(
-        [in, size_is(cb)] byte const *pv,
-        [in] ULONG cb,
-        [out] ULONG *pcbWritten);
-
-    [local]
-    HRESULT FillAt
-    (
-        [in] ULARGE_INTEGER ulOffset,
-        [in, size_is(cb)] void const *pv,
-        [in] ULONG cb,
-        [out] ULONG *pcbWritten
-    );
-
-    [call_as(FillAt)]
-    HRESULT _stdcall RemoteFillAt(
-        [in] ULARGE_INTEGER ulOffset,
-        [in, size_is(cb)] byte const *pv,
-        [in] ULONG cb,
-        [out] ULONG *pcbWritten);
-
-    HRESULT SetFillSize
-    (
-        [in] ULARGE_INTEGER ulSize
-    );
-
-    HRESULT Terminate
-    (
-        [in] BOOL bCanceled
-    );
-}
-
-
-[
-    object,
-    uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
-    pointer_default(unique)
-]
-
-interface IProgressNotify: IUnknown
-{
-    HRESULT OnProgress
-    (
-        [in] DWORD dwProgressCurrent,
-        [in] DWORD dwProgressMaximum,
-        [in] BOOL  fAccurate,
-        [in] BOOL  fOwner
-    );
-}
-
-
-[
-    local,
-    object,
-    uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
-    pointer_default(unique)
-]
-
-interface ILayoutStorage: IUnknown
-{
-        typedef struct tagStorageLayout
-        {
-            DWORD LayoutType;
-            OLECHAR *pwcsElementName;
-            LARGE_INTEGER cOffset;
-            LARGE_INTEGER cBytes;
-        } StorageLayout;
-
-        HRESULT __stdcall LayoutScript
-        (
-            [in] StorageLayout *pStorageLayout,
-            [in] DWORD nEntries,
-            [in] DWORD glfInterleavedFlag
-        );
-        HRESULT __stdcall BeginMonitor(void);
-
-        HRESULT __stdcall EndMonitor(void);
-
-        HRESULT __stdcall ReLayoutDocfile
-        (
-            [in] OLECHAR *pwcsNewDfName
-        );
-
-        HRESULT __stdcall ReLayoutDocfileOnILockBytes
-        (
-            [in] ILockBytes *pILockBytes
-        );
-
-
-}
-
-[
- uuid(00000022-0000-0000-C000-000000000046),
- version(1.0),
- pointer_default(unique)
-  , object
-]
-
-interface ISurrogate : IUnknown
-{
-    typedef [unique] ISurrogate* LPSURROGATE;
-
-        HRESULT LoadDllServer(
-                [in] REFCLSID           Clsid);
-        HRESULT FreeSurrogate();
-}
-
-
-[
-    local,
-    object,
-    uuid(00000146-0000-0000-C000-000000000046)
-]
-interface IGlobalInterfaceTable : IUnknown
-{
-    typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
-
-    HRESULT RegisterInterfaceInGlobal
-    (
-        [in]  IUnknown *pUnk,
-        [in]  REFIID    riid,
-        [out] DWORD    *pdwCookie
-    );
-
-    HRESULT RevokeInterfaceFromGlobal
-    (
-        [in] DWORD      dwCookie
-    );
-
-    HRESULT GetInterfaceFromGlobal
-    (
-        [in]  DWORD          dwCookie,
-        [in]  REFIID         riid,
-        [out, iid_is(riid)] void **ppv
-    );
-};
-
-
-[
-    object,
-    uuid(0e6d4d92-6738-11cf-9608-00aa00680db4),
-    pointer_default(unique)
-]
-
-interface IDirectWriterLock : IUnknown
-{
-
-    HRESULT WaitForWriteAccess ([in] DWORD dwTimeout);
-
-    HRESULT ReleaseWriteAccess ();
-
-    HRESULT HaveWriteAccess ();
-
-}
-
-[
-    object,
-    uuid(00000023-0000-0000-C000-000000000046)
-]
-
-interface ISynchronize : IUnknown
-{
-    HRESULT Wait([in] DWORD dwMilliseconds);
-    HRESULT Signal();
-    HRESULT Reset();
-}
-
-[
- local,
- object,
- uuid(00000025-0000-0000-C000-000000000046)
-]
-interface ISynchronizeMutex : ISynchronize
-{
-    HRESULT ReleaseMutex();
-}
-
-[
- local,
- object,
- uuid(00000024-0000-0000-C000-000000000046)
-]
-interface IAsyncSetup : IUnknown
-{
-    HRESULT GetAsyncManager( [in]  REFIID           riid,
-                             [in]  IUnknown        *pOuter,
-                             [in]  DWORD            dwFlags,
-                             [out] IUnknown       **ppInner,
-                             [out] IAsyncManager  **ppAsyncMgr );
-}
-
-[
- local,
- object,
- uuid(00000029-0000-0000-C000-000000000046)
-]
-
-interface ICancelMethodCalls : IUnknown
-{
-    typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
-
-    HRESULT Cancel          (void);
-    HRESULT TestCancel      (void);
-    HRESULT SetCancelTimeout([in] ULONG ulSeconds);
-}
-
-[
- local,
- object,
- uuid(0000002A-0000-0000-C000-000000000046)
-]
-interface IAsyncManager : IUnknown
-{
-    typedef enum tagDCOM_CALL_STATE
-    {
-        DCOM_NONE           = 0x0,
-        DCOM_CALL_COMPLETE  = 0x1,
-        DCOM_CALL_CANCELED  = 0x2,
-    } DCOM_CALL_STATE;
-
-    HRESULT CompleteCall  ( [in] HRESULT Result );
-    HRESULT GetCallContext( [in] REFIID riid, [out] void **pInterface );
-    HRESULT GetState      ( [out] ULONG *pulStateFlags);
-}
-
-[
- local,
- object,
- uuid(0000002B-0000-0000-C000-000000000046)
-]
-interface IWaitMultiple : IUnknown
-{
-    HRESULT WaitMultiple  ( [in] DWORD timeout, [out] ISynchronize **pSync );
-    HRESULT AddSynchronize( [in] ISynchronize *pSync );
-}
-
-[
- local,
- object,
- uuid(0000002C-0000-0000-C000-000000000046)
-]
-interface ISynchronizeEvent : IUnknown
-{
-    HRESULT GetEvent( [out] HANDLE *pEvent );
-}
-
-[
- object,
- uuid(00000026-0000-0000-C000-000000000046)
-]
-interface IUrlMon : IUnknown
-{
-    HRESULT AsyncGetClassBits(
-        [in]         REFCLSID   rclsid,
-        [in, unique] LPCWSTR    pszTYPE,
-        [in, unique] LPCWSTR    pszExt,
-        [in]         DWORD      dwFileVersionMS,
-        [in]         DWORD      dwFileVersionLS,
-        [in, unique] LPCWSTR    pszCodeBase,
-        [in]         IBindCtx * pbc,
-        [in]         DWORD      dwClassContext,
-        [in]         REFIID     riid,
-        [in]         DWORD      flags);
-}
-
-//----------------------------------------------------------------------------
-// The Class Store Access Interface.
-//----------------------------------------------------------------------------
-[
-  object,
-  uuid(00000190-0000-0000-C000-000000000046)
-]
-interface IClassAccess : IUnknown
-{
-
-// This is the most common method to access the Class Container.
-// It queries the Class Store for implementations for a specific
-// Class Id.
-// If a matching implementation is available for the object type,
-// client architecture, locale and class context a pointer to the
-// binary is returned along with other package info in the [out] parameter
-// pPackageInfo.
-//
-// If the binary needs to be downloaded to the local machine, it is
-// done as a part of this.
-//
-    HRESULT   GetClassInfo(
-          [in]    REFCLSID          clsid,             // Class ID
-          [in]    QUERYCONTEXT      QryContext,        // Query Attributes
-          [out]   PACKAGEINFO   *   pPackageInfo
-    );
-
-//
-// GetClassSpecInfo is same as GetClassInfo except for it takes in
-//  any Class Specifier , CLSID or File Ext, or ProgID or MIME type.
-//
-    HRESULT   GetClassSpecInfo(
-          [in]    uCLSSPEC      *   pClassSpec,        // Class Spec (CLSID/Ext/MIME)
-          [in]    QUERYCONTEXT      QryContext,        // Query Attributes
-          [out]   PACKAGEINFO   *   pPackageInfo
-    );
-
-
-//
-// GetInstallablePackages is used by CoGetPublishedAppInfo
-// to provide list of published apps from the class store that are
-// available for installation.
-//
-
-typedef struct tagPUBLISHEDINFOLIST {
-        DWORD            cPublApps;
-        [size_is(cPublApps), unique] PUBLISHEDAPPINFO    *pPublAppInfo;
-} PUBLISHEDINFOLIST;
-
-    HRESULT   GetInstallablePackages (
-          [in]    DWORD               Count,
-          [out]   PUBLISHEDINFOLIST   *pInfoList
-    );
-
-}
-
-[
-  object,
-  uuid(00000192-0000-0000-C000-000000000046)
-]
-interface IClassRefresh : IUnknown
-{
-//
-// GetUpgrades is called to check if the Class Store has
-// newer versions for any of a list of CLSIDs. The client calls this
-// with a list of CLSIDs that were installed from the Class Container.
-//
-
-typedef struct tagPACKAGEINFOLIST {
-        DWORD            cPackInfo;
-        [size_is(cPackInfo), unique] PACKAGEINFO    *pPackageInfo;
-} PACKAGEINFOLIST;
-
-    HRESULT   GetUpgrades (
-        [in]    ULONG                   cClasses,
-        [in, size_is(cClasses)] CLSID   *pClassList,     // CLSIDs Installed
-        [in]    CSPLATFORM              Platform,
-        [in]    LCID                    Locale,
-        [out]   PACKAGEINFOLIST         *pPackageInfoList);
-
-//
-// CommitUpgrades is called to notify the Class Store that
-// the newer versions were successfully installed and that the update sequence
-// can be moved forward.
-//
-
-    HRESULT   CommitUpgrades ();
-}
-
-
-//----------------------------------------------------------------------------
-// The Class Store Admin Interface.
-//----------------------------------------------------------------------------
-
-typedef struct tagCLASSDETAIL {
-               CLSID                Clsid;
-               LPOLESTR             pszDesc;
-               LPOLESTR             pszIconPath;
-               CLSID                TreatAsClsid;
-               CLSID                AutoConvertClsid;
-               DWORD                cFileExt;
-               [size_is(cFileExt)] LPOLESTR  *prgFileExt;
-               LPOLESTR             pMimeType;
-               LPOLESTR             pDefaultProgId;
-               DWORD                cOtherProgId;
-               [size_is(cOtherProgId)] LPOLESTR  *prgOtherProgId;
-} CLASSDETAIL;
-
-//+---------------------------------------------------------------------------
-//    Contents:        Enum Interfaces for Class Store
-//----------------------------------------------------------------------------
-cpp_quote("#ifndef _LPCSADMNENUM_DEFINED")
-cpp_quote("#define _LPCSADMNENUM_DEFINED")
-
-//
-//  IEnumPackage
-//  ============
-//
-
-[
-  object,
-  uuid(00000193-0000-0000-C000-000000000046)
-]
-interface IEnumPackage : IUnknown
-{
-
-//---- Next()
-
-    HRESULT Next(
-        [in]        ULONG celt,
-        [out, size_is(celt), length_is(*pceltFetched)] PACKAGEDETAIL *rgelt,
-        [out]       ULONG *pceltFetched);
-
-//
-//    celt             number of elements to be fetched.
-//    rgelt            array of PackageDetail structures.
-//    pceltFetched     elements actually fetched.
-//
-// Returns:
-//        S_OK
-//        S_FALSE            (Not enough elements to be fetched.)
-//        E_INVALIDARG
-//        E_FAIL
-//        CS_E_INVALID_VERSION (Class Container is corrupted
-//                              OR is of a version that is no more supported)
-//        E_OUTOFMEMORY
-//
-//    on errors
-//        *pceltFetched = 0
-//
-
-
-//---- Skip()
-
-    HRESULT Skip(
-        [in]        ULONG celt);
-
-//
-//    celt            number of elements to be skipped.
-//
-// Returns:
-//        S_OK
-//        S_FALSE            (Not enough elements to be skipped.)
-//        E_FAIL
-//        E_ACCESSDENIED
-//        E_OUTOFMEMORY
-
-
-//---- Reset()
-
-    HRESULT Reset();
-
-//
-// Returns:
-//        S_OK
-//
-
-
-//---- Clone()
-
-    HRESULT Clone(
-        [out]       IEnumPackage **ppenum);
-
-//
-// Returns:
-//        S_OK
-//        E_FAIL
-//        E_INVALIDARG
-//        E_ACCESSDENIED
-//        E_OUTOFMEMORY
-
-
-}
-
-
-//
-//  IEnumClass
-//  ==========
-//
-
-[
-  object,
-  uuid(00000194-0000-0000-C000-000000000046)
-]
-
-interface IEnumClass : IUnknown
-{
-//---- Next()
-
-    HRESULT Next(
-        [in]        ULONG celt,
-        [out, size_is(celt), length_is(*pceltFetched)] CLASSDETAIL *rgelt,
-        [out]       ULONG *pceltFetched);
-
-//
-//    celt             number of elements to be fetched.
-//    rgelt            array of CLASSDETAIL structures.
-//    pceltFetched     elements actually fetched.
-//
-// Returns:
-//        S_OK
-//        S_FALSE            (Not enough elements to be fetched.)
-//        E_INVALIDARG
-//        E_FAIL
-//        CS_E_INVALID_VERSION (Class Container is corrupted
-//                              OR is of a version that is no more supported)
-//        E_OUTOFMEMORY
-//
-//    on errors
-//        *pceltFetched = 0
-//
-
-//---- Skip()
-
-    HRESULT Skip(
-        [in]        ULONG celt);
-
-//
-//    celt            number of elements to be skipped.
-//
-// Returns:
-//        S_OK
-//        S_FALSE            (Not enough elements to be skipped.)
-//        E_FAIL
-//        E_ACCESSDENIED
-//        E_OUTOFMEMORY
-
-//---- Reset()
-
-    HRESULT Reset();
-
-//
-// Returns:
-//        S_OK
-//
-
-
-//---- Clone()
-
-    HRESULT Clone(
-        [out]       IEnumClass **ppenum);
-
-//
-// Returns:
-//        S_OK
-//        E_FAIL
-//        E_INVALIDARG
-//        E_ACCESSDENIED
-//        E_OUTOFMEMORY
-
-
-
-}
-cpp_quote("#endif")
-
-//
-//  IClassAdmin
-//  ===========
-//
-
-
-[
-  object,
-  uuid(00000191-0000-0000-C000-000000000046)
-]
-interface IClassAdmin : IUnknown
-{
-
-// ::NewClass
-// -----------
-// Stores a new Class Definition in the Class Store
-// Corresponds to HKCR/{CLSID} in registry
-// [In] - CLSID
-//                Class Name
-//                TreatAs CLSID (NULL GUID if no TreatAs)
-//                AutoConvert CLSID (NULL GUID if no AutoConvert)
-//                File Extension (NULL if no association)
-//                Mime Type (NULL if no association)
-//                Default ProgId (NULL if no association)
-//                Other ProgIds
-//                TypelibID
-//                Icon Path (NULL if none).
-//
-// Returns - S_OK
-//                     E_ALREADY_EXISTS
-//                     E_INVALIDARG
-//
-    HRESULT    NewClass (
-        [in]        CLASSDETAIL *pClassDetail
-        );
-
-// ::DeleteClass
-// -----------
-// Removes a Class Definition from the Class Store
-// [In] - CLSID
-
-    HRESULT    DeleteClass (
-        [in]        REFCLSID      guidClsId
-        );
-
-
-// ::NewInterface
-// --------------
-// Stores a new Interface Definition in the Class Store
-// Corresponds to HKCR/{IID} in registry
-// [In] - IID
-//                Interface Name
-//                Proxy-Stub CLSID (NULL GUID if no ProxyStub)
-//                TypeLib GUID (NULL GUID if no TypeLib)
-//
-// Returns - S_OK
-//                     E_ALREADY_EXISTS
-//                     E_INVALID_ARG
-//
-    HRESULT    NewInterface (
-        [in]        REFIID      iid,
-        [in, unique] LPOLESTR   pszDesc,
-        [in]        REFCLSID    psclsid,
-        [in]        REFCLSID    typelibid
-        );
-
-// ::DeleteInterface
-// -----------
-// Removes an Interface Definition from the Class Store
-// [In] - IID
-
-    HRESULT    DeleteInterface (
-        [in]        REFIID      iid
-        );
-
-
-// ::NewPackage
-// ------------
-// Stores a new application package in the Class Store
-// May Correspond to HKCR/{CLSID}/LocalServer32 likes in registry
-//
-// Returns - S_OK
-//                     E_ALREADY_EXISTS
-//                     E_INVALIDARG
-//
-    HRESULT    NewPackage (
-        [in]        PACKAGEDETAIL *pPackageDetail
-        );
-
-
-// ::DeletePackage
-// -----------
-// Removes a package from the Class Store
-// [In] - PackageName
-
-    HRESULT    DeletePackage (
-        [in]        LPOLESTR       pszPackageName
-        );
-
-// ::GetClassesEnum()
-//
-// Returns the clsid enumerator
-// for browsing classes defined in the class store.
-//
-// Returns:
-//        S_OK
-//        E_INVALIDARG
-//        E_FAIL
-//        E_ACCESSDENIED
-//        E_OUTOFMEMORY
-//
-//
-//  The value of the enumerator is NULL for all the error conditions.
-//
-
-    HRESULT    GetClassesEnum(
-        [out]       IEnumClass **ppIEnumClass
-    );
-
-
-
-// ::GetPackagesEnum()
-//
-//        Getting the Package enumerator from the classstore.
-//
-//        guidClsid:    All the apps that implements the clsid.
-//                        ignored if NULLGUID.
-//        Vendor:       All the apps provided by a given Vendor.
-//                        ignored if NULL.
-//
-//        ppIEnumPackage: NULL if there is any error.
-//
-// Returns:
-//        S_OK
-//        E_INVALIDARG
-//        E_FAIL
-//        E_ACCESSDENIED
-//        E_OUTOFMEMORY
-//
-// The value of the enumerator is NULL for all the error conditions.
-//
-
-    HRESULT    GetPackagesEnum(
-        [in]         REFCLSID         guidClsid,
-        [in, unique] LPOLESTR         pszVendor,
-        [in]         CSPLATFORM       Platform,
-        [in]         DWORD            dwContext,
-        [in]         LCID             Locale,
-        [out]        IEnumPackage    **ppIEnumPackage
-        );
-
-
-// ::GetClassDetails()
-//
-// Get all the class details given the clsid.
-//
-//    [in]      guidClsID    class ID (guid)
-//    [out]     CLASSDETAIL     *pClassDetail
-//
-// Returns:
-//        S_OK
-//        E_INVALIDARG
-//        E_FAIL
-//        E_NOTFOUND            (no such class)
-//        E_ACCESSDENIED
-//        E_OUTOFMEMORY
-//
-//
-
-
-
-    HRESULT    GetClassDetails (
-        [in]        REFCLSID            guidClsId,
-        [out]       CLASSDETAIL         *pClassDetail
-        );
-
-
-// ::GetIidDetails()
-//
-//    [IN]
-//        iid            IID (guid)
-//    [OUT]
-//        pszDesc         Description
-//        psClsid         Proxy Stub Class ID
-//        pTypeLibId      libid
-//
-// Returns:
-//        S_OK
-//        E_INVALIDARG
-//        E_FAIL
-//        E_NOTFOUND
-//        E_ACCESSDENIED
-//        E_OUTOFMEMORY
-//
-//
-
-    HRESULT GetIidDetails (
-        [in]        REFIID           iid,
-        [out]       LPOLESTR        *ppszDesc,
-        [out]       CLSID           *psClsid,
-        [out]       CLSID           *pTypeLibId
-        );
-
-// ::GetPackageDetails()
-//
-// Get all the Package details given packagename.
-//
-//    [IN]
-//          PackageName: Name of the package
-//    [OUT]
-//          pPackageDetail  Package Detail
-//
-// Returns:
-//        S_OK
-//        E_INVALIDARG
-//        E_FAIL
-//        E_NOTFOUND            (no such class)
-//        E_ACCESSDENIED
-//        E_OUTOFMEMORY
-//
-//
-
-
-    HRESULT    GetPackageDetails (
-        [in]        LPOLESTR             pszPackageName,
-        [out]       PACKAGEDETAIL       *pPackageDetail
-        );
-}
-
-cpp_quote("#if ( _MSC_VER >= 800 )")
-cpp_quote("#pragma warning(default:4201)")
-cpp_quote("#endif")
-
-	*/
-
-} // extern (Windows)
+module dwt.internal.ole.win32.OBJIDL;
+//+-------------------------------------------------------------------------
+//
+//  Microsoft Windows
+//  Copyright (C) Microsoft Corporation, 1992-1997.
+//
+//  File: objidl.idl
+//
+//--------------------------------------------------------------------------
+
+
+private import dwt.internal.ole.win32.extras;
+private import dwt.internal.win32.WINTYPES;
+// private import std.c.windows.windows;
+// private import std.c.windows.com;
+// private import dwt.internal.win32.os;
+
+
+/* *NEED* to port wtypes.h */
+
+extern( Windows ) {
+
+
+
+
+//#ifndef DO_NO_IMPORTS
+//import "unknwn.idl";
+//import "wtypes.idl";
+//#endif
+
+enum SRVINFO
+{
+    SRVINFO_F_COSERVERINFO = 0,
+    SRVINFO_F_COSERVERINFO2 = 1
+}
+
+struct COSERVERINFO
+{
+    DWORD             dwReserved1;
+    LPWSTR            pwszName;
+    COAUTHINFO *      pAuthInfo;
+    DWORD             dwReserved2;
+}
+
+struct COSERVERINFO2 {
+    DWORD           dwFlags;
+    LPWSTR          pwszName;
+    COAUTHINFO*     pAuthInfo;
+    IUnknown*       ppCall;
+    LPWSTR          pwszCodeURL;
+    DWORD           dwFileVersionMS;
+    DWORD           dwFileVersionLS;
+    LPWSTR          pwszContentType;
+}
+
+
+/****************************************************************************
+ *  Component Object Interfaces
+ ****************************************************************************/
+
+interface IMarshal : IUnknown
+{
+	HRESULT GetUnmarshalClass( REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, CLSID *pCid );
+	HRESULT GetMarshalSizeMax( REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags, DWORD *pSize );
+	HRESULT MarshalInterface( IStream pStm, REFIID riid, void *pv, DWORD dwDestContext, void *pvDestContext, DWORD mshlflags );
+	HRESULT UnmarshalInterface( IStream pStm, REFIID riid, void **ppv );
+	HRESULT ReleaseMarshalData( IStream pStm );
+	HRESULT DisconnectObject( DWORD dwReserved );
+}
+alias IMarshal LPMARSHAL;
+
+interface IMalloc : IUnknown
+{
+	void * Alloc( ULONG cb );
+	void * Realloc( void * pv, ULONG cb );
+	void   Free( void * pv );
+	ULONG  GetSize( void * pv );
+	int    DidAlloc( void * pv );
+	void   HeapMinimize();
+}
+alias IMalloc LPMALLOC;
+
+interface IMallocSpy : IUnknown
+{
+	ULONG   PreAlloc( ULONG cbRequest );
+	void  * PostAlloc( void * pActual );
+	void  * PreFree( void *pRequest, BOOL  fSpyed );
+	void    PostFree( BOOL  fSpyed );
+	ULONG   PreRealloc( void   *pRequest, ULONG   cbRequest, void **ppNewRequest, BOOL    fSpyed );
+	void  * PostRealloc( void *pActual, BOOL  fSpyed );
+	void  * PreGetSize( void *pRequest, BOOL  fSpyed );
+	ULONG   PostGetSize( ULONG cbActual, BOOL  fSpyed );
+	void  * PreDidAlloc( void * pRequest, BOOL  fSpyed );
+	int    PostDidAlloc( void *pRequest, BOOL  fSpyed, int   fActual );
+	void  PreHeapMinimize();
+	void  PostHeapMinimize();
+}
+alias IMallocSpy LPMALLOCSPY;
+
+interface IStdMarshalInfo : IUnknown
+{
+	HRESULT GetClassForHandler( DWORD dwDestContext, void *pvDestContext, CLSID *pClsid );
+}
+alias IStdMarshalInfo LPSTDMARSHALINFO;
+
+    // bit flags for IExternalConnection
+enum EXTCONN
+{
+	EXTCONN_STRONG      = 0x0001,   // strong connection
+	EXTCONN_WEAK        = 0x0002,   // weak connection (table, container)
+	EXTCONN_CALLABLE    = 0x0004,   // table .vs. callable
+}
+
+interface IExternalConnection : IUnknown
+{
+    // *** IExternalConnection methods ***
+	DWORD AddConnection( DWORD extconn, DWORD reserved );
+	DWORD ReleaseConnection( DWORD extconn, DWORD reserved, BOOL  fLastReleaseCloses );
+}
+alias IExternalConnection LPEXTERNALCONNECTION;
+
+
+struct MULTI_QI
+{
+	const IID  *pIID; // pass this one in
+	IUnknown   pItf; // get these out (you must set to NULL before calling)
+	HRESULT     hr;
+}
+
+interface IMultiQI : IUnknown
+{
+    HRESULT QueryMultipleInterfaces( ULONG      cMQIs, MULTI_QI  *pMQIs );
+}
+alias IMultiQI LPMULTIQI;
+
+interface IEnumUnknown : IUnknown
+{
+	HRESULT Next( ULONG celt, IUnknown * rgelt, ULONG *pceltFetched);
+	HRESULT Skip( ULONG celt );
+	HRESULT Reset();
+	HRESULT Clone( IEnumUnknown * ppenum );
+}
+alias IEnumUnknown LPENUMUNKNOWN;
+
+
+
+/****************************************************************************
+ *  Binding Interfaces
+ ****************************************************************************/
+
+struct BIND_OPTS {
+    DWORD       cbStruct;       //  sizeof(BIND_OPTS)
+    DWORD       grfFlags;
+    DWORD       grfMode;
+    DWORD       dwTickCountDeadline;
+}
+alias BIND_OPTS * LPBIND_OPTS;
+
+struct BIND_OPTS2 {
+    DWORD           cbStruct;       //  sizeof(BIND_OPTS2)
+    DWORD           grfFlags;
+    DWORD           grfMode;
+    DWORD           dwTickCountDeadline;
+    DWORD           dwTrackFlags;
+    DWORD           dwClassContext;
+    LCID            locale;
+    COSERVERINFO *  pServerInfo;
+}
+alias BIND_OPTS2 * LPBIND_OPTS2;
+
+enum BIND_FLAGS
+{
+	BIND_MAYBOTHERUSER = 1,
+	BIND_JUSTTESTEXISTENCE = 2
+}
+
+interface IBindCtx : IUnknown
+{
+	HRESULT RegisterObjectBound( IUnknown  punk );
+	HRESULT RevokeObjectBound( IUnknown punk );
+	HRESULT ReleaseBoundObjects();
+	HRESULT SetBindOptions( BIND_OPTS * pbindopts );
+	HRESULT GetBindOptions( BIND_OPTS * pbindopts );
+	HRESULT GetRunningObjectTable( IRunningObjectTable * pprot );
+	HRESULT RegisterObjectParam( LPOLESTR pszKey, IUnknown punk );
+	HRESULT GetObjectParam( LPOLESTR pszKey, IUnknown * ppunk );
+	HRESULT EnumObjectParam( IEnumString * ppenum );
+	HRESULT RevokeObjectParam( LPOLESTR pszKey );
+}
+alias IBindCtx LPBC;
+alias IBindCtx LPBINDCTX;
+
+interface IEnumMoniker : IUnknown
+{
+	HRESULT Next( ULONG celt, IMoniker * rgelt, ULONG *pceltFetched );
+	HRESULT Skip( ULONG celt );
+	HRESULT Reset();
+	HRESULT Clone( IEnumMoniker * ppenum );
+}
+alias IEnumMoniker LPENUMMONIKER;
+
+interface IRunnableObject : IUnknown
+{
+	HRESULT GetRunningClass( LPCLSID lpClsid );
+	HRESULT Run( LPBINDCTX pbc );
+	BOOL IsRunning();
+	HRESULT LockRunning( BOOL fLock, BOOL fLastUnlockCloses );
+	HRESULT SetContainedObject( BOOL fContained );
+}
+alias IRunnableObject LPRUNNABLEOBJECT;
+
+interface IRunningObjectTable : IUnknown
+{
+	HRESULT Register( DWORD grfFlags, IUnknown punkObject, IMoniker pmkObjectName, DWORD *pdwRegister );
+	HRESULT Revoke ( DWORD dwRegister );
+	HRESULT IsRunning( IMoniker pmkObjectName );
+	HRESULT GetObject( IMoniker pmkObjectName, IUnknown * ppunkObject );
+	HRESULT NoteChangeTime( DWORD dwRegister, FILETIME *pfiletime );
+	HRESULT GetTimeOfLastChange( IMoniker  pmkObjectName, FILETIME *pfiletime );
+	HRESULT EnumRunning( IEnumMoniker * ppenumMoniker );
+}
+alias IRunningObjectTable LPRUNNINGOBJECTTABLE;
+
+interface IPersist : IUnknown
+{
+	HRESULT GetClassID( CLSID * pClassID );
+}
+alias IPersist LPPERSIST;
+
+interface IPersistStream : IPersist
+{
+	HRESULT IsDirty(  );
+	HRESULT Load( IStream pStm );
+	HRESULT Save( IStream pStm, BOOL fClearDirty );
+	HRESULT GetSizeMax( ULARGE_INTEGER *pcbSize );
+}
+alias IPersistStream LPPERSISTSTREAM;
+
+    // system moniker types; returned from IsSystemMoniker.
+enum MKSYS
+{
+	MKSYS_NONE = 0,
+	MKSYS_GENERICCOMPOSITE = 1,
+	MKSYS_FILEMONIKER = 2,
+	MKSYS_ANTIMONIKER = 3,
+	MKSYS_ITEMMONIKER = 4,
+	MKSYS_POINTERMONIKER = 5,
+    //  MKSYS_URLMONIKER = 6,
+	MKSYS_CLASSMONIKER = 7
+}
+
+enum MKREDUCE
+{
+	MKRREDUCE_ONE           =   3<<16,
+	MKRREDUCE_TOUSER        =   2<<16,
+	MKRREDUCE_THROUGHUSER   =   1<<16,
+	MKRREDUCE_ALL           =   0
+}
+
+interface IMoniker : IPersistStream
+{
+	HRESULT BindToObject( IBindCtx pbc, IMoniker pmkToLeft, REFIID riidResult, void **ppvResult );
+	HRESULT BindToStorage( IBindCtx pbc, IMoniker pmkToLeft, REFIID riid, void * ppvObj );
+	HRESULT Reduce( IBindCtx pbc, DWORD dwReduceHowFar, IMoniker * ppmkToLeft, IMoniker * ppmkReduced );
+	HRESULT ComposeWith( IMoniker pmkRight, BOOL fOnlyIfNotGeneric, IMoniker * ppmkComposite );
+	HRESULT Enum( BOOL fForward, IEnumMoniker * ppenumMoniker );
+	HRESULT IsEqual( IMoniker pmkOtherMoniker );
+	HRESULT Hash( DWORD *pdwHash );
+	HRESULT IsRunning( IBindCtx pbc, IMoniker pmkToLeft, IMoniker pmkNewlyRunning );
+	HRESULT GetTimeOfLastChange( IBindCtx pbc, IMoniker pmkToLeft, FILETIME *pFileTime );
+	HRESULT Inverse( IMoniker * ppmk );
+	HRESULT CommonPrefixWith( IMoniker pmkOther, IMoniker * ppmkPrefix );
+	HRESULT RelativePathTo( IMoniker pmkOther, IMoniker * ppmkRelPath );
+	HRESULT GetDisplayName( IBindCtx pbc, IMoniker pmkToLeft, LPOLESTR *ppszDisplayName );
+	HRESULT ParseDisplayName( IBindCtx pbc, IMoniker pmkToLeft, LPOLESTR pszDisplayName, ULONG *pchEaten,	IMoniker * ppmkOut );
+	HRESULT IsSystemMoniker( DWORD * pdwMksys );
+}
+alias IMoniker LPMONIKER;
+
+interface IROTData : IUnknown
+{
+	HRESULT GetComparisonData( byte * pbData, ULONG cbMax, ULONG *pcbData );
+}
+
+interface IEnumString : IUnknown
+{
+	HRESULT Next( ULONG celt, LPOLESTR *rgelt, ULONG *pceltFetched );
+	HRESULT Skip( ULONG celt );
+	HRESULT Reset();
+	HRESULT Clone( IEnumString * ppenum );
+}
+alias IEnumString LPENUMSTRING;
+
+
+/****************************************************************************
+ *  Structured Storage Interfaces
+ ****************************************************************************/
+
+interface ISequentialStream : IUnknown
+{
+	HRESULT Read( void *pv, ULONG cb, ULONG *pcbRead );
+	HRESULT Write( void *pv, ULONG cb, ULONG *pcbWritten );
+}
+
+    /* Storage stat buffer */
+struct STATSTG
+{
+        LPOLESTR pwcsName;
+        DWORD type;
+        ULARGE_INTEGER cbSize;
+        FILETIME mtime;
+        FILETIME ctime;
+        FILETIME atime;
+        DWORD grfMode;
+        DWORD grfLocksSupported;
+        CLSID clsid;
+        DWORD grfStateBits;
+    DWORD reserved;
+}
+
+    /* Storage element types */
+enum STGTY
+{
+	STGTY_STORAGE   = 1,
+	STGTY_STREAM    = 2,
+	STGTY_LOCKBYTES = 3,
+	STGTY_PROPERTY  = 4
+}
+
+enum STREAM_SEEK
+{
+        STREAM_SEEK_SET = 0,
+        STREAM_SEEK_CUR = 1,
+        STREAM_SEEK_END = 2
+}
+
+enum LOCKTYPE
+{
+        LOCK_WRITE      = 1,
+        LOCK_EXCLUSIVE  = 2,
+        LOCK_ONLYONCE   = 4
+}
+
+interface IStream : ISequentialStream
+{
+	HRESULT Seek( LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER *plibNewPosition );
+	HRESULT SetSize( ULARGE_INTEGER libNewSize );
+	HRESULT CopyTo( IStream pstm, ULARGE_INTEGER cb, ULARGE_INTEGER *pcbRead, ULARGE_INTEGER *pcbWritten);
+	HRESULT Commit( DWORD grfCommitFlags );
+	HRESULT Revert();
+	HRESULT LockRegion( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType );
+	HRESULT UnlockRegion( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType );
+	HRESULT Stat( STATSTG *pstatstg, DWORD grfStatFlag);
+	HRESULT Clone( IStream * ppstm );
+}
+alias IStream LPSTREAM;
+
+interface IEnumSTATSTG : IUnknown
+{
+	HRESULT Next( ULONG celt, STATSTG *rgelt, ULONG *pceltFetched );
+	HRESULT Skip( ULONG celt );
+	HRESULT Reset();
+	HRESULT Clone( IEnumSTATSTG * ppenum );
+}
+alias IEnumSTATSTG LPENUMSTATSTG;
+
+struct RemSNB
+{
+	ULONG ulCntStr;
+	ULONG ulCntChar;
+	OLECHAR rgString[];
+}
+alias RemSNB * wireSNB;
+alias OLECHAR ** SNB;
+
+interface IStorage : IUnknown
+{
+	HRESULT CreateStream( OLECHAR *pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStream * ppstm);
+   HRESULT OpenStream( OLECHAR *pwcsName, void *reserved1, DWORD grfMode, DWORD reserved2, IStream * ppstm);
+   HRESULT CreateStorage( OLECHAR *pwcsName, DWORD grfMode, DWORD reserved1, DWORD reserved2, IStorage * ppstg);
+   HRESULT OpenStorage( OLECHAR *pwcsName, IStorage pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage * ppstg );
+   HRESULT CopyTo( DWORD ciidExclude, IID *rgiidExclude, SNB snbExclude, IStorage pstgDest );
+	HRESULT MoveElementTo( OLECHAR * pwcsName, IStorage pstgDest, OLECHAR *pwcsNewName, DWORD grfFlags );
+	HRESULT Commit( DWORD grfCommitFlags );
+	HRESULT Revert();
+	HRESULT EnumElements( DWORD reserved1, void *reserved2, DWORD reserved3, IEnumSTATSTG * ppenum);
+	HRESULT DestroyElement( OLECHAR * pwcsName );
+	HRESULT RenameElement( OLECHAR *pwcsOldName, OLECHAR *pwcsNewName );
+	HRESULT SetElementTimes( OLECHAR * pwcsName, FILETIME * pctime, FILETIME *patime, FILETIME *pmtime );
+	HRESULT SetClass( REFCLSID clsid );
+	HRESULT SetStateBits( DWORD grfStateBits, DWORD grfMask );
+	HRESULT Stat( STATSTG *pstatstg, DWORD grfStatFlag );
+}
+alias IStorage LPSTORAGE;
+
+interface IPersistFile : IPersist
+{
+	HRESULT IsDirty();
+	HRESULT Load(LPCOLESTR pszFileName,DWORD dwMode);
+	HRESULT Save(LPCOLESTR pszFileName,BOOL fRemember);
+	HRESULT SaveCompleted(LPCOLESTR pszFileName);
+	HRESULT GetCurFile(LPOLESTR *ppszFileName );
+}
+alias IPersistFile LPPERSISTFILE;
+
+interface IPersistStorage : IPersist
+{
+	HRESULT IsDirty();
+	HRESULT InitNew(IStorage pStg);
+	HRESULT Load(IStorage pStg);
+	HRESULT Save(IStorage pStgSave,BOOL fSameAsLoad);
+	HRESULT SaveCompleted(IStorage pStgNew);
+	HRESULT HandsOffStorage();
+}
+alias IPersistStorage LPPERSISTSTORAGE;
+
+interface ILockBytes : IUnknown
+{
+    HRESULT ReadAt(
+ULARGE_INTEGER ulOffset,
+void *pv,
+ULONG cb,
+ULONG *pcbRead);
+
+    HRESULT WriteAt(
+ULARGE_INTEGER ulOffset,
+void  *pv,
+ULONG cb,
+ULONG *pcbWritten);
+
+HRESULT Flush();
+
+HRESULT SetSize(
+ULARGE_INTEGER cb);
+
+    HRESULT LockRegion(
+ULARGE_INTEGER libOffset,
+ULARGE_INTEGER cb,
+DWORD dwLockType);
+
+    HRESULT UnlockRegion(
+ULARGE_INTEGER libOffset,
+ULARGE_INTEGER cb,
+DWORD dwLockType);
+
+    HRESULT Stat(
+STATSTG *pstatstg,
+DWORD grfStatFlag);
+}
+alias ILockBytes LPLOCKBYTES;
+
+struct DVTARGETDEVICE {
+        DWORD tdSize;
+        WORD tdDriverNameOffset;
+        WORD tdDeviceNameOffset;
+        WORD tdPortNameOffset;
+        WORD tdExtDevmodeOffset;
+BYTE[1] tdData;
+}
+
+typedef CLIPFORMAT LPCLIPFORMAT;
+
+struct FORMATETC {
+        CLIPFORMAT cfFormat;
+DVTARGETDEVICE * ptd;
+        DWORD dwAspect;
+        LONG lindex;
+        DWORD tymed;
+}
+alias FORMATETC *LPFORMATETC;
+
+interface IEnumFORMATETC : IUnknown
+{
+    HRESULT Next(
+ULONG celt,
+        FORMATETC *rgelt,
+ULONG *pceltFetched);
+
+    HRESULT Skip(
+ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+IEnumFORMATETC * ppenum);
+}
+alias IEnumFORMATETC LPENUMFORMATETC;
+
+    //Advise Flags
+enum ADVF
+{
+        ADVF_NODATA = 1,
+        ADVF_PRIMEFIRST = 2,
+        ADVF_ONLYONCE = 4,
+        ADVF_DATAONSTOP = 64,
+        ADVFCACHE_NOHANDLER = 8,
+        ADVFCACHE_FORCEBUILTIN = 16,
+        ADVFCACHE_ONSAVE = 32
+}
+
+    // Stats for data; used by several enumerations and by at least one
+    // implementation of IDataAdviseHolder; if a field is not used, it
+    // will be NULL.
+
+struct STATDATA
+{                              // field used by:
+	FORMATETC formatetc;       // EnumAdvise, EnumData (cache), EnumFormats
+	DWORD advf;                // EnumAdvise, EnumData (cache)
+	IAdviseSink pAdvSink; // EnumAdvise
+	DWORD dwConnection;        // EnumAdvise
+}
+alias STATDATA * LPSTATDATA;
+
+interface IEnumSTATDATA : IUnknown
+{
+    HRESULT Next(
+ULONG celt,
+        STATDATA *rgelt,
+ULONG *pceltFetched);
+
+
+    HRESULT Skip(
+ULONG celt);
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+IEnumSTATDATA * ppenum);
+}
+alias IEnumSTATDATA LPENUMSTATDATA;
+
+interface IRootStorage : IUnknown
+{
+    HRESULT SwitchToFile( LPOLESTR pszFile    );
+}
+alias IRootStorage LPROOTSTORAGE;
+
+
+/****************************************************************************
+ *  Notification Interfaces
+ ****************************************************************************/
+
+enum TYMED {
+        TYMED_HGLOBAL = 1,
+        TYMED_FILE = 2,
+        TYMED_ISTREAM = 4,
+        TYMED_ISTORAGE = 8,
+        TYMED_GDI = 16,
+        TYMED_MFPICT = 32,
+        TYMED_ENHMF = 64,
+        TYMED_NULL = 0
+}
+
+struct RemSTGMEDIUM {
+        DWORD tymed;
+        DWORD dwHandleType;
+        ULONG pData;
+        ULONG pUnkForRelease;
+        ULONG cbData;
+        byte[1] data;
+}
+
+union UNION_u {
+	HBITMAP hBitmap;
+	HMETAFILEPICT hMetaFilePict;
+	HENHMETAFILE hEnhMetaFile;
+	HGLOBAL hGlobal;
+	LPOLESTR lpszFileName;
+	IStream pstm;
+	IStorage pstg;
+}
+/*
+struct uSTGMEDIUM {
+	DWORD tymed;
+	UNION_u u;
+	IUnknown pUnkForRelease;
+}
+*/
+// <Shawn Liu> modified
+struct uSTGMEDIUM {
+	DWORD tymed;
+	void* unionField;
+	IUnknown pUnkForRelease;
+}
+
+
+enum {
+	OBJ_PEN             =1,
+	OBJ_BRUSH           =2,
+	OBJ_DC              =3,
+	OBJ_METADC          =4,
+	OBJ_PAL             =5,
+	OBJ_FONT            =6,
+	OBJ_BITMAP          =7,
+	OBJ_REGION          =8,
+	OBJ_METAFILE        =9,
+	OBJ_MEMDC           =10,
+	OBJ_EXTPEN          =11,
+	OBJ_ENHMETADC       =12,
+	OBJ_ENHMETAFILE     =13
+}
+union __MIDL_IAdviseSink_0002
+{
+		wireHBITMAP hBitmap;
+		wireHPALETTE hPalette;
+		wireHGLOBAL hGeneric;
+}
+
+struct GDI_OBJECT
+{
+	DWORD ObjectType;
+   __MIDL_IAdviseSink_0002 u;
+}
+
+union __MIDL_IAdviseSink_0003
+{
+			wireHMETAFILEPICT hMetaFilePict;
+			wireHENHMETAFILE hHEnhMetaFile;
+			GDI_OBJECT  *hGdiHandle;
+			wireHGLOBAL hGlobal;
+			LPOLESTR lpszFileName;
+			BYTE_BLOB  *pstm;
+			BYTE_BLOB  *pstg;
+}
+
+struct  userSTGMEDIUM
+{
+   DWORD tymed;
+   __MIDL_IAdviseSink_0003 u;
+	IUnknown pUnkForRelease;
+}
+
+alias userSTGMEDIUM *wireSTGMEDIUM;
+alias uSTGMEDIUM STGMEDIUM;
+alias userSTGMEDIUM *wireASYNC_STGMEDIUM;
+alias STGMEDIUM ASYNC_STGMEDIUM;
+alias STGMEDIUM *LPSTGMEDIUM;
+
+struct  userFLAG_STGMEDIUM
+{
+    LONG ContextFlags;
+    LONG fPassOwnership;
+	userSTGMEDIUM Stgmed;
+}
+
+alias userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
+
+struct  FLAG_STGMEDIUM
+{
+	LONG ContextFlags;
+	LONG fPassOwnership;
+	STGMEDIUM Stgmed;
+}
+
+
+interface IAdviseSink : IUnknown
+{
+    void OnDataChange(FORMATETC *pFormatetc,STGMEDIUM *pStgmed);
+    void OnViewChange(DWORD dwAspect,LONG lindex);
+    void OnRename(IMoniker pmk);
+    void OnSave();
+    void OnClose();
+}
+alias IAdviseSink LPADVISESINK;
+
+interface IAdviseSink2 : IAdviseSink
+{
+    void OnLinkSrcChange( IMoniker pmk );
+}
+alias IAdviseSink2 LPADVISESINK2;
+
+
+enum DATADIR
+{
+	DATADIR_GET = 1,
+	DATADIR_SET = 2
+}
+
+interface IDataObject : IUnknown
+{
+
+    HRESULT GetData( FORMATETC *pformatetcIn, STGMEDIUM *pmedium);
+
+    HRESULT GetDataHere( FORMATETC *pformatetc, STGMEDIUM *pmedium);
+
+    HRESULT QueryGetData(	FORMATETC *pformatetc);
+
+    HRESULT GetCanonicalFormatEtc(
+			FORMATETC *pformatectIn,
+			FORMATETC *pformatetcOut);
+
+    HRESULT SetData(
+		FORMATETC *pformatetc,
+		STGMEDIUM *pmedium,
+			BOOL fRelease);
+
+    HRESULT EnumFormatEtc(
+			DWORD dwDirection,
+			IEnumFORMATETC * ppenumFormatEtc);
+
+    HRESULT DAdvise(
+		FORMATETC *pformatetc,
+		DWORD advf,
+		IAdviseSink pAdvSink,
+		DWORD *pdwConnection);
+
+    HRESULT DUnadvise(DWORD dwConnection);
+
+    HRESULT EnumDAdvise(IEnumSTATDATA * ppenumAdvise);
+
+}
+alias IDataObject LPDATAOBJECT;
+
+interface IDataAdviseHolder : IUnknown
+{
+    HRESULT Advise
+    (
+	IDataObject pDataObject,
+	FORMATETC *pFetc,
+	DWORD advf,
+	IAdviseSink pAdvise,
+	DWORD *pdwConnection
+    );
+
+    HRESULT Unadvise
+    (
+	DWORD dwConnection
+    );
+
+    HRESULT EnumAdvise
+    (
+IEnumSTATDATA * ppenumAdvise
+    );
+
+    HRESULT SendOnDataChange
+    (
+		IDataObject pDataObject,
+		DWORD dwReserved,
+		DWORD advf
+    );
+
+}
+alias IDataAdviseHolder LPDATAADVISEHOLDER;
+
+
+// call type used by IMessageFilter::HandleIncomingMessage
+enum CALLTYPE
+{
+    CALLTYPE_TOPLEVEL = 1,      // toplevel call - no outgoing call
+    CALLTYPE_NESTED   = 2,      // callback on behalf of previous outgoing call - should always handle
+    CALLTYPE_ASYNC    = 3,      // aysnchronous call - can NOT be rejected
+    CALLTYPE_TOPLEVEL_CALLPENDING = 4,  // new toplevel call with new LID
+    CALLTYPE_ASYNC_CALLPENDING    = 5   // async call - can NOT be rejected
+}
+
+// status of server call - returned by IMessageFilter::HandleIncomingCall
+// and passed to  IMessageFilter::RetryRejectedCall
+enum SERVERCALL
+{
+    SERVERCALL_ISHANDLED    = 0,
+    SERVERCALL_REJECTED     = 1,
+    SERVERCALL_RETRYLATER   = 2
+}
+
+// Pending type indicates the level of nesting
+enum PENDINGTYPE
+{
+    PENDINGTYPE_TOPLEVEL = 1, // toplevel call
+    PENDINGTYPE_NESTED   = 2  // nested call
+}
+
+// return values of MessagePending
+enum PENDINGMSG
+{
+    PENDINGMSG_CANCELCALL  = 0, // cancel the outgoing call
+    PENDINGMSG_WAITNOPROCESS  = 1, // wait for the return and don't dispatch the message
+    PENDINGMSG_WAITDEFPROCESS = 2  // wait and dispatch the message
+
+}
+
+// additional interface information about the incoming call
+struct INTERFACEINFO
+{
+    IUnknown    pUnk;      // the pointer to the object
+    IID         iid;        // interface id
+    WORD        wMethod;    // interface method
+}
+alias INTERFACEINFO *LPINTERFACEINFO;
+
+
+interface IMessageFilter : IUnknown
+{
+
+    DWORD HandleInComingCall
+    (
+DWORD dwCallType,
+HTASK htaskCaller,
+DWORD dwTickCount,
+LPINTERFACEINFO lpInterfaceInfo
+    );
+
+    DWORD RetryRejectedCall
+    (
+HTASK htaskCallee,
+DWORD dwTickCount,
+DWORD dwRejectType
+    );
+
+    DWORD MessagePending
+    (
+HTASK htaskCallee,
+DWORD dwTickCount,
+DWORD dwPendingType
+    );
+}
+alias IMessageFilter LPMESSAGEFILTER;
+
+
+
+/****************************************************************************
+ *  Object Remoting Interfaces
+ ****************************************************************************/
+/*
+interface IRpcChannelBuffer : IUnknown
+{
+
+    typedef unsigned long RPCOLEDATAREP;
+
+    typedef struct tagRPCOLEMESSAGE
+    {
+        void             *reserved1;
+        RPCOLEDATAREP     dataRepresentation;
+        void             *Buffer;
+        ULONG             cbBuffer;
+        ULONG             iMethod;
+        void             *reserved2[5];
+        ULONG             rpcFlags;
+    } RPCOLEMESSAGE;
+
+    typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
+
+    HRESULT GetBuffer
+    (
+        [in] RPCOLEMESSAGE *pMessage,
+        [in] REFIID riid
+    );
+
+    HRESULT SendReceive
+    (
+        [in,out] RPCOLEMESSAGE *pMessage,
+        [out] ULONG *pStatus
+    );
+
+    HRESULT FreeBuffer
+    (
+        [in] RPCOLEMESSAGE *pMessage
+    );
+
+    HRESULT GetDestCtx
+    (
+        [out] DWORD *pdwDestContext,
+        [out] void **ppvDestContext
+    );
+
+    HRESULT IsConnected
+    (
+        void
+    );
+
+}
+
+[
+    local,
+    object,
+    uuid(594f31d0-7f19-11d0-b194-00a0c90dc8bf)
+]
+interface IRpcChannelBuffer2 : IRpcChannelBuffer
+{
+
+    HRESULT GetProtocolVersion
+    (
+        [in,out] DWORD *pdwVersion
+    );
+}
+
+[
+    local,
+    object,
+    uuid(25B15600-0115-11d0-BF0D-00AA00B8DFD2)
+]
+interface IRpcChannelBuffer3 : IRpcChannelBuffer2
+{
+
+    HRESULT Send
+    (
+        [in,out] RPCOLEMESSAGE *pMsg,
+        [out]    ULONG *pulStatus
+    );
+
+    HRESULT Receive
+    (
+        [in,out] RPCOLEMESSAGE *pMsg,
+        [in]     ULONG ulSize,
+        [out]    ULONG *pulStatus
+    );
+
+    HRESULT Cancel
+    (
+        [in] RPCOLEMESSAGE *pMsg
+    );
+
+    HRESULT GetCallContext
+    (
+        [in]  RPCOLEMESSAGE *pMsg,
+        [in]  REFIID riid,
+        [out] void **pInterface
+    );
+
+    HRESULT GetDestCtxEx
+    (
+        [in] RPCOLEMESSAGE *pMsg,
+        [out] DWORD *pdwDestContext,
+        [out] void **ppvDestContext
+    );
+
+    HRESULT GetState
+    (
+        [in]  RPCOLEMESSAGE   *pMsg,
+        [out] DWORD           *pState
+    );
+
+    HRESULT RegisterAsync
+    (
+        [in] RPCOLEMESSAGE *pMsg,
+        [in] IAsyncManager *pAsyncMgr
+    );
+
+}
+
+
+[
+    local,
+    object,
+    uuid(D5F56A34-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcProxyBuffer : IUnknown
+{
+
+    HRESULT Connect
+    (
+        [in, unique] IRpcChannelBuffer *pRpcChannelBuffer
+    );
+
+    void Disconnect
+    (
+        void
+    );
+
+}
+
+[
+    local,
+    object,
+    uuid(D5F56AFC-593B-101A-B569-08002B2DBF7A)
+]
+interface IRpcStubBuffer : IUnknown
+{
+
+    HRESULT Connect
+    (
+        [in] IUnknown *pUnkServer
+    );
+
+    void Disconnect();
+
+    HRESULT Invoke
+    (
+        [in] RPCOLEMESSAGE *_prpcmsg,
+        [in] IRpcChannelBuffer *_pRpcChannelBuffer
+    );
+
+    IRpcStubBuffer *IsIIDSupported
+    (
+        [in] REFIID riid
+    );
+
+    ULONG CountRefs
+    (
+        void
+    );
+
+    HRESULT DebugServerQueryInterface
+    (
+        void **ppv
+    );
+
+    void DebugServerRelease
+    (
+        void *pv
+    );
+
+}
+
+
+
+[
+    local,
+    object,
+    uuid(D5F569D0-593B-101A-B569-08002B2DBF7A)
+]
+interface IPSFactoryBuffer : IUnknown
+{
+
+    HRESULT CreateProxy
+    (
+        [in] IUnknown *pUnkOuter,
+        [in] REFIID riid,
+        [out] IRpcProxyBuffer **ppProxy,
+        [out] void **ppv
+    );
+
+    HRESULT CreateStub
+    (
+        [in] REFIID riid,
+        [in, unique] IUnknown *pUnkServer,
+        [out] IRpcStubBuffer **ppStub
+    );
+}
+
+cpp_quote( "#if  (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
+cpp_quote( "// This interface is only valid on Windows NT 4.0" )
+
+// This structure contains additional data for hooks.  As a backward
+// compatability hack, the entire structure is passed in place of the
+// RIID parameter on all hook methods.  Thus the IID must be the first
+// parameter.  As a forward compatability hack the second field is the
+// current size of the structure.
+typedef struct SChannelHookCallInfo
+{
+    IID               iid;
+    DWORD             cbSize;
+    GUID              uCausality;
+    DWORD             dwServerPid;
+    DWORD             iMethod;
+    void             *pObject;
+} SChannelHookCallInfo;
+
+[
+    local,
+    object,
+    uuid(1008c4a0-7613-11cf-9af1-0020af6e72f4)
+]
+interface IChannelHook : IUnknown
+{
+    void ClientGetSize(
+        [in]  REFGUID uExtent,
+        [in]  REFIID  riid,
+        [out] ULONG  *pDataSize );
+
+    void ClientFillBuffer(
+        [in]      REFGUID uExtent,
+        [in]      REFIID  riid,
+        [in, out] ULONG  *pDataSize,
+        [in]      void   *pDataBuffer );
+
+    void ClientNotify(
+        [in] REFGUID uExtent,
+        [in] REFIID  riid,
+        [in] ULONG   cbDataSize,
+        [in] void   *pDataBuffer,
+        [in] DWORD   lDataRep,
+        [in] HRESULT hrFault );
+
+    void ServerNotify(
+        [in] REFGUID uExtent,
+        [in] REFIID  riid,
+        [in] ULONG   cbDataSize,
+        [in] void   *pDataBuffer,
+        [in] DWORD   lDataRep );
+
+    void ServerGetSize(
+        [in]  REFGUID uExtent,
+        [in]  REFIID  riid,
+        [in]  HRESULT hrFault,
+        [out] ULONG  *pDataSize );
+
+    void ServerFillBuffer(
+        [in]      REFGUID uExtent,
+        [in]      REFIID  riid,
+        [in, out] ULONG  *pDataSize,
+        [in]      void   *pDataBuffer,
+        [in]      HRESULT hrFault );
+};
+
+cpp_quote( "#endif //DCOM" )
+*/
+
+/****************************************************************************
+ *  Property Storage Interfaces
+ ****************************************************************************/
+
+ /*
+interface IPropertyStorage;
+interface IEnumSTATPROPSTG;
+interface IEnumSTATPROPSETSTG;
+
+[
+    object,
+    uuid(00000138-0000-0000-C000-000000000046),
+    pointer_default(unique)
+]
+
+interface IPropertyStorage : IUnknown
+{
+
+    cpp_quote("")
+    cpp_quote("// Well-known Property Set Format IDs")
+    extern const FMTID FMTID_SummaryInformation;
+    extern const FMTID FMTID_DocSummaryInformation;
+    extern const FMTID FMTID_UserDefinedProperties;
+
+    cpp_quote("")
+    cpp_quote("// Flags for IPropertySetStorage::Create")
+    const DWORD PROPSETFLAG_DEFAULT = 0;
+    const DWORD PROPSETFLAG_NONSIMPLE = 1;
+    const DWORD PROPSETFLAG_ANSI = 2;
+    cpp_quote("// This flag is only supported on StgCreatePropStg & StgOpenPropStg")
+    const DWORD PROPSETFLAG_UNBUFFERED = 4;
+
+    typedef [unique] IPropertyStorage * LPPROPERTYSTORAGE;
+
+    typedef struct tagPROPVARIANT PROPVARIANT;
+
+    #define TYPEDEF_CA(type, name) \
+        typedef struct tag##name\
+        {\
+            ULONG   cElems;\
+            [size_is( cElems )]\
+            type *  pElems;\
+        } name
+
+    TYPEDEF_CA(unsigned char,       CAUB);
+    TYPEDEF_CA(short,               CAI);
+    TYPEDEF_CA(USHORT,              CAUI);
+    TYPEDEF_CA(long,                CAL);
+    TYPEDEF_CA(ULONG,               CAUL);
+    TYPEDEF_CA(float,               CAFLT);
+    TYPEDEF_CA(double,              CADBL);
+    TYPEDEF_CA(CY,                  CACY);
+    TYPEDEF_CA(DATE,                CADATE);
+    TYPEDEF_CA(BSTR,                CABSTR);
+    TYPEDEF_CA(BSTRBLOB,            CABSTRBLOB);
+    TYPEDEF_CA(VARIANT_BOOL,        CABOOL);
+    TYPEDEF_CA(SCODE,               CASCODE);
+    TYPEDEF_CA(PROPVARIANT,         CAPROPVARIANT);
+    TYPEDEF_CA(LARGE_INTEGER,       CAH);
+    TYPEDEF_CA(ULARGE_INTEGER,      CAUH);
+    TYPEDEF_CA(LPSTR,               CALPSTR);
+    TYPEDEF_CA(LPWSTR,              CALPWSTR);
+    TYPEDEF_CA(FILETIME,            CAFILETIME);
+    TYPEDEF_CA(CLIPDATA,            CACLIPDATA);
+    TYPEDEF_CA(CLSID,               CACLSID);
+
+cpp_quote("// Disable the warning about the obsolete member named 'bool'")
+cpp_quote("// 'bool', 'true', 'false', 'mutable', 'explicit', & 'typename'")
+cpp_quote("// are reserved keywords")
+cpp_quote("#pragma warning(disable:4237)")
+
+    struct tagPROPVARIANT
+    {
+        VARTYPE vt;
+        WORD    wReserved1;
+        WORD    wReserved2;
+        WORD    wReserved3;
+        [switch_is((unsigned short) (vt & 0x1fff))] union
+        {
+            [case(VT_EMPTY, VT_NULL)]
+                ;
+            [case(VT_UI1)]
+                UCHAR               bVal;
+            [case(VT_I2)]
+                short               iVal;
+            [case(VT_UI2)]
+                USHORT              uiVal;
+            [case(VT_BOOL)]
+                VARIANT_BOOL        boolVal;
+            [case(VT_ILLEGAL)]  // obsolete field name; use boolVal
+                _VARIANT_BOOL        bool;
+            [case(VT_I4)]
+                long                lVal;
+            [case(VT_UI4)]
+                ULONG               ulVal;
+            [case(VT_R4)]
+                float               fltVal;
+            [case(VT_ERROR)]
+                SCODE               scode;
+            [case(VT_I8)]
+                LARGE_INTEGER       hVal;
+            [case(VT_UI8)]
+                ULARGE_INTEGER      uhVal;
+            [case(VT_R8)]
+                double              dblVal;
+            [case(VT_CY)]
+                CY                  cyVal;
+            [case(VT_DATE)]
+                DATE                date;
+            [case(VT_FILETIME)]
+                FILETIME            filetime;
+            [case(VT_CLSID)]
+                CLSID *             puuid;
+            [case(VT_BLOB, VT_BLOB_OBJECT)]
+                BLOB                blob;
+            [case(VT_CF)]
+                CLIPDATA            *pclipdata;
+            [case(VT_STREAM, VT_STREAMED_OBJECT)]
+                IStream *           pStream;
+            [case(VT_STORAGE, VT_STORED_OBJECT)]
+                IStorage *          pStorage;
+            [case(VT_BSTR)]
+                BSTR                bstrVal;
+            [case(VT_BSTR_BLOB)]        // System use only
+                BSTRBLOB            bstrblobVal;
+            [case(VT_LPSTR)]
+                LPSTR               pszVal;
+            [case(VT_LPWSTR)]
+                LPWSTR              pwszVal;
+            [case(VT_UI1|VT_VECTOR)]
+                CAUB                caub;
+            [case(VT_I2|VT_VECTOR)]
+                CAI                 cai;
+            [case(VT_UI2|VT_VECTOR)]
+                CAUI                caui;
+            [case(VT_BOOL|VT_VECTOR)]
+                CABOOL              cabool;
+            [case(VT_I4|VT_VECTOR)]
+                CAL                 cal;
+            [case(VT_UI4|VT_VECTOR)]
+                CAUL                caul;
+            [case(VT_R4|VT_VECTOR)]
+                CAFLT               caflt;
+            [case(VT_ERROR|VT_VECTOR)]
+                CASCODE             cascode;
+            [case(VT_I8|VT_VECTOR)]
+                CAH                 cah;
+            [case(VT_UI8|VT_VECTOR)]
+                CAUH                cauh;
+            [case(VT_R8|VT_VECTOR)]
+                CADBL               cadbl;
+            [case(VT_CY|VT_VECTOR)]
+                CACY                cacy;
+            [case(VT_DATE|VT_VECTOR)]
+                CADATE              cadate;
+            [case(VT_FILETIME|VT_VECTOR)]
+                CAFILETIME          cafiletime;
+            [case(VT_CLSID|VT_VECTOR)]
+                CACLSID             cauuid;
+            [case(VT_CF|VT_VECTOR)]
+                CACLIPDATA          caclipdata;
+            [case(VT_BSTR|VT_VECTOR)]
+                CABSTR              cabstr;
+            [case(VT_BSTR_BLOB|VT_VECTOR)]  // System use only
+                CABSTRBLOB          cabstrblob;
+            [case(VT_LPSTR|VT_VECTOR)]
+                CALPSTR             calpstr;
+            [case(VT_LPWSTR|VT_VECTOR)]
+                CALPWSTR            calpwstr;
+            [case(VT_VARIANT|VT_VECTOR)]
+                CAPROPVARIANT       capropvar;
+        };
+    };
+
+    typedef struct tagPROPVARIANT * LPPROPVARIANT;
+
+    cpp_quote("// Reserved global Property IDs")
+    const PROPID PID_DICTIONARY         = 0x00000000;
+    const PROPID PID_CODEPAGE           = 0x00000001;
+    const PROPID PID_FIRST_USABLE       = 0x00000002;
+    const PROPID PID_FIRST_NAME_DEFAULT = 0x00000fff;
+    const PROPID PID_LOCALE             = 0x80000000;
+    const PROPID PID_MODIFY_TIME        = 0x80000001;
+    const PROPID PID_SECURITY           = 0x80000002;
+    const PROPID PID_ILLEGAL            = 0xffffffff;
+
+
+    cpp_quote("// Property IDs for the SummaryInformation Property Set")
+    cpp_quote("")
+    cpp_quote("#define PIDSI_TITLE               0x00000002L  // VT_LPSTR")
+    cpp_quote("#define PIDSI_SUBJECT             0x00000003L  // VT_LPSTR")
+    cpp_quote("#define PIDSI_AUTHOR              0x00000004L  // VT_LPSTR")
+    cpp_quote("#define PIDSI_KEYWORDS            0x00000005L  // VT_LPSTR")
+    cpp_quote("#define PIDSI_COMMENTS            0x00000006L  // VT_LPSTR")
+    cpp_quote("#define PIDSI_TEMPLATE            0x00000007L  // VT_LPSTR")
+    cpp_quote("#define PIDSI_LASTAUTHOR          0x00000008L  // VT_LPSTR")
+    cpp_quote("#define PIDSI_REVNUMBER           0x00000009L  // VT_LPSTR")
+    cpp_quote("#define PIDSI_EDITTIME            0x0000000aL  // VT_FILETIME (UTC)")
+    cpp_quote("#define PIDSI_LASTPRINTED         0x0000000bL  // VT_FILETIME (UTC)")
+    cpp_quote("#define PIDSI_CREATE_DTM          0x0000000cL  // VT_FILETIME (UTC)")
+    cpp_quote("#define PIDSI_LASTSAVE_DTM        0x0000000dL  // VT_FILETIME (UTC)")
+    cpp_quote("#define PIDSI_PAGECOUNT           0x0000000eL  // VT_I4")
+    cpp_quote("#define PIDSI_WORDCOUNT           0x0000000fL  // VT_I4")
+    cpp_quote("#define PIDSI_CHARCOUNT           0x00000010L  // VT_I4")
+    cpp_quote("#define PIDSI_THUMBNAIL           0x00000011L  // VT_CF")
+    cpp_quote("#define PIDSI_APPNAME             0x00000012L  // VT_LPSTR")
+    cpp_quote("#define PIDSI_DOC_SECURITY        0x00000013L  // VT_I4")
+
+    const ULONG PRSPEC_INVALID = 0xffffffff;
+    const ULONG PRSPEC_LPWSTR = 0;
+    const ULONG PRSPEC_PROPID = 1;
+
+    typedef struct tagPROPSPEC
+    {
+
+        ULONG   ulKind;
+        [switch_is(ulKind)] union
+        {
+            [case(PRSPEC_PROPID)]
+                PROPID      propid;
+            [case(PRSPEC_LPWSTR)]
+                LPOLESTR    lpwstr;
+            [default] ;
+        } ;
+
+    } PROPSPEC;
+
+    typedef struct tagSTATPROPSTG
+    {
+
+        LPOLESTR    lpwstrName;
+        PROPID      propid;
+        VARTYPE     vt;
+
+    } STATPROPSTG;
+
+    cpp_quote("// Macros for parsing the OS Version of the Property Set Header")
+    cpp_quote("#define PROPSETHDR_OSVER_KIND(dwOSVer)      HIWORD( (dwOSVer) )")
+    cpp_quote("#define PROPSETHDR_OSVER_MAJOR(dwOSVer)     LOBYTE(LOWORD( (dwOSVer) ))")
+    cpp_quote("#define PROPSETHDR_OSVER_MINOR(dwOSVer)     HIBYTE(LOWORD( (dwOSVer) ))")
+    cpp_quote("#define PROPSETHDR_OSVERSION_UNKNOWN        0xFFFFFFFF")
+
+
+    typedef struct tagSTATPROPSETSTG
+    {
+
+        FMTID       fmtid;
+        CLSID       clsid;
+        DWORD       grfFlags;
+        FILETIME    mtime;
+        FILETIME    ctime;
+        FILETIME    atime;
+        DWORD       dwOSVersion;
+
+    } STATPROPSETSTG;
+
+
+    // When this IDL file is used for "IProp.dll" (the
+    // standalone property set DLL), we must have local
+    // and remotable routines (call_as routines are used
+    // to remove BSTRs, which are not remotable with some
+    // RPC run-times).
+    //
+    // For the remotable routines, we must use pointer
+    // parameters (e.g. "*rgspec" rather than "rgspec[]")
+    // so that the MIDL 2.0 compiler will generate an
+    // interpereted proxy/stub, rather than inline.
+
+#ifdef IPROPERTY_DLL
+    [local]
+#endif
+    HRESULT ReadMultiple(
+        [in]    ULONG                   cpspec,
+        [in, size_is(cpspec)]
+                const PROPSPEC          rgpspec[],
+        [out, size_is(cpspec)]
+                PROPVARIANT             rgpropvar[]
+        );
+
+#ifdef IPROPERTY_DLL
+    [call_as(ReadMultiple)]
+    HRESULT RemoteReadMultiple(
+        [out]   BOOL                    *pfBstrPresent,
+        [in]    ULONG                   cpspec,
+        [in, size_is(cpspec)]
+                const PROPSPEC          *rgpspec,
+        [out, size_is(cpspec)]
+                PROPVARIANT             *rgpropvar
+        );
+#endif
+
+#ifdef IPROPERTY_DLL
+    [local]
+#endif
+    HRESULT WriteMultiple(
+        [in]    ULONG                   cpspec,
+        [in, size_is(cpspec)]
+                const PROPSPEC          rgpspec[],
+        [in, size_is(cpspec)]
+                const PROPVARIANT       rgpropvar[],
+        [in]    PROPID                  propidNameFirst
+        );
+
+#ifdef IPROPERTY_DLL
+    [call_as(WriteMultiple)]
+    HRESULT RemoteWriteMultiple(
+        [in]    BOOL                    fBstrPresent,
+        [in]    ULONG                   cpspec,
+        [in, size_is(cpspec)]
+                const PROPSPEC          *rgpspec,
+        [in, size_is(cpspec)]
+                const PROPVARIANT       *rgpropvar,
+        [in]    PROPID                  propidNameFirst
+        );
+#endif
+
+#ifdef IPROPERTY_DLL
+    [local]
+#endif
+    HRESULT DeleteMultiple(
+        [in]    ULONG                   cpspec,
+        [in, size_is(cpspec)]
+                const PROPSPEC          rgpspec[]
+        );
+
+#ifdef IPROPERTY_DLL
+    [call_as(DeleteMultiple)]
+    HRESULT RemoteDeleteMultiple(
+        [in]    ULONG                   cpspec,
+        [in, size_is(cpspec)]
+                const PROPSPEC          *rgpspec
+        );
+#endif
+
+    HRESULT ReadPropertyNames(
+        [in]    ULONG                   cpropid,
+        [in, size_is(cpropid)]
+                const PROPID            rgpropid[],
+        [out, size_is(cpropid)]
+                LPOLESTR                rglpwstrName[]
+        );
+
+    HRESULT WritePropertyNames(
+        [in]    ULONG                   cpropid,
+        [in, size_is(cpropid)]
+                const PROPID            rgpropid[],
+        [in, size_is(cpropid)]
+                const LPOLESTR          rglpwstrName[]
+        );
+
+    HRESULT DeletePropertyNames(
+        [in]    ULONG                   cpropid,
+        [in, size_is(cpropid)]
+                const PROPID            rgpropid[]
+        );
+
+    HRESULT Commit(
+        [in]    DWORD                   grfCommitFlags
+        );
+
+    HRESULT Revert();
+
+    HRESULT Enum(
+        [out]   IEnumSTATPROPSTG **     ppenum
+        );
+
+    HRESULT SetTimes(
+        [in]    FILETIME const *        pctime,
+        [in]    FILETIME const *        patime,
+        [in]    FILETIME const *        pmtime
+        );
+
+    HRESULT SetClass(
+        [in]    REFCLSID                clsid
+        );
+
+    HRESULT Stat(
+        [out]   STATPROPSETSTG *        pstatpsstg
+        );
+}
+
+[
+    object,
+    uuid(0000013A-0000-0000-C000-000000000046),
+    pointer_default(unique)
+]
+
+interface IPropertySetStorage : IUnknown
+{
+
+    typedef [unique] IPropertySetStorage * LPPROPERTYSETSTORAGE;
+
+    HRESULT Create(
+        [in]    REFFMTID                rfmtid,
+        [in, unique]
+                const CLSID *           pclsid,
+        [in]    DWORD                   grfFlags,
+        [in]    DWORD                   grfMode,
+        [out]   IPropertyStorage **     ppprstg
+        );
+
+    HRESULT Open(
+        [in]    REFFMTID                rfmtid,
+        [in]    DWORD                   grfMode,
+        [out]   IPropertyStorage **     ppprstg
+        );
+
+    HRESULT Delete(
+        [in]    REFFMTID                rfmtid
+        );
+
+    HRESULT Enum(
+        [out]   IEnumSTATPROPSETSTG **  ppenum
+        );
+
+}
+
+
+[
+    object,
+    uuid(00000139-0000-0000-C000-000000000046),
+    pointer_default(unique)
+]
+
+interface IEnumSTATPROPSTG : IUnknown
+{
+
+    typedef [unique] IEnumSTATPROPSTG * LPENUMSTATPROPSTG;
+
+    [local]
+    HRESULT Next(
+        [in]    ULONG                   celt,
+        [out, size_is(celt), length_is(*pceltFetched)]
+                STATPROPSTG *           rgelt,
+        [out]   ULONG *                 pceltFetched
+        );
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in]    ULONG                   celt,
+        [out, size_is(celt), length_is(*pceltFetched)]
+                STATPROPSTG *           rgelt,
+        [out]   ULONG *                 pceltFetched
+        );
+
+    HRESULT Skip(
+        [in]    ULONG                   celt
+        );
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+        [out]   IEnumSTATPROPSTG **     ppenum
+        );
+}
+
+
+[
+    object,
+    uuid(0000013B-0000-0000-C000-000000000046),
+    pointer_default(unique)
+]
+
+interface IEnumSTATPROPSETSTG : IUnknown
+{
+
+    typedef [unique] IEnumSTATPROPSETSTG * LPENUMSTATPROPSETSTG;
+
+    [local]
+    HRESULT Next(
+        [in]    ULONG                   celt,
+        [out, size_is(celt), length_is(*pceltFetched)]
+                STATPROPSETSTG *        rgelt,
+        [out]   ULONG *                 pceltFetched
+        );
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in]    ULONG                   celt,
+        [out, size_is(celt), length_is(*pceltFetched)]
+                STATPROPSETSTG *        rgelt,
+        [out]   ULONG *                 pceltFetched
+        );
+
+    HRESULT Skip(
+        [in]    ULONG                   celt
+        );
+
+    HRESULT Reset();
+
+    HRESULT Clone(
+        [out]   IEnumSTATPROPSETSTG **  ppenum
+        );
+}
+
+
+cpp_quote("WINOLEAPI PropVariantCopy ( PROPVARIANT * pvarDest, const PROPVARIANT * pvarSrc );")
+cpp_quote("WINOLEAPI PropVariantClear ( PROPVARIANT * pvar );")
+cpp_quote("WINOLEAPI FreePropVariantArray ( ULONG cVariants, PROPVARIANT * rgvars );")
+
+cpp_quote("")
+cpp_quote("#define _PROPVARIANTINIT_DEFINED_")
+cpp_quote("#   ifdef __cplusplus")
+cpp_quote("inline void PropVariantInit ( PROPVARIANT * pvar )")
+cpp_quote("{")
+cpp_quote("    memset ( pvar, 0, sizeof(PROPVARIANT) );")
+cpp_quote("}")
+cpp_quote("#   else")
+cpp_quote("#   define PropVariantInit(pvar) memset ( pvar, 0, sizeof(PROPVARIANT) )")
+cpp_quote("#   endif")
+cpp_quote("")
+
+cpp_quote("")
+cpp_quote("#ifndef _STGCREATEPROPSTG_DEFINED_")
+cpp_quote("WINOLEAPI StgCreatePropStg( IUnknown* pUnk, REFFMTID fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );")
+cpp_quote("WINOLEAPI StgOpenPropStg( IUnknown* pUnk, REFFMTID fmtid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg );")
+cpp_quote("WINOLEAPI StgCreatePropSetStg( IStorage *pStorage, DWORD dwReserved, IPropertySetStorage **ppPropSetStg);")
+
+cpp_quote("")
+cpp_quote("#define CCH_MAX_PROPSTG_NAME    31")
+cpp_quote("WINOLEAPI FmtIdToPropStgName( const FMTID *pfmtid, LPOLESTR oszName );" )
+cpp_quote("WINOLEAPI PropStgNameToFmtId( const LPOLESTR oszName, FMTID *pfmtid );" )
+cpp_quote("#endif")
+
+	*/
+
+/****************************************************************************
+ *  Connection Point Interfaces
+ ****************************************************************************/
+ /*
+#ifdef __INCLUDE_CPIFS
+interface IConnectionPointContainer;
+interface IConnectionPoint;
+interface IEnumConnections;
+interface IEnumConnectionPoints;
+
+[
+    object,
+    uuid(B196B286-BAB4-101A-B69C-00AA00341D07),
+    pointer_default(unique)
+]
+interface IConnectionPoint : IUnknown
+{
+    typedef IConnectionPoint * PCONNECTIONPOINT;
+    typedef IConnectionPoint * LPCONNECTIONPOINT;
+
+    HRESULT GetConnectionInterface
+    (
+        [out]           IID * piid
+    );
+
+    HRESULT GetConnectionPointContainer
+    (
+        [out]           IConnectionPointContainer ** ppCPC
+    );
+
+    HRESULT Advise
+    (
+        [in]    IUnknown * pUnkSink,
+        [out]   DWORD *    pdwCookie
+    );
+
+    HRESULT Unadvise
+    (
+        [in]    DWORD dwCookie
+    );
+
+    HRESULT EnumConnections
+    (
+        [out]   IEnumConnections ** ppEnum
+    );
+}
+
+[
+    object,
+    uuid(B196B284-BAB4-101A-B69C-00AA00341D07),
+    pointer_default(unique)
+]
+interface IConnectionPointContainer : IUnknown
+{
+    typedef IConnectionPointContainer * PCONNECTIONPOINTCONTAINER;
+    typedef IConnectionPointContainer * LPCONNECTIONPOINTCONTAINER;
+
+    HRESULT EnumConnectionPoints
+    (
+        [out]   IEnumConnectionPoints ** ppEnum
+    );
+
+    HRESULT FindConnectionPoint
+    (
+        [in]    REFIID riid,
+        [out]   IConnectionPoint ** ppCP
+    );
+}
+
+
+[
+    object,
+    uuid(B196B287-BAB4-101A-B69C-00AA00341D07),
+    pointer_default(unique)
+]
+interface IEnumConnections : IUnknown
+{
+    typedef IEnumConnections * PENUMCONNECTIONS;
+    typedef IEnumConnections * LPENUMCONNECTIONS;
+
+    typedef struct tagCONNECTDATA
+    {
+        IUnknown *  pUnk;
+        DWORD       dwCookie;
+    } CONNECTDATA;
+
+    typedef struct tagCONNECTDATA * PCONNECTDATA;
+    typedef struct tagCONNECTDATA * LPCONNECTDATA;
+
+    [local]
+    HRESULT Next(
+        [in]                        ULONG           cConnections,
+        [out,
+         size_is(cConnections),
+         length_is(*lpcFetched)]    CONNECTDATA *   rgcd,
+        [out]                       ULONG *         lpcFetched
+    );
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in]                            ULONG           cConnections,
+        [out,
+         size_is(cConnections),
+         length_is(*lpcFetched)]        CONNECTDATA *   rgcd,
+        [out]                           ULONG *         lpcFetched
+    );
+
+    HRESULT Skip
+    (
+        [in]    ULONG cConnections
+    );
+
+    HRESULT Reset
+    (
+        void
+    );
+
+    HRESULT Clone
+    (
+        [out]   IEnumConnections ** ppEnum
+    );
+}
+
+
+[
+    object,
+    uuid(B196B285-BAB4-101A-B69C-00AA00341D07),
+    pointer_default(unique)
+]
+interface IEnumConnectionPoints : IUnknown
+{
+    typedef IEnumConnectionPoints * PENUMCONNECTIONPOINTS;
+    typedef IEnumConnectionPoints * LPENUMCONNECTIONPOINTS;
+
+    [local]
+    HRESULT Next(
+        [in]                        ULONG               cConnections,
+        [out,
+         size_is(cConnections),
+         length_is(*lpcFetched)]    IConnectionPoint ** rgpcn,
+        [out]                       ULONG *             lpcFetched
+    );
+
+    [call_as(Next)]
+    HRESULT RemoteNext(
+        [in]                        ULONG               cConnections,
+        [out,
+         size_is(cConnections),
+         length_is(*lpcFetched)]    IConnectionPoint ** rgpcn,
+        [out]                       ULONG *             lpcFetched
+    );
+
+    HRESULT Skip
+    (
+        [in]    ULONG   cConnections
+    );
+
+    HRESULT Reset
+    (
+        void
+    );
+
+    HRESULT Clone
+    (
+        [out]   IEnumConnectionPoints **    ppEnum
+    );
+}
+#endif // __INCLUDE_CPIFS
+
+
+cpp_quote( "#if  (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM" )
+cpp_quote( "// This interface is only valid on Windows NT 4.0" )
+
+[
+    local,
+    object,
+    uuid(0000013D-0000-0000-C000-000000000046)
+]
+interface IClientSecurity : IUnknown
+{
+
+    typedef struct tagSOLE_AUTHENTICATION_SERVICE
+    {
+        DWORD    dwAuthnSvc;
+        DWORD    dwAuthzSvc;
+        OLECHAR *pPrincipalName;
+        HRESULT  hr;
+    } SOLE_AUTHENTICATION_SERVICE;
+
+    typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
+
+    typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES
+    {
+        EOAC_NONE           = 0x0,
+        EOAC_MUTUAL_AUTH    = 0x1,
+        EOAC_CLOAKING       = 0x10,
+
+        // These are only valid for CoInitializeSecurity
+        EOAC_SECURE_REFS    = 0x2,
+        EOAC_ACCESS_CONTROL = 0x4,
+        EOAC_APPID          = 0x8
+    } EOLE_AUTHENTICATION_CAPABILITIES;
+
+    HRESULT QueryBlanket
+    (
+        [in]  IUnknown                *pProxy,
+        [out] DWORD                   *pAuthnSvc,
+        [out] DWORD                   *pAuthzSvc,
+        [out] OLECHAR                **pServerPrincName,
+        [out] DWORD                   *pAuthnLevel,
+        [out] DWORD                   *pImpLevel,
+        [out] void                   **pAuthInfo,
+        [out] DWORD                   *pCapabilites
+    );
+
+    HRESULT SetBlanket
+    (
+        [in] IUnknown                 *pProxy,
+        [in] DWORD                     AuthnSvc,
+        [in] DWORD                     AuthzSvc,
+        [in] OLECHAR                  *pServerPrincName,
+        [in] DWORD                     AuthnLevel,
+        [in] DWORD                     ImpLevel,
+        [in] void                     *pAuthInfo,
+        [in] DWORD                     Capabilities
+    );
+
+    HRESULT CopyProxy
+    (
+        [in]  IUnknown  *pProxy,
+        [out] IUnknown **ppCopy
+    );
+}
+
+[
+    local,
+    object,
+    uuid(0000013E-0000-0000-C000-000000000046)
+]
+interface IServerSecurity : IUnknown
+{
+    HRESULT QueryBlanket
+    (
+        [out] DWORD    *pAuthnSvc,
+        [out] DWORD    *pAuthzSvc,
+        [out] OLECHAR **pServerPrincName,
+        [out] DWORD    *pAuthnLevel,
+        [out] DWORD    *pImpLevel,
+        [out] void    **pPrivs,
+        [out] DWORD    *pCapabilities
+    );
+
+    HRESULT ImpersonateClient();
+
+    HRESULT RevertToSelf();
+
+    BOOL IsImpersonating();
+}
+
+[
+    object,
+    uuid(00000140-0000-0000-C000-000000000046)
+]
+
+interface IClassActivator : IUnknown
+{
+    HRESULT GetClassObject(
+        [in] REFCLSID rclsid,
+        [in] DWORD dwClassContext,
+        [in] LCID locale,
+        [in] REFIID riid,
+        [out, iid_is(riid)] void **ppv);
+}
+
+
+[
+object,
+local,
+uuid(00000144-0000-0000-C000-000000000046),
+oleautomation
+]
+interface IRpcOptions : IUnknown
+{
+    HRESULT Set([in] IUnknown * pPrx,
+                [in] DWORD dwProperty,
+                [in] DWORD dwValue);
+
+    HRESULT Query([in] IUnknown * pPrx,
+                  [in] DWORD dwProperty,
+                  [out] DWORD * pdwValue);
+
+    HRESULT CopyProxy([in] IUnknown * punkProxy,
+                      [out] IUnknown ** ppunkCopy);
+}
+
+enum {COMBND_RPCSTRINGS = 0x01};  // flag indicating arBndInfo is the
+                                  // Rpc string bindings to be used.
+
+[
+object,
+local,
+uuid(00000148-0000-0000-C000-000000000046)
+]
+interface IComBinding : IUnknown
+{
+  HRESULT InitBinding([in]    DWORD    dwEndpointFlags,
+                      [in]    DWORD    dwNICFlags,
+                      [in]    DWORD    mbzReserved1,
+                      [in]    DWORD    mbzReserved2,
+                      [in]    LPOLESTR pszBinding
+	              );
+
+  HRESULT QueryBinding([out]    LPDWORD    pdwEndpointFlags,
+                       [out]    LPDWORD    pdwNICFlags,
+                       [out]    LPDWORD    mbzReserved1,
+                       [out]    LPDWORD    mbzReserved2,
+                       [out]    LPOLESTR  *ppszBinding
+	              );
+
+
+}
+
+
+
+
+cpp_quote( "#endif //DCOM" )
+
+
+[
+    object,
+    uuid(99caf010-415e-11cf-8814-00aa00b569f5),
+    pointer_default(unique)
+]
+
+interface IFillLockBytes: IUnknown
+{
+    [local]
+    HRESULT FillAppend
+    (
+        [in, size_is(cb)] void const *pv,
+        [in] ULONG cb,
+        [out] ULONG *pcbWritten
+    );
+
+    [call_as(FillAppend)]
+    HRESULT _stdcall RemoteFillAppend(
+        [in, size_is(cb)] byte const *pv,
+        [in] ULONG cb,
+        [out] ULONG *pcbWritten);
+
+    [local]
+    HRESULT FillAt
+    (
+        [in] ULARGE_INTEGER ulOffset,
+        [in, size_is(cb)] void const *pv,
+        [in] ULONG cb,
+        [out] ULONG *pcbWritten
+    );
+
+    [call_as(FillAt)]
+    HRESULT _stdcall RemoteFillAt(
+        [in] ULARGE_INTEGER ulOffset,
+        [in, size_is(cb)] byte const *pv,
+        [in] ULONG cb,
+        [out] ULONG *pcbWritten);
+
+    HRESULT SetFillSize
+    (
+        [in] ULARGE_INTEGER ulSize
+    );
+
+    HRESULT Terminate
+    (
+        [in] BOOL bCanceled
+    );
+}
+
+
+[
+    object,
+    uuid(a9d758a0-4617-11cf-95fc-00aa00680db4),
+    pointer_default(unique)
+]
+
+interface IProgressNotify: IUnknown
+{
+    HRESULT OnProgress
+    (
+        [in] DWORD dwProgressCurrent,
+        [in] DWORD dwProgressMaximum,
+        [in] BOOL  fAccurate,
+        [in] BOOL  fOwner
+    );
+}
+
+
+[
+    local,
+    object,
+    uuid(0e6d4d90-6738-11cf-9608-00aa00680db4),
+    pointer_default(unique)
+]
+
+interface ILayoutStorage: IUnknown
+{
+        typedef struct tagStorageLayout
+        {
+            DWORD LayoutType;
+            OLECHAR *pwcsElementName;
+            LARGE_INTEGER cOffset;
+            LARGE_INTEGER cBytes;
+        } StorageLayout;
+
+        HRESULT __stdcall LayoutScript
+        (
+            [in] StorageLayout *pStorageLayout,
+            [in] DWORD nEntries,
+            [in] DWORD glfInterleavedFlag
+        );
+        HRESULT __stdcall BeginMonitor(void);
+
+        HRESULT __stdcall EndMonitor(void);
+
+        HRESULT __stdcall ReLayoutDocfile
+        (
+            [in] OLECHAR *pwcsNewDfName
+        );
+
+        HRESULT __stdcall ReLayoutDocfileOnILockBytes
+        (
+            [in] ILockBytes *pILockBytes
+        );
+
+
+}
+
+[
+ uuid(00000022-0000-0000-C000-000000000046),
+ version(1.0),
+ pointer_default(unique)
+  , object
+]
+
+interface ISurrogate : IUnknown
+{
+    typedef [unique] ISurrogate* LPSURROGATE;
+
+        HRESULT LoadDllServer(
+                [in] REFCLSID           Clsid);
+        HRESULT FreeSurrogate();
+}
+
+
+[
+    local,
+    object,
+    uuid(00000146-0000-0000-C000-000000000046)
+]
+interface IGlobalInterfaceTable : IUnknown
+{
+    typedef [unique] IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
+
+    HRESULT RegisterInterfaceInGlobal
+    (
+        [in]  IUnknown *pUnk,
+        [in]  REFIID    riid,
+        [out] DWORD    *pdwCookie
+    );
+
+    HRESULT RevokeInterfaceFromGlobal
+    (
+        [in] DWORD      dwCookie
+    );
+
+    HRESULT GetInterfaceFromGlobal
+    (
+        [in]  DWORD          dwCookie,
+        [in]  REFIID         riid,
+        [out, iid_is(riid)] void **ppv
+    );
+};
+
+
+[
+    object,
+    uuid(0e6d4d92-6738-11cf-9608-00aa00680db4),
+    pointer_default(unique)
+]
+
+interface IDirectWriterLock : IUnknown
+{
+
+    HRESULT WaitForWriteAccess ([in] DWORD dwTimeout);
+
+    HRESULT ReleaseWriteAccess ();
+
+    HRESULT HaveWriteAccess ();
+
+}
+
+[
+    object,
+    uuid(00000023-0000-0000-C000-000000000046)
+]
+
+interface ISynchronize : IUnknown
+{
+    HRESULT Wait([in] DWORD dwMilliseconds);
+    HRESULT Signal();
+    HRESULT Reset();
+}
+
+[
+ local,
+ object,
+ uuid(00000025-0000-0000-C000-000000000046)
+]
+interface ISynchronizeMutex : ISynchronize
+{
+    HRESULT ReleaseMutex();
+}
+
+[
+ local,
+ object,
+ uuid(00000024-0000-0000-C000-000000000046)
+]
+interface IAsyncSetup : IUnknown
+{
+    HRESULT GetAsyncManager( [in]  REFIID           riid,
+                             [in]  IUnknown        *pOuter,
+                             [in]  DWORD            dwFlags,
+                             [out] IUnknown       **ppInner,
+                             [out] IAsyncManager  **ppAsyncMgr );
+}
+
+[
+ local,
+ object,
+ uuid(00000029-0000-0000-C000-000000000046)
+]
+
+interface ICancelMethodCalls : IUnknown
+{
+    typedef [unique] ICancelMethodCalls *LPCANCELMETHODCALLS;
+
+    HRESULT Cancel          (void);
+    HRESULT TestCancel      (void);
+    HRESULT SetCancelTimeout([in] ULONG ulSeconds);
+}
+
+[
+ local,
+ object,
+ uuid(0000002A-0000-0000-C000-000000000046)
+]
+interface IAsyncManager : IUnknown
+{
+    typedef enum tagDCOM_CALL_STATE
+    {
+        DCOM_NONE           = 0x0,
+        DCOM_CALL_COMPLETE  = 0x1,
+        DCOM_CALL_CANCELED  = 0x2,
+    } DCOM_CALL_STATE;
+
+    HRESULT CompleteCall  ( [in] HRESULT Result );
+    HRESULT GetCallContext( [in] REFIID riid, [out] void **pInterface );
+    HRESULT GetState      ( [out] ULONG *pulStateFlags);
+}
+
+[
+ local,
+ object,
+ uuid(0000002B-0000-0000-C000-000000000046)
+]
+interface IWaitMultiple : IUnknown
+{
+    HRESULT WaitMultiple  ( [in] DWORD timeout, [out] ISynchronize **pSync );
+    HRESULT AddSynchronize( [in] ISynchronize *pSync );
+}
+
+[
+ local,
+ object,
+ uuid(0000002C-0000-0000-C000-000000000046)
+]
+interface ISynchronizeEvent : IUnknown
+{
+    HRESULT GetEvent( [out] HANDLE *pEvent );
+}
+
+[
+ object,
+ uuid(00000026-0000-0000-C000-000000000046)
+]
+interface IUrlMon : IUnknown
+{
+    HRESULT AsyncGetClassBits(
+        [in]         REFCLSID   rclsid,
+        [in, unique] LPCWSTR    pszTYPE,
+        [in, unique] LPCWSTR    pszExt,
+        [in]         DWORD      dwFileVersionMS,
+        [in]         DWORD      dwFileVersionLS,
+        [in, unique] LPCWSTR    pszCodeBase,
+        [in]         IBindCtx * pbc,
+        [in]         DWORD      dwClassContext,
+        [in]         REFIID     riid,
+        [in]         DWORD      flags);
+}
+
+//----------------------------------------------------------------------------
+// The Class Store Access Interface.
+//----------------------------------------------------------------------------
+[
+  object,
+  uuid(00000190-0000-0000-C000-000000000046)
+]
+interface IClassAccess : IUnknown
+{
+
+// This is the most common method to access the Class Container.
+// It queries the Class Store for implementations for a specific
+// Class Id.
+// If a matching implementation is available for the object type,
+// client architecture, locale and class context a pointer to the
+// binary is returned along with other package info in the [out] parameter
+// pPackageInfo.
+//
+// If the binary needs to be downloaded to the local machine, it is
+// done as a part of this.
+//
+    HRESULT   GetClassInfo(
+          [in]    REFCLSID          clsid,             // Class ID
+          [in]    QUERYCONTEXT      QryContext,        // Query Attributes
+          [out]   PACKAGEINFO   *   pPackageInfo
+    );
+
+//
+// GetClassSpecInfo is same as GetClassInfo except for it takes in
+//  any Class Specifier , CLSID or File Ext, or ProgID or MIME type.
+//
+    HRESULT   GetClassSpecInfo(
+          [in]    uCLSSPEC      *   pClassSpec,        // Class Spec (CLSID/Ext/MIME)
+          [in]    QUERYCONTEXT      QryContext,        // Query Attributes
+          [out]   PACKAGEINFO   *   pPackageInfo
+    );
+
+
+//
+// GetInstallablePackages is used by CoGetPublishedAppInfo
+// to provide list of published apps from the class store that are
+// available for installation.
+//
+
+typedef struct tagPUBLISHEDINFOLIST {
+        DWORD            cPublApps;
+        [size_is(cPublApps), unique] PUBLISHEDAPPINFO    *pPublAppInfo;
+} PUBLISHEDINFOLIST;
+
+    HRESULT   GetInstallablePackages (
+          [in]    DWORD               Count,
+          [out]   PUBLISHEDINFOLIST   *pInfoList
+    );
+
+}
+
+[
+  object,
+  uuid(00000192-0000-0000-C000-000000000046)
+]
+interface IClassRefresh : IUnknown
+{
+//
+// GetUpgrades is called to check if the Class Store has
+// newer versions for any of a list of CLSIDs. The client calls this
+// with a list of CLSIDs that were installed from the Class Container.
+//
+
+typedef struct tagPACKAGEINFOLIST {
+        DWORD            cPackInfo;
+        [size_is(cPackInfo), unique] PACKAGEINFO    *pPackageInfo;
+} PACKAGEINFOLIST;
+
+    HRESULT   GetUpgrades (
+        [in]    ULONG                   cClasses,
+        [in, size_is(cClasses)] CLSID   *pClassList,     // CLSIDs Installed
+        [in]    CSPLATFORM              Platform,
+        [in]    LCID                    Locale,
+        [out]   PACKAGEINFOLIST         *pPackageInfoList);
+
+//
+// CommitUpgrades is called to notify the Class Store that
+// the newer versions were successfully installed and that the update sequence
+// can be moved forward.
+//
+
+    HRESULT   CommitUpgrades ();
+}
+
+
+//----------------------------------------------------------------------------
+// The Class Store Admin Interface.
+//----------------------------------------------------------------------------
+
+typedef struct tagCLASSDETAIL {
+               CLSID                Clsid;
+               LPOLESTR             pszDesc;
+               LPOLESTR             pszIconPath;
+               CLSID                TreatAsClsid;
+               CLSID                AutoConvertClsid;
+               DWORD                cFileExt;
+               [size_is(cFileExt)] LPOLESTR  *prgFileExt;
+               LPOLESTR             pMimeType;
+               LPOLESTR             pDefaultProgId;
+               DWORD                cOtherProgId;
+               [size_is(cOtherProgId)] LPOLESTR  *prgOtherProgId;
+} CLASSDETAIL;
+
+//+---------------------------------------------------------------------------
+//    Contents:        Enum Interfaces for Class Store
+//----------------------------------------------------------------------------
+cpp_quote("#ifndef _LPCSADMNENUM_DEFINED")
+cpp_quote("#define _LPCSADMNENUM_DEFINED")
+
+//
+//  IEnumPackage
+//  ============
+//
+
+[
+  object,
+  uuid(00000193-0000-0000-C000-000000000046)
+]
+interface IEnumPackage : IUnknown
+{
+
+//---- Next()
+
+    HRESULT Next(
+        [in]        ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] PACKAGEDETAIL *rgelt,
+        [out]       ULONG *pceltFetched);
+
+//
+//    celt             number of elements to be fetched.
+//    rgelt            array of PackageDetail structures.
+//    pceltFetched     elements actually fetched.
+//
+// Returns:
+//        S_OK
+//        S_FALSE            (Not enough elements to be fetched.)
+//        E_INVALIDARG
+//        E_FAIL
+//        CS_E_INVALID_VERSION (Class Container is corrupted
+//                              OR is of a version that is no more supported)
+//        E_OUTOFMEMORY
+//
+//    on errors
+//        *pceltFetched = 0
+//
+
+
+//---- Skip()
+
+    HRESULT Skip(
+        [in]        ULONG celt);
+
+//
+//    celt            number of elements to be skipped.
+//
+// Returns:
+//        S_OK
+//        S_FALSE            (Not enough elements to be skipped.)
+//        E_FAIL
+//        E_ACCESSDENIED
+//        E_OUTOFMEMORY
+
+
+//---- Reset()
+
+    HRESULT Reset();
+
+//
+// Returns:
+//        S_OK
+//
+
+
+//---- Clone()
+
+    HRESULT Clone(
+        [out]       IEnumPackage **ppenum);
+
+//
+// Returns:
+//        S_OK
+//        E_FAIL
+//        E_INVALIDARG
+//        E_ACCESSDENIED
+//        E_OUTOFMEMORY
+
+
+}
+
+
+//
+//  IEnumClass
+//  ==========
+//
+
+[
+  object,
+  uuid(00000194-0000-0000-C000-000000000046)
+]
+
+interface IEnumClass : IUnknown
+{
+//---- Next()
+
+    HRESULT Next(
+        [in]        ULONG celt,
+        [out, size_is(celt), length_is(*pceltFetched)] CLASSDETAIL *rgelt,
+        [out]       ULONG *pceltFetched);
+
+//
+//    celt             number of elements to be fetched.
+//    rgelt            array of CLASSDETAIL structures.
+//    pceltFetched     elements actually fetched.
+//
+// Returns:
+//        S_OK
+//        S_FALSE            (Not enough elements to be fetched.)
+//        E_INVALIDARG
+//        E_FAIL
+//        CS_E_INVALID_VERSION (Class Container is corrupted
+//                              OR is of a version that is no more supported)
+//        E_OUTOFMEMORY
+//
+//    on errors
+//        *pceltFetched = 0
+//
+
+//---- Skip()
+
+    HRESULT Skip(
+        [in]        ULONG celt);
+
+//
+//    celt            number of elements to be skipped.
+//
+// Returns:
+//        S_OK
+//        S_FALSE            (Not enough elements to be skipped.)
+//        E_FAIL
+//        E_ACCESSDENIED
+//        E_OUTOFMEMORY
+
+//---- Reset()
+
+    HRESULT Reset();
+
+//
+// Returns:
+//        S_OK
+//
+
+
+//---- Clone()
+
+    HRESULT Clone(
+        [out]       IEnumClass **ppenum);
+
+//
+// Returns:
+//        S_OK
+//        E_FAIL
+//        E_INVALIDARG
+//        E_ACCESSDENIED
+//        E_OUTOFMEMORY
+
+
+
+}
+cpp_quote("#endif")
+
+//
+//  IClassAdmin
+//  ===========
+//
+
+
+[
+  object,
+  uuid(00000191-0000-0000-C000-000000000046)
+]
+interface IClassAdmin : IUnknown
+{
+
+// ::NewClass
+// -----------
+// Stores a new Class Definition in the Class Store
+// Corresponds to HKCR/{CLSID} in registry
+// [In] - CLSID
+//                Class Name
+//                TreatAs CLSID (NULL GUID if no TreatAs)
+//                AutoConvert CLSID (NULL GUID if no AutoConvert)
+//                File Extension (NULL if no association)
+//                Mime Type (NULL if no association)
+//                Default ProgId (NULL if no association)
+//                Other ProgIds
+//                TypelibID
+//                Icon Path (NULL if none).
+//
+// Returns - S_OK
+//                     E_ALREADY_EXISTS
+//                     E_INVALIDARG
+//
+    HRESULT    NewClass (
+        [in]        CLASSDETAIL *pClassDetail
+        );
+
+// ::DeleteClass
+// -----------
+// Removes a Class Definition from the Class Store
+// [In] - CLSID
+
+    HRESULT    DeleteClass (
+        [in]        REFCLSID      guidClsId
+        );
+
+
+// ::NewInterface
+// --------------
+// Stores a new Interface Definition in the Class Store
+// Corresponds to HKCR/{IID} in registry
+// [In] - IID
+//                Interface Name
+//                Proxy-Stub CLSID (NULL GUID if no ProxyStub)
+//                TypeLib GUID (NULL GUID if no TypeLib)
+//
+// Returns - S_OK
+//                     E_ALREADY_EXISTS
+//                     E_INVALID_ARG
+//
+    HRESULT    NewInterface (
+        [in]        REFIID      iid,
+        [in, unique] LPOLESTR   pszDesc,
+        [in]        REFCLSID    psclsid,
+        [in]        REFCLSID    typelibid
+        );
+
+// ::DeleteInterface
+// -----------
+// Removes an Interface Definition from the Class Store
+// [In] - IID
+
+    HRESULT    DeleteInterface (
+        [in]        REFIID      iid
+        );
+
+
+// ::NewPackage
+// ------------
+// Stores a new application package in the Class Store
+// May Correspond to HKCR/{CLSID}/LocalServer32 likes in registry
+//
+// Returns - S_OK
+//                     E_ALREADY_EXISTS
+//                     E_INVALIDARG
+//
+    HRESULT    NewPackage (
+        [in]        PACKAGEDETAIL *pPackageDetail
+        );
+
+
+// ::DeletePackage
+// -----------
+// Removes a package from the Class Store
+// [In] - PackageName
+
+    HRESULT    DeletePackage (
+        [in]        LPOLESTR       pszPackageName
+        );
+
+// ::GetClassesEnum()
+//
+// Returns the clsid enumerator
+// for browsing classes defined in the class store.
+//
+// Returns:
+//        S_OK
+//        E_INVALIDARG
+//        E_FAIL
+//        E_ACCESSDENIED
+//        E_OUTOFMEMORY
+//
+//
+//  The value of the enumerator is NULL for all the error conditions.
+//
+
+    HRESULT    GetClassesEnum(
+        [out]       IEnumClass **ppIEnumClass
+    );
+
+
+
+// ::GetPackagesEnum()
+//
+//        Getting the Package enumerator from the classstore.
+//
+//        guidClsid:    All the apps that implements the clsid.
+//                        ignored if NULLGUID.
+//        Vendor:       All the apps provided by a given Vendor.
+//                        ignored if NULL.
+//
+//        ppIEnumPackage: NULL if there is any error.
+//
+// Returns:
+//        S_OK
+//        E_INVALIDARG
+//        E_FAIL
+//        E_ACCESSDENIED
+//        E_OUTOFMEMORY
+//
+// The value of the enumerator is NULL for all the error conditions.
+//
+
+    HRESULT    GetPackagesEnum(
+        [in]         REFCLSID         guidClsid,
+        [in, unique] LPOLESTR         pszVendor,
+        [in]         CSPLATFORM       Platform,
+        [in]         DWORD            dwContext,
+        [in]         LCID             Locale,
+        [out]        IEnumPackage    **ppIEnumPackage
+        );
+
+
+// ::GetClassDetails()
+//
+// Get all the class details given the clsid.
+//
+//    [in]      guidClsID    class ID (guid)
+//    [out]     CLASSDETAIL     *pClassDetail
+//
+// Returns:
+//        S_OK
+//        E_INVALIDARG
+//        E_FAIL
+//        E_NOTFOUND            (no such class)
+//        E_ACCESSDENIED
+//        E_OUTOFMEMORY
+//
+//
+
+
+
+    HRESULT    GetClassDetails (
+        [in]        REFCLSID            guidClsId,
+        [out]       CLASSDETAIL         *pClassDetail
+        );
+
+
+// ::GetIidDetails()
+//
+//    [IN]
+//        iid            IID (guid)
+//    [OUT]
+//        pszDesc         Description
+//        psClsid         Proxy Stub Class ID
+//        pTypeLibId      libid
+//
+// Returns:
+//        S_OK
+//        E_INVALIDARG
+//        E_FAIL
+//        E_NOTFOUND
+//        E_ACCESSDENIED
+//        E_OUTOFMEMORY
+//
+//
+
+    HRESULT GetIidDetails (
+        [in]        REFIID           iid,
+        [out]       LPOLESTR        *ppszDesc,
+        [out]       CLSID           *psClsid,
+        [out]       CLSID           *pTypeLibId
+        );
+
+// ::GetPackageDetails()
+//
+// Get all the Package details given packagename.
+//
+//    [IN]
+//          PackageName: Name of the package
+//    [OUT]
+//          pPackageDetail  Package Detail
+//
+// Returns:
+//        S_OK
+//        E_INVALIDARG
+//        E_FAIL
+//        E_NOTFOUND            (no such class)
+//        E_ACCESSDENIED
+//        E_OUTOFMEMORY
+//
+//
+
+
+    HRESULT    GetPackageDetails (
+        [in]        LPOLESTR             pszPackageName,
+        [out]       PACKAGEDETAIL       *pPackageDetail
+        );
+}
+
+cpp_quote("#if ( _MSC_VER >= 800 )")
+cpp_quote("#pragma warning(default:4201)")
+cpp_quote("#endif")
+
+	*/
+
+} // extern (Windows)
--- a/dwt/internal/ole/win32/OLEIDL.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/ole/win32/OLEIDL.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,479 +1,479 @@
-module dwt.internal.ole.win32.OLEIDL;
-//+-------------------------------------------------------------------------
-//
-//  Microsoft Windows
-//  Copyright (C) Microsoft Corporation, 1992-1997.
-//
-//  File: oadvhr.idl
-//
-//--------------------------------------------------------------------------
-private import dwt.internal.win32.WINTYPES;
-private import dwt.internal.ole.win32.extras;
-private import dwt.internal.ole.win32.OBJIDL;
-//private import std.c.windows.windows;
-//private import std.c.windows.com;
-
-extern( Windows ) {
-//interface IOleInPlaceActiveObject;
-//interface IEnumOLEVERB;
-
-interface IOleAdviseHolder : IUnknown
-{
-    HRESULT Advise( IAdviseSink pAdvise, DWORD * pdwConnection );
-    HRESULT Unadvise( DWORD dwConnection );
-    HRESULT EnumAdvise ( IEnumSTATDATA ppenumAdvise );
-    HRESULT SendOnRename( IMoniker pmk );
-    HRESULT SendOnSave();
-    HRESULT SendOnClose();
-}
-alias IOleAdviseHolder LPOLEADVISEHOLDER;
-
-interface IOleCache : IUnknown
-{
-    HRESULT Cache( FORMATETC *pformatetc, DWORD advf, DWORD * pdwConnection );
-    HRESULT Uncache( DWORD dwConnection );
-    HRESULT EnumCache( IEnumSTATDATA * ppenumSTATDATA );
-    HRESULT InitCache( IDataObject pDataObject );
-    HRESULT SetData( FORMATETC * pformatetc, STGMEDIUM * pmedium, BOOL fRelease );
-}
-alias IOleCache LPOLECACHE;
-
-interface IOleCache2 : IOleCache
-{
-    // Cache update Flags
-/*
-    const DWORD UPDFCACHE_NODATACACHE   =       0x00000001;
-    const DWORD UPDFCACHE_ONSAVECACHE   =       0x00000002;
-    const DWORD UPDFCACHE_ONSTOPCACHE   =       0x00000004;
-    const DWORD UPDFCACHE_NORMALCACHE   =       0x00000008;
-    const DWORD UPDFCACHE_IFBLANK       =       0x00000010;
-    const DWORD UPDFCACHE_ONLYIFBLANK   =       0x80000000;
-
-    const DWORD UPDFCACHE_IFBLANKORONSAVECACHE  =
-                    (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE);
-    const DWORD UPDFCACHE_ALL                   =
-                    ((DWORD)(~(UPDFCACHE_ONLYIFBLANK)));
-    const DWORD UPDFCACHE_ALLBUTNODATACACHE     =
-                    (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE)));
-
-
-    // IOleCache2::DiscardCache options
-    typedef [v1_enum] enum tagDISCARDCACHE
-    {
-        DISCARDCACHE_SAVEIFDIRTY =  0,  // Save all dirty cache before discarding
-        DISCARDCACHE_NOSAVE      =  1   // Don't save dirty caches before
-                                    // discarding
-    } DISCARDCACHE;
-*/
-
-    HRESULT UpdateCache( LPDATAOBJECT pDataObject, DWORD grfUpdf, LPVOID pReserved );
-
-//    [call_as(UpdateCache)]
-//    HRESULT RemoteUpdateCache( LPDATAOBJECT pDataObject, DWORD grfUpdf, DWORD pReserved );
-    HRESULT DiscardCache( DWORD dwDiscardOptions );
-}
-alias IOleCache2 LPOLECACHE2;
-
-interface IOleCacheControl : IUnknown
-{
-    HRESULT OnRun( LPDATAOBJECT pDataObject );
-    HRESULT OnStop();
-}
-alias IOleCacheControl LPOLECACHECONTROL;
-
-interface IParseDisplayName : IUnknown
-{
-    HRESULT ParseDisplayName( IBindCtx pbc, LPOLESTR pszDisplayName, ULONG * pchEaten, IMoniker * ppmkOut );
-}
-alias IParseDisplayName LPPARSEDISPLAYNAME;
-
-interface IOleContainer : IParseDisplayName
-{
-	HRESULT EnumObjects( DWORD grfFlags, IEnumUnknown * ppenum );
-	HRESULT LockContainer( BOOL fLock );
-}
-alias IOleContainer LPOLECONTAINER;
-
-
-interface IOleClientSite : IUnknown
-{
-	HRESULT SaveObject();
-	HRESULT GetMoniker( DWORD dwAssign, DWORD dwWhichMoniker, IMoniker * ppmk );
-	HRESULT GetContainer( IOleContainer * ppContainer );
-	HRESULT ShowObject();
-	HRESULT OnShowWindow( BOOL fShow );
-	HRESULT RequestNewObjectLayout();
-}
-alias IOleClientSite LPOLECLIENTSITE;
-
-enum OLEGETMONIKER
-{
-	OLEGETMONIKER_ONLYIFTHERE = 1,
-	OLEGETMONIKER_FORCEASSIGN = 2,
-	OLEGETMONIKER_UNASSIGN    = 3,
-	OLEGETMONIKER_TEMPFORUSER = 4
-}
-
-enum OLEWHICHMK
-{
-	OLEWHICHMK_CONTAINER = 1,
-	OLEWHICHMK_OBJREL    = 2,
-	OLEWHICHMK_OBJFULL   = 3
-}
-
-enum USERCLASSTYPE
-{
-        USERCLASSTYPE_FULL    = 1,
-        USERCLASSTYPE_SHORT   = 2,
-        USERCLASSTYPE_APPNAME = 3,
-}
-
-enum OLEMISC
-{
-        OLEMISC_RECOMPOSEONRESIZE           = 0x00000001,
-        OLEMISC_ONLYICONIC                  = 0x00000002,
-        OLEMISC_INSERTNOTREPLACE            = 0x00000004,
-        OLEMISC_STATIC                      = 0x00000008,
-        OLEMISC_CANTLINKINSIDE              = 0x00000010,
-        OLEMISC_CANLINKBYOLE1               = 0x00000020,
-        OLEMISC_ISLINKOBJECT                = 0x00000040,
-        OLEMISC_INSIDEOUT                   = 0x00000080,
-        OLEMISC_ACTIVATEWHENVISIBLE         = 0x00000100,
-        OLEMISC_RENDERINGISDEVICEINDEPENDENT= 0x00000200,
-        OLEMISC_INVISIBLEATRUNTIME          = 0x00000400,
-        OLEMISC_ALWAYSRUN                   = 0x00000800,
-        OLEMISC_ACTSLIKEBUTTON              = 0x00001000,
-        OLEMISC_ACTSLIKELABEL               = 0x00002000,
-        OLEMISC_NOUIACTIVATE                = 0x00004000,
-        OLEMISC_ALIGNABLE                   = 0x00008000,
-        OLEMISC_SIMPLEFRAME                 = 0x00010000,
-        OLEMISC_SETCLIENTSITEFIRST          = 0x00020000,
-        OLEMISC_IMEMODE                     = 0x00040000,
-        OLEMISC_IGNOREACTIVATEWHENVISIBLE   = 0x00080000,
-        OLEMISC_WANTSTOMENUMERGE            = 0x00100000,
-        OLEMISC_SUPPORTSMULTILEVELUNDO      = 0x00200000
-}
-
-enum OLECLOSE
-{
-	OLECLOSE_SAVEIFDIRTY = 0,
-	OLECLOSE_NOSAVE      = 1,
-	OLECLOSE_PROMPTSAVE  = 2,
-	SAVEIFDIRTY = 0,
-	NOSAVE      = 1,
-	PROMPTSAVE  = 2
-}
-
-interface IOleObject : IUnknown
-{
-	HRESULT SetClientSite( IOleClientSite pClientSite );
-	HRESULT GetClientSite( IOleClientSite * ppClientSite );
-	HRESULT SetHostNames( LPCOLESTR szContainerApp, LPCOLESTR szContainerObj );
-	HRESULT Close( DWORD dwSaveOption );
-	HRESULT SetMoniker( DWORD dwWhichMoniker, IMoniker pmk );
-	HRESULT GetMoniker( DWORD dwAssign, DWORD dwWhichMoniker, IMoniker * ppmk );
-	HRESULT InitFromData( IDataObject pDataObject, BOOL fCreation, DWORD dwReserved );
-	HRESULT GetClipboardData( DWORD dwReserved, IDataObject * ppDataObject );
-	HRESULT DoVerb( LONG iVerb, LPMSG lpmsg, IOleClientSite pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect );
-	HRESULT EnumVerbs( IEnumOLEVERB * ppEnumOleVerb );
-	HRESULT Update();
-	HRESULT IsUpToDate();
-	HRESULT GetUserClassID( CLSID * pClsid );
-	HRESULT GetUserType( DWORD dwFormOfType, LPOLESTR * pszUserType );
-	HRESULT SetExtent( DWORD dwDrawAspect, SIZEL * psizel );
-	HRESULT GetExtent( DWORD dwDrawAspect, SIZEL * psizel );
-	HRESULT Advise( IAdviseSink pAdvSink, DWORD * pdwConnection );
-	HRESULT Unadvise( DWORD dwConnection );
-	HRESULT EnumAdvise( IEnumSTATDATA * ppenumAdvise );
-	HRESULT GetMiscStatus( DWORD dwAspect, DWORD *pdwStatus );
-	HRESULT SetColorScheme( LOGPALETTE *pLogpal );
-}
-alias IOleObject LPOLEOBJECT;
-
-enum OLERENDER
-{
-	OLERENDER_NONE   = 0,
-	OLERENDER_DRAW   = 1,
-	OLERENDER_FORMAT = 2,
-	OLERENDER_ASIS   = 3,
-	NONE   = 0,
-	DRAW   = 1,
-	FORMAT = 2,
-	ASIS   = 3
-}
-alias OLERENDER * LPOLERENDER;
-
-interface IOLETypes
-{
-}
-    /****** OLE value types ***********************************************/
-    /* rendering options */
-    /****** Clipboard Data structures *****************************************/
-    struct OBJECTDESCRIPTOR
-    {
-       ULONG    cbSize;              // Size of structure in bytes
-       CLSID    clsid;               // CLSID of data being transferred
-       DWORD    dwDrawAspect;        // Display aspect of the object
-                                     //     normally DVASPECT_CONTENT or ICON.
-                                     //     dwDrawAspect will be 0 (which is NOT
-                                     //     DVASPECT_CONTENT) if the copier or
-                                     //     dragsource didn't draw the object to
-                                     //     begin with.
-       SIZEL    sizel;               // size of the object in HIMETRIC
-                                     //    sizel is opt.: will be (0,0) for apps
-                                     //    which don't draw the object being
-                                     //    transferred
-       POINTL   pointl;              // Offset in HIMETRIC units from the
-                                     //    upper-left corner of the obj where the
-                                     //    mouse went down for the drag.
-                                     //    NOTE: y coordinates increase downward.
-                                     //          x coordinates increase to right
-                                     //    pointl is opt.; it is only meaningful
-                                     //    if object is transfered via drag/drop.
-                                     //    (0, 0) if mouse position is unspecified
-                                     //    (eg. when obj transfered via clipboard)
-       DWORD    dwStatus;            // Misc. status flags for object. Flags are
-                                     //    defined by OLEMISC enum. these flags
-                                     //    are as would be returned
-                                     //    by IOleObject::GetMiscStatus.
-       DWORD    dwFullUserTypeName;  // Offset from beginning of structure to
-                                     //    null-terminated string that specifies
-                                     //    Full User Type Name of the object.
-                                     //    0 indicates string not present.
-       DWORD    dwSrcOfCopy;         // Offset from beginning of structure to
-                                     //    null-terminated string that specifies
-                                     //    source of the transfer.
-                                     //    dwSrcOfCOpy is normally implemented as
-                                     //    the display name of the temp-for-user
-                                     //    moniker which identifies the source of
-                                     //    the data.
-                                     //    0 indicates string not present.
-                                     //    NOTE: moniker assignment is NOT forced.
-                                     //    see IOleObject::GetMoniker(
-                                     //                OLEGETMONIKER_TEMPFORUSER)
-
-     /* variable sized string data may appear here */
-
-    }
-	 alias OBJECTDESCRIPTOR  LINKSRCDESCRIPTOR;
-	 alias OBJECTDESCRIPTOR  * POBJECTDESCRIPTOR;
-	 alias OBJECTDESCRIPTOR  * LPOBJECTDESCRIPTOR;
-	 alias OBJECTDESCRIPTOR  * PLINKSRCDESCRIPTOR;
-	 alias OBJECTDESCRIPTOR  * LPLINKSRCDESCRIPTOR;
-
-
-interface IOleWindow : IUnknown
-{
-    HRESULT GetWindow( HWND * phwnd );
-    HRESULT ContextSensitiveHelp( BOOL fEnterMode );
-}
-alias IOleWindow LPOLEWINDOW;
-enum OLEUPDATE
-{
-	OLEUPDATE_ALWAYS=1,
-	OLEUPDATE_ONCALL=3
-}
-alias OLEUPDATE * LPOLEUPDATE;
-alias OLEUPDATE * POLEUPDATE;
-
-    // for IOleLink::BindToSource
-enum OLELINKBIND
-{
-	OLELINKBIND_EVENIFCLASSDIFF = 1,
-}
-
-interface IOleLink : IUnknown
-{
-    /* Link update options */
-	HRESULT SetUpdateOptions( DWORD dwUpdateOpt );
-	HRESULT GetUpdateOptions( DWORD * pdwUpdateOpt );
-	HRESULT SetSourceMoniker( IMoniker pmk, REFCLSID rclsid );
-	HRESULT GetSourceMoniker( IMoniker * ppmk );
-	HRESULT SetSourceDisplayName( LPCOLESTR pszStatusText );
-	HRESULT GetSourceDisplayName( LPOLESTR * ppszDisplayName );
-	HRESULT BindToSource( DWORD bindflags, IBindCtx pbc );
-	HRESULT BindIfRunning();
-	HRESULT GetBoundSource( IUnknown * ppunk );
-	HRESULT UnbindSource();
-	HRESULT Update( IBindCtx pbc );
-}
-alias IOleLink LPOLELINK;
-
-enum BINDSPEED
-{
-	BINDSPEED_INDEFINITE    = 1,
-	BINDSPEED_MODERATE      = 2,
-	BINDSPEED_IMMEDIATE     = 3
-}
-
-enum OLECONTF
-{
-	OLECONTF_EMBEDDINGS     = 1,
-	OLECONTF_LINKS          = 2,
-	OLECONTF_OTHERS         = 4,
-	OLECONTF_ONLYUSER       = 8,
-	OLECONTF_ONLYIFRUNNING  = 16
-}
-
-interface IOleItemContainer : IOleContainer
-{
-	HRESULT GetObject( LPOLESTR pszItem, DWORD dwSpeedNeeded, IBindCtx pbc, REFIID riid, void **ppvObject);
-	HRESULT GetObjectStorage( LPOLESTR pszItem, IBindCtx pbc, REFIID riid, void **ppvStorage);
-	HRESULT IsRunning(LPOLESTR pszItem);
-}
-alias IOleItemContainer LPOLEITEMCONTAINER;
-
-alias RECT BORDERWIDTHS;
-alias LPRECT LPBORDERWIDTHS;
-alias LPCRECT LPCBORDERWIDTHS;
-
-interface IOleInPlaceUIWindow : IOleWindow
-{
-	HRESULT GetBorder( LPRECT lprectBorder );
-	HRESULT RequestBorderSpace( LPCBORDERWIDTHS pborderwidths );
-	HRESULT SetBorderSpace( LPCBORDERWIDTHS pborderwidths );
-	HRESULT SetActiveObject( LPOLEINPLACEACTIVEOBJECT pActiveObject, LPCOLESTR pszObjName );
-}
-alias IOleInPlaceUIWindow LPOLEINPLACEUIWINDOW;
-
-interface IOleInPlaceActiveObject : IOleWindow
-{
-	HRESULT TranslateAccelerator( LPMSG lpmsg );
-	HRESULT OnFrameWindowActivate( BOOL fActivate );
-	HRESULT OnDocWindowActivate( BOOL fActivate );
-	HRESULT ResizeBorder( LPCRECT prcBorder, IOleInPlaceUIWindow pUIWindow, BOOL fFrameWindow );
-	HRESULT EnableModeless ( BOOL fEnable );
-}
-alias IOleInPlaceActiveObject LPOLEINPLACEACTIVEOBJECT;
-
-struct OLEINPLACEFRAMEINFO          // OleInPlaceFrameInfo
-{
-    UINT    cb;
-    BOOL    fMDIApp;
-    HWND    hwndFrame;
-    HACCEL  haccel;
-    UINT    cAccelEntries;
-}
-alias OLEINPLACEFRAMEINFO * LPOLEINPLACEFRAMEINFO;
-
-
-struct OLEMENUGROUPWIDTHS
-{
-    LONG    width[6];
-}
-alias OLEMENUGROUPWIDTHS * LPOLEMENUGROUPWIDTHS;
-
-alias HGLOBAL HOLEMENU;
-
-interface IOleInPlaceFrame : IOleInPlaceUIWindow
-{
-HRESULT InsertMenus( HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths );
-HRESULT SetMenu( HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject );
-HRESULT RemoveMenus( HMENU hmenuShared );
-HRESULT SetStatusText( LPCOLESTR pszStatusText );
-HRESULT EnableModeless( BOOL fEnable );
-HRESULT TranslateAccelerator( LPMSG lpmsg, WORD wID );
-}
-alias IOleInPlaceFrame LPOLEINPLACEFRAME;
-
-interface IOleInPlaceObject : IOleWindow
-{
-	HRESULT InPlaceDeactivate();
-	HRESULT UIDeactivate();
-	HRESULT SetObjectRects( LPCRECT lprcPosRect, LPCRECT lprcClipRect );
-	HRESULT ReactivateAndUndo();
-}
-alias IOleInPlaceObject LPOLEINPLACEOBJECT;
-
-interface IOleInPlaceSite : IOleWindow
-{
-	HRESULT CanInPlaceActivate();
-	HRESULT OnInPlaceActivate();
-	HRESULT OnUIActivate();
-	HRESULT GetWindowContext( IOleInPlaceFrame * ppFrame, IOleInPlaceUIWindow * ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo );
-	HRESULT Scroll( SIZE scrollExtant );
-	HRESULT OnUIDeactivate( BOOL fUndoable );
-	HRESULT OnInPlaceDeactivate();
-	HRESULT DiscardUndoState();
-	HRESULT DeactivateAndUndo();
-	HRESULT OnPosRectChange( LPCRECT lprcPosRect );
-}
-alias IOleInPlaceSite LPOLEINPLACESITE;
-
-interface IContinue : IUnknown
-{
-    HRESULT FContinue();
-}
-
-interface IViewObject : IUnknown
-{
-	HRESULT Draw( DWORD dwDrawAspect, LONG lindex, void * pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (*pfnContinue)(DWORD dwContinue), DWORD dwContinue );
-	HRESULT GetColorSet( DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet );
-	HRESULT Freeze( DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze );
-	HRESULT Unfreeze( DWORD dwFreeze );
-	HRESULT SetAdvise( DWORD aspects, DWORD advf, IAdviseSink pAdvSink );
-	HRESULT GetAdvise( DWORD * pAspects, DWORD * pAdvf, IAdviseSink * ppAdvSink );
-}
-alias IViewObject LPVIEWOBJECT;
-
-interface IViewObject2 : IViewObject
-{
-	HRESULT GetExtent( DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE* ptd, LPSIZEL lpsizel );
-}
-alias IViewObject2 LPVIEWOBJECT2;
-
-interface IDropSource : IUnknown
-{
-	HRESULT QueryContinueDrag( BOOL fEscapePressed, DWORD grfKeyState );
-	HRESULT GiveFeedback( DWORD dwEffect );
-}
-alias IDropSource LPDROPSOURCE;
-
-const DWORD MK_ALT = 0x0020;
-const DWORD DROPEFFECT_NONE = 0;
-const DWORD DROPEFFECT_COPY = 1;
-const DWORD DROPEFFECT_MOVE = 2;
-const DWORD DROPEFFECT_LINK = 4;
-const DWORD DROPEFFECT_SCROLL = 0x80000000;
-const DWORD DD_DEFSCROLLINSET = 11;
-const DWORD DD_DEFSCROLLDELAY = 50;
-const DWORD DD_DEFSCROLLINTERVAL = 50;
-const DWORD DD_DEFDRAGDELAY = 200;
-const DWORD DD_DEFDRAGMINDIST = 2;
-
-interface IDropTarget : IUnknown
-{
-	HRESULT DragEnter( IDataObject pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect );
-	HRESULT DragOver( DWORD grfKeyState, POINTL pt, DWORD *pdwEffect );
-	HRESULT DragLeave();
-	HRESULT Drop(IDataObject pDataObj,DWORD grfKeyState,POINTL pt,DWORD *pdwEffect);
-}
-alias IDropTarget LPDROPTARGET;
-
-struct OLEVERB {
-        LONG    lVerb;
-        LPOLESTR  lpszVerbName;
-        DWORD   fuFlags;
-        DWORD grfAttribs;
-}
-alias OLEVERB * LPOLEVERB;
-
-// Bitwise verb attributes used in OLEVERB.grfAttribs
-enum OLEVERBATTRIB // bitwise
-{
-	OLEVERBATTRIB_NEVERDIRTIES = 1,
-	OLEVERBATTRIB_ONCONTAINERMENU = 2,
-	NEVERDIRTIES = 1,
-	ONCONTAINERMENU = 2
-}
-
-interface IEnumOLEVERB : IUnknown
-{
-	HRESULT Next( ULONG celt, LPOLEVERB rgelt, ULONG * pceltFetched );
-	HRESULT Skip( ULONG celt );
-	HRESULT Reset();
-	HRESULT Clone( IEnumOLEVERB * ppenum );
-}
-alias IEnumOLEVERB LPENUMOLEVERB;
-
-} /* extern(Windows) */
+module dwt.internal.ole.win32.OLEIDL;
+//+-------------------------------------------------------------------------
+//
+//  Microsoft Windows
+//  Copyright (C) Microsoft Corporation, 1992-1997.
+//
+//  File: oadvhr.idl
+//
+//--------------------------------------------------------------------------
+private import dwt.internal.win32.WINTYPES;
+private import dwt.internal.ole.win32.extras;
+private import dwt.internal.ole.win32.OBJIDL;
+//private import std.c.windows.windows;
+//private import std.c.windows.com;
+
+extern( Windows ) {
+//interface IOleInPlaceActiveObject;
+//interface IEnumOLEVERB;
+
+interface IOleAdviseHolder : IUnknown
+{
+    HRESULT Advise( IAdviseSink pAdvise, DWORD * pdwConnection );
+    HRESULT Unadvise( DWORD dwConnection );
+    HRESULT EnumAdvise ( IEnumSTATDATA ppenumAdvise );
+    HRESULT SendOnRename( IMoniker pmk );
+    HRESULT SendOnSave();
+    HRESULT SendOnClose();
+}
+alias IOleAdviseHolder LPOLEADVISEHOLDER;
+
+interface IOleCache : IUnknown
+{
+    HRESULT Cache( FORMATETC *pformatetc, DWORD advf, DWORD * pdwConnection );
+    HRESULT Uncache( DWORD dwConnection );
+    HRESULT EnumCache( IEnumSTATDATA * ppenumSTATDATA );
+    HRESULT InitCache( IDataObject pDataObject );
+    HRESULT SetData( FORMATETC * pformatetc, STGMEDIUM * pmedium, BOOL fRelease );
+}
+alias IOleCache LPOLECACHE;
+
+interface IOleCache2 : IOleCache
+{
+    // Cache update Flags
+/*
+    const DWORD UPDFCACHE_NODATACACHE   =       0x00000001;
+    const DWORD UPDFCACHE_ONSAVECACHE   =       0x00000002;
+    const DWORD UPDFCACHE_ONSTOPCACHE   =       0x00000004;
+    const DWORD UPDFCACHE_NORMALCACHE   =       0x00000008;
+    const DWORD UPDFCACHE_IFBLANK       =       0x00000010;
+    const DWORD UPDFCACHE_ONLYIFBLANK   =       0x80000000;
+
+    const DWORD UPDFCACHE_IFBLANKORONSAVECACHE  =
+                    (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE);
+    const DWORD UPDFCACHE_ALL                   =
+                    ((DWORD)(~(UPDFCACHE_ONLYIFBLANK)));
+    const DWORD UPDFCACHE_ALLBUTNODATACACHE     =
+                    (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE)));
+
+
+    // IOleCache2::DiscardCache options
+    typedef [v1_enum] enum tagDISCARDCACHE
+    {
+        DISCARDCACHE_SAVEIFDIRTY =  0,  // Save all dirty cache before discarding
+        DISCARDCACHE_NOSAVE      =  1   // Don't save dirty caches before
+                                    // discarding
+    } DISCARDCACHE;
+*/
+
+    HRESULT UpdateCache( LPDATAOBJECT pDataObject, DWORD grfUpdf, LPVOID pReserved );
+
+//    [call_as(UpdateCache)]
+//    HRESULT RemoteUpdateCache( LPDATAOBJECT pDataObject, DWORD grfUpdf, DWORD pReserved );
+    HRESULT DiscardCache( DWORD dwDiscardOptions );
+}
+alias IOleCache2 LPOLECACHE2;
+
+interface IOleCacheControl : IUnknown
+{
+    HRESULT OnRun( LPDATAOBJECT pDataObject );
+    HRESULT OnStop();
+}
+alias IOleCacheControl LPOLECACHECONTROL;
+
+interface IParseDisplayName : IUnknown
+{
+    HRESULT ParseDisplayName( IBindCtx pbc, LPOLESTR pszDisplayName, ULONG * pchEaten, IMoniker * ppmkOut );
+}
+alias IParseDisplayName LPPARSEDISPLAYNAME;
+
+interface IOleContainer : IParseDisplayName
+{
+	HRESULT EnumObjects( DWORD grfFlags, IEnumUnknown * ppenum );
+	HRESULT LockContainer( BOOL fLock );
+}
+alias IOleContainer LPOLECONTAINER;
+
+
+interface IOleClientSite : IUnknown
+{
+	HRESULT SaveObject();
+	HRESULT GetMoniker( DWORD dwAssign, DWORD dwWhichMoniker, IMoniker * ppmk );
+	HRESULT GetContainer( IOleContainer * ppContainer );
+	HRESULT ShowObject();
+	HRESULT OnShowWindow( BOOL fShow );
+	HRESULT RequestNewObjectLayout();
+}
+alias IOleClientSite LPOLECLIENTSITE;
+
+enum OLEGETMONIKER
+{
+	OLEGETMONIKER_ONLYIFTHERE = 1,
+	OLEGETMONIKER_FORCEASSIGN = 2,
+	OLEGETMONIKER_UNASSIGN    = 3,
+	OLEGETMONIKER_TEMPFORUSER = 4
+}
+
+enum OLEWHICHMK
+{
+	OLEWHICHMK_CONTAINER = 1,
+	OLEWHICHMK_OBJREL    = 2,
+	OLEWHICHMK_OBJFULL   = 3
+}
+
+enum USERCLASSTYPE
+{
+        USERCLASSTYPE_FULL    = 1,
+        USERCLASSTYPE_SHORT   = 2,
+        USERCLASSTYPE_APPNAME = 3,
+}
+
+enum OLEMISC
+{
+        OLEMISC_RECOMPOSEONRESIZE           = 0x00000001,
+        OLEMISC_ONLYICONIC                  = 0x00000002,
+        OLEMISC_INSERTNOTREPLACE            = 0x00000004,
+        OLEMISC_STATIC                      = 0x00000008,
+        OLEMISC_CANTLINKINSIDE              = 0x00000010,
+        OLEMISC_CANLINKBYOLE1               = 0x00000020,
+        OLEMISC_ISLINKOBJECT                = 0x00000040,
+        OLEMISC_INSIDEOUT                   = 0x00000080,
+        OLEMISC_ACTIVATEWHENVISIBLE         = 0x00000100,
+        OLEMISC_RENDERINGISDEVICEINDEPENDENT= 0x00000200,
+        OLEMISC_INVISIBLEATRUNTIME          = 0x00000400,
+        OLEMISC_ALWAYSRUN                   = 0x00000800,
+        OLEMISC_ACTSLIKEBUTTON              = 0x00001000,
+        OLEMISC_ACTSLIKELABEL               = 0x00002000,
+        OLEMISC_NOUIACTIVATE                = 0x00004000,
+        OLEMISC_ALIGNABLE                   = 0x00008000,
+        OLEMISC_SIMPLEFRAME                 = 0x00010000,
+        OLEMISC_SETCLIENTSITEFIRST          = 0x00020000,
+        OLEMISC_IMEMODE                     = 0x00040000,
+        OLEMISC_IGNOREACTIVATEWHENVISIBLE   = 0x00080000,
+        OLEMISC_WANTSTOMENUMERGE            = 0x00100000,
+        OLEMISC_SUPPORTSMULTILEVELUNDO      = 0x00200000
+}
+
+enum OLECLOSE
+{
+	OLECLOSE_SAVEIFDIRTY = 0,
+	OLECLOSE_NOSAVE      = 1,
+	OLECLOSE_PROMPTSAVE  = 2,
+	SAVEIFDIRTY = 0,
+	NOSAVE      = 1,
+	PROMPTSAVE  = 2
+}
+
+interface IOleObject : IUnknown
+{
+	HRESULT SetClientSite( IOleClientSite pClientSite );
+	HRESULT GetClientSite( IOleClientSite * ppClientSite );
+	HRESULT SetHostNames( LPCOLESTR szContainerApp, LPCOLESTR szContainerObj );
+	HRESULT Close( DWORD dwSaveOption );
+	HRESULT SetMoniker( DWORD dwWhichMoniker, IMoniker pmk );
+	HRESULT GetMoniker( DWORD dwAssign, DWORD dwWhichMoniker, IMoniker * ppmk );
+	HRESULT InitFromData( IDataObject pDataObject, BOOL fCreation, DWORD dwReserved );
+	HRESULT GetClipboardData( DWORD dwReserved, IDataObject * ppDataObject );
+	HRESULT DoVerb( LONG iVerb, LPMSG lpmsg, IOleClientSite pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect );
+	HRESULT EnumVerbs( IEnumOLEVERB * ppEnumOleVerb );
+	HRESULT Update();
+	HRESULT IsUpToDate();
+	HRESULT GetUserClassID( CLSID * pClsid );
+	HRESULT GetUserType( DWORD dwFormOfType, LPOLESTR * pszUserType );
+	HRESULT SetExtent( DWORD dwDrawAspect, SIZEL * psizel );
+	HRESULT GetExtent( DWORD dwDrawAspect, SIZEL * psizel );
+	HRESULT Advise( IAdviseSink pAdvSink, DWORD * pdwConnection );
+	HRESULT Unadvise( DWORD dwConnection );
+	HRESULT EnumAdvise( IEnumSTATDATA * ppenumAdvise );
+	HRESULT GetMiscStatus( DWORD dwAspect, DWORD *pdwStatus );
+	HRESULT SetColorScheme( LOGPALETTE *pLogpal );
+}
+alias IOleObject LPOLEOBJECT;
+
+enum OLERENDER
+{
+	OLERENDER_NONE   = 0,
+	OLERENDER_DRAW   = 1,
+	OLERENDER_FORMAT = 2,
+	OLERENDER_ASIS   = 3,
+	NONE   = 0,
+	DRAW   = 1,
+	FORMAT = 2,
+	ASIS   = 3
+}
+alias OLERENDER * LPOLERENDER;
+
+interface IOLETypes
+{
+}
+    /****** OLE value types ***********************************************/
+    /* rendering options */
+    /****** Clipboard Data structures *****************************************/
+    struct OBJECTDESCRIPTOR
+    {
+       ULONG    cbSize;              // Size of structure in bytes
+       CLSID    clsid;               // CLSID of data being transferred
+       DWORD    dwDrawAspect;        // Display aspect of the object
+                                     //     normally DVASPECT_CONTENT or ICON.
+                                     //     dwDrawAspect will be 0 (which is NOT
+                                     //     DVASPECT_CONTENT) if the copier or
+                                     //     dragsource didn't draw the object to
+                                     //     begin with.
+       SIZEL    sizel;               // size of the object in HIMETRIC
+                                     //    sizel is opt.: will be (0,0) for apps
+                                     //    which don't draw the object being
+                                     //    transferred
+       POINTL   pointl;              // Offset in HIMETRIC units from the
+                                     //    upper-left corner of the obj where the
+                                     //    mouse went down for the drag.
+                                     //    NOTE: y coordinates increase downward.
+                                     //          x coordinates increase to right
+                                     //    pointl is opt.; it is only meaningful
+                                     //    if object is transfered via drag/drop.
+                                     //    (0, 0) if mouse position is unspecified
+                                     //    (eg. when obj transfered via clipboard)
+       DWORD    dwStatus;            // Misc. status flags for object. Flags are
+                                     //    defined by OLEMISC enum. these flags
+                                     //    are as would be returned
+                                     //    by IOleObject::GetMiscStatus.
+       DWORD    dwFullUserTypeName;  // Offset from beginning of structure to
+                                     //    null-terminated string that specifies
+                                     //    Full User Type Name of the object.
+                                     //    0 indicates string not present.
+       DWORD    dwSrcOfCopy;         // Offset from beginning of structure to
+                                     //    null-terminated string that specifies
+                                     //    source of the transfer.
+                                     //    dwSrcOfCOpy is normally implemented as
+                                     //    the display name of the temp-for-user
+                                     //    moniker which identifies the source of
+                                     //    the data.
+                                     //    0 indicates string not present.
+                                     //    NOTE: moniker assignment is NOT forced.
+                                     //    see IOleObject::GetMoniker(
+                                     //                OLEGETMONIKER_TEMPFORUSER)
+
+     /* variable sized string data may appear here */
+
+    }
+	 alias OBJECTDESCRIPTOR  LINKSRCDESCRIPTOR;
+	 alias OBJECTDESCRIPTOR  * POBJECTDESCRIPTOR;
+	 alias OBJECTDESCRIPTOR  * LPOBJECTDESCRIPTOR;
+	 alias OBJECTDESCRIPTOR  * PLINKSRCDESCRIPTOR;
+	 alias OBJECTDESCRIPTOR  * LPLINKSRCDESCRIPTOR;
+
+
+interface IOleWindow : IUnknown
+{
+    HRESULT GetWindow( HWND * phwnd );
+    HRESULT ContextSensitiveHelp( BOOL fEnterMode );
+}
+alias IOleWindow LPOLEWINDOW;
+enum OLEUPDATE
+{
+	OLEUPDATE_ALWAYS=1,
+	OLEUPDATE_ONCALL=3
+}
+alias OLEUPDATE * LPOLEUPDATE;
+alias OLEUPDATE * POLEUPDATE;
+
+    // for IOleLink::BindToSource
+enum OLELINKBIND
+{
+	OLELINKBIND_EVENIFCLASSDIFF = 1,
+}
+
+interface IOleLink : IUnknown
+{
+    /* Link update options */
+	HRESULT SetUpdateOptions( DWORD dwUpdateOpt );
+	HRESULT GetUpdateOptions( DWORD * pdwUpdateOpt );
+	HRESULT SetSourceMoniker( IMoniker pmk, REFCLSID rclsid );
+	HRESULT GetSourceMoniker( IMoniker * ppmk );
+	HRESULT SetSourceDisplayName( LPCOLESTR pszStatusText );
+	HRESULT GetSourceDisplayName( LPOLESTR * ppszDisplayName );
+	HRESULT BindToSource( DWORD bindflags, IBindCtx pbc );
+	HRESULT BindIfRunning();
+	HRESULT GetBoundSource( IUnknown * ppunk );
+	HRESULT UnbindSource();
+	HRESULT Update( IBindCtx pbc );
+}
+alias IOleLink LPOLELINK;
+
+enum BINDSPEED
+{
+	BINDSPEED_INDEFINITE    = 1,
+	BINDSPEED_MODERATE      = 2,
+	BINDSPEED_IMMEDIATE     = 3
+}
+
+enum OLECONTF
+{
+	OLECONTF_EMBEDDINGS     = 1,
+	OLECONTF_LINKS          = 2,
+	OLECONTF_OTHERS         = 4,
+	OLECONTF_ONLYUSER       = 8,
+	OLECONTF_ONLYIFRUNNING  = 16
+}
+
+interface IOleItemContainer : IOleContainer
+{
+	HRESULT GetObject( LPOLESTR pszItem, DWORD dwSpeedNeeded, IBindCtx pbc, REFIID riid, void **ppvObject);
+	HRESULT GetObjectStorage( LPOLESTR pszItem, IBindCtx pbc, REFIID riid, void **ppvStorage);
+	HRESULT IsRunning(LPOLESTR pszItem);
+}
+alias IOleItemContainer LPOLEITEMCONTAINER;
+
+alias RECT BORDERWIDTHS;
+alias LPRECT LPBORDERWIDTHS;
+alias LPCRECT LPCBORDERWIDTHS;
+
+interface IOleInPlaceUIWindow : IOleWindow
+{
+	HRESULT GetBorder( LPRECT lprectBorder );
+	HRESULT RequestBorderSpace( LPCBORDERWIDTHS pborderwidths );
+	HRESULT SetBorderSpace( LPCBORDERWIDTHS pborderwidths );
+	HRESULT SetActiveObject( LPOLEINPLACEACTIVEOBJECT pActiveObject, LPCOLESTR pszObjName );
+}
+alias IOleInPlaceUIWindow LPOLEINPLACEUIWINDOW;
+
+interface IOleInPlaceActiveObject : IOleWindow
+{
+	HRESULT TranslateAccelerator( LPMSG lpmsg );
+	HRESULT OnFrameWindowActivate( BOOL fActivate );
+	HRESULT OnDocWindowActivate( BOOL fActivate );
+	HRESULT ResizeBorder( LPCRECT prcBorder, IOleInPlaceUIWindow pUIWindow, BOOL fFrameWindow );
+	HRESULT EnableModeless ( BOOL fEnable );
+}
+alias IOleInPlaceActiveObject LPOLEINPLACEACTIVEOBJECT;
+
+struct OLEINPLACEFRAMEINFO          // OleInPlaceFrameInfo
+{
+    UINT    cb;
+    BOOL    fMDIApp;
+    HWND    hwndFrame;
+    HACCEL  haccel;
+    UINT    cAccelEntries;
+}
+alias OLEINPLACEFRAMEINFO * LPOLEINPLACEFRAMEINFO;
+
+
+struct OLEMENUGROUPWIDTHS
+{
+    LONG    width[6];
+}
+alias OLEMENUGROUPWIDTHS * LPOLEMENUGROUPWIDTHS;
+
+alias HGLOBAL HOLEMENU;
+
+interface IOleInPlaceFrame : IOleInPlaceUIWindow
+{
+HRESULT InsertMenus( HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths );
+HRESULT SetMenu( HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject );
+HRESULT RemoveMenus( HMENU hmenuShared );
+HRESULT SetStatusText( LPCOLESTR pszStatusText );
+HRESULT EnableModeless( BOOL fEnable );
+HRESULT TranslateAccelerator( LPMSG lpmsg, WORD wID );
+}
+alias IOleInPlaceFrame LPOLEINPLACEFRAME;
+
+interface IOleInPlaceObject : IOleWindow
+{
+	HRESULT InPlaceDeactivate();
+	HRESULT UIDeactivate();
+	HRESULT SetObjectRects( LPCRECT lprcPosRect, LPCRECT lprcClipRect );
+	HRESULT ReactivateAndUndo();
+}
+alias IOleInPlaceObject LPOLEINPLACEOBJECT;
+
+interface IOleInPlaceSite : IOleWindow
+{
+	HRESULT CanInPlaceActivate();
+	HRESULT OnInPlaceActivate();
+	HRESULT OnUIActivate();
+	HRESULT GetWindowContext( IOleInPlaceFrame * ppFrame, IOleInPlaceUIWindow * ppDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo );
+	HRESULT Scroll( SIZE scrollExtant );
+	HRESULT OnUIDeactivate( BOOL fUndoable );
+	HRESULT OnInPlaceDeactivate();
+	HRESULT DiscardUndoState();
+	HRESULT DeactivateAndUndo();
+	HRESULT OnPosRectChange( LPCRECT lprcPosRect );
+}
+alias IOleInPlaceSite LPOLEINPLACESITE;
+
+interface IContinue : IUnknown
+{
+    HRESULT FContinue();
+}
+
+interface IViewObject : IUnknown
+{
+	HRESULT Draw( DWORD dwDrawAspect, LONG lindex, void * pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL (*pfnContinue)(DWORD dwContinue), DWORD dwContinue );
+	HRESULT GetColorSet( DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet );
+	HRESULT Freeze( DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze );
+	HRESULT Unfreeze( DWORD dwFreeze );
+	HRESULT SetAdvise( DWORD aspects, DWORD advf, IAdviseSink pAdvSink );
+	HRESULT GetAdvise( DWORD * pAspects, DWORD * pAdvf, IAdviseSink * ppAdvSink );
+}
+alias IViewObject LPVIEWOBJECT;
+
+interface IViewObject2 : IViewObject
+{
+	HRESULT GetExtent( DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE* ptd, LPSIZEL lpsizel );
+}
+alias IViewObject2 LPVIEWOBJECT2;
+
+interface IDropSource : IUnknown
+{
+	HRESULT QueryContinueDrag( BOOL fEscapePressed, DWORD grfKeyState );
+	HRESULT GiveFeedback( DWORD dwEffect );
+}
+alias IDropSource LPDROPSOURCE;
+
+const DWORD MK_ALT = 0x0020;
+const DWORD DROPEFFECT_NONE = 0;
+const DWORD DROPEFFECT_COPY = 1;
+const DWORD DROPEFFECT_MOVE = 2;
+const DWORD DROPEFFECT_LINK = 4;
+const DWORD DROPEFFECT_SCROLL = 0x80000000;
+const DWORD DD_DEFSCROLLINSET = 11;
+const DWORD DD_DEFSCROLLDELAY = 50;
+const DWORD DD_DEFSCROLLINTERVAL = 50;
+const DWORD DD_DEFDRAGDELAY = 200;
+const DWORD DD_DEFDRAGMINDIST = 2;
+
+interface IDropTarget : IUnknown
+{
+	HRESULT DragEnter( IDataObject pDataObj, DWORD grfKeyState, POINTL pt, DWORD *pdwEffect );
+	HRESULT DragOver( DWORD grfKeyState, POINTL pt, DWORD *pdwEffect );
+	HRESULT DragLeave();
+	HRESULT Drop(IDataObject pDataObj,DWORD grfKeyState,POINTL pt,DWORD *pdwEffect);
+}
+alias IDropTarget LPDROPTARGET;
+
+struct OLEVERB {
+        LONG    lVerb;
+        LPOLESTR  lpszVerbName;
+        DWORD   fuFlags;
+        DWORD grfAttribs;
+}
+alias OLEVERB * LPOLEVERB;
+
+// Bitwise verb attributes used in OLEVERB.grfAttribs
+enum OLEVERBATTRIB // bitwise
+{
+	OLEVERBATTRIB_NEVERDIRTIES = 1,
+	OLEVERBATTRIB_ONCONTAINERMENU = 2,
+	NEVERDIRTIES = 1,
+	ONCONTAINERMENU = 2
+}
+
+interface IEnumOLEVERB : IUnknown
+{
+	HRESULT Next( ULONG celt, LPOLEVERB rgelt, ULONG * pceltFetched );
+	HRESULT Skip( ULONG celt );
+	HRESULT Reset();
+	HRESULT Clone( IEnumOLEVERB * ppenum );
+}
+alias IEnumOLEVERB LPENUMOLEVERB;
+
+} /* extern(Windows) */
--- a/dwt/internal/ole/win32/ifs.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/ole/win32/ifs.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,257 +1,257 @@
-/*
- * extra interface not define in any other modules, copied from MSDN 2003
- * don't import this module directly, import std.internal.ole.win32.com instead
- *
- * author : Shawn Liu
- */
-
-module dwt.internal.ole.win32.ifs;
-
-private import dwt.DWT;
-private import dwt.internal.win32.WINTYPES;
-private import dwt.internal.ole.win32.COM;
-//private import std.c.windows.windows;
-//private import std.c.windows.com;
-private import dwt.internal.ole.win32.COMTYPES;
-private import dwt.internal.ole.win32.OAIDL;
-private import dwt.internal.ole.win32.OBJIDL;
-private import dwt.internal.ole.win32.OLEIDL;
-private import dwt.internal.ole.win32.DOCOBJ;
-private import dwt.internal.ole.win32.EXDISP;
-private import dwt.internal.ole.win32.MSHTMHST;
-private import dwt.internal.ole.win32.extras;
-
-
-interface IAccessible : IDispatch {
-//	int GetTypeInfoCount(int pctinfo);
-//	int GetTypeInfo(THIS_ UINT itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo);
-//	int GetIDsOfNames - not implemented
-//	int Invoke - not implemented
-	HRESULT get_accParent(LPDISPATCH* ppdispParent);
-	HRESULT get_accChildCount(LONG* pcountChildren);
-	HRESULT get_accChild(VARIANT varChildID, LPDISPATCH* ppdispChild);
-	HRESULT get_accName(VARIANT varID, BSTR* pszName);
-	HRESULT get_accValue(VARIANT varID, BSTR* pszValue);
-	HRESULT get_accDescription(VARIANT varID,BSTR* pszDescription);
-	HRESULT get_accRole(VARIANT varID, VARIANT* pvarRole);
-	HRESULT get_accState(VARIANT varID, VARIANT* pvarState);
-	HRESULT get_accHelp(VARIANT varID, BSTR* pszHelp);
-	HRESULT get_accHelpTopic(BSTR* pszHelpFile, VARIANT varChild, LONG* pidTopic);
-	HRESULT get_accKeyboardShortcut(VARIANT varID, BSTR* pszKeyboardShortcut);
-	HRESULT get_accFocus(VARIANT* pvarID);
-	HRESULT get_accSelection(VARIANT* pvarChildren);
-	HRESULT get_accDefaultAction(VARIANT varID,BSTR* pszDefaultAction);
-	HRESULT accSelect(LONG flagsSelect, VARIANT varID);
-	HRESULT accLocation(LONG* pxLeft, LONG* pyTop, LONG* pcxWidth, LONG* pcyHeight, VARIANT varID);
-	HRESULT accNavigate(LONG navDir, VARIANT varStart, VARIANT* pvarEnd);
-	HRESULT accHitTest(LONG xLeft,  LONG yTop, VARIANT* pvarID);
-	HRESULT accDoDefaultAction(VARIANT varID);
-	HRESULT put_accName(VARIANT varID, BSTR* szName);
-	HRESULT put_accValue(VARIANT varID, BSTR* szValue);
-}
-alias IAccessible LPACCESSIBLE;
-
-interface IClassFactory2 : IClassFactory
-{
-	HRESULT GetLicInfo(LICINFO * pLicInfo);
-	HRESULT RequestLicKey(DWORD dwReserved, BSTR * pbstrKey);
-	HRESULT CreateInstanceLic(LPUNKNOWN pUnkOuter, LPUNKNOWN pUnkReserved, REFIID riid, BSTR bstrKey, void ** ppvObject);
-}
-alias IClassFactory2 LPCLASSFACTORY2;
-
-
-interface IConnectionPoint : IUnknown
-{
-	HRESULT GetConnectionInterface(IID * pIID);
-	HRESULT GetConnectionPointContainer(LPCONNECTIONPOINTCONTAINER * ppCPC);
-	HRESULT Advise(LPUNKNOWN pUnk, DWORD * pdwCookie);
-	HRESULT Unadvise(DWORD dwCookie);
-	HRESULT EnumConnections(LPENUMCONNECTIONS * ppEnum);
-}
-alias IConnectionPoint LPCONNECTIONPOINT;
-
-
-interface IConnectionPointContainer : IUnknown
-{
-	HRESULT EnumConnectionPoints(LPENUMCONNECTIONPOINTS * ppEnum);
-	HRESULT FindConnectionPoint(REFIID riid, LPCONNECTIONPOINT * ppCP);
-}
-alias IConnectionPointContainer LPCONNECTIONPOINTCONTAINER;
-
-interface IEnumConnectionPoints : IUnknown
-{
-	HRESULT Next(ULONG celt, LPCONNECTIONPOINT * rgelt, ULONG * pceltFetched);
-	HRESULT Skip(ULONG celt);
-	HRESULT Reset();
-	HRESULT Clone(LPENUMCONNECTIONPOINTS * ppenum);
-}
-alias IEnumConnectionPoints LPENUMCONNECTIONPOINTS;
-
-interface IEnumConnections : IUnknown {
-	HRESULT Next(ULONG cConnections, CONNECTDATA ** rgpcd, ULONG * pcFetched);
-	HRESULT Skip(ULONG cConnections);
-	HRESULT Reset();
-	HRESULT Clone(LPENUMCONNECTIONS * ppEnum);
-}alias IEnumConnections LPENUMCONNECTIONS;
-
-interface IEnumVARIANT : IUnknown {
-    HRESULT Next(ULONG celt, VARIANT *rgelt, ULONG *pceltFetched);
-    HRESULT Skip(ULONG celt);
-    HRESULT Reset();
-    HRESULT Clone(LPENUMVARIANT * ppenum);
-}
-alias IEnumVARIANT LPENUMVARIANT;
-
-
-interface IInternetSecurityManager : IUnknown {
-	HRESULT SetSecuritySite(LPINTERNETSECURITYMGRSITE pSite);
-	HRESULT GetSecuritySite(LPINTERNETSECURITYMGRSITE *ppSite);
-	HRESULT MapUrlToZone(LPCWSTR pwszUrl, DWORD *pdwZone, DWORD dwFlags);
-	HRESULT GetSecurityId(LPCWSTR pwszUrl, BYTE *pbSecurityId, DWORD *pcbSecurityId, DWORD_PTR dwReserved);
-	HRESULT ProcessUrlAction(LPCWSTR pwszUrl, DWORD dwAction, BYTE *pPolicy, DWORD cbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwFlags, DWORD dwReserved);
-	HRESULT QueryCustomPolicy(LPCWSTR pwszUrl, REFGUID guidKey, BYTE **ppPolicy, DWORD *pcbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwReserved);
-	HRESULT SetZoneMapping(DWORD dwZone, LPCWSTR lpszPattern, DWORD dwFlags);
-	HRESULT GetZoneMappings(DWORD dwZone, LPENUMSTRING * ppenumString, DWORD dwFlags);
-}
-interface IInternetSecurityMgrSite : IUnknown {
-	HRESULT EnableModeless(BOOL fEnable);
-	HRESULT GetWindow(HWND *phwnd);
-}
-alias IInternetSecurityMgrSite LPINTERNETSECURITYMGRSITE;
-
-interface IOleControl : IUnknown
-{
-	HRESULT GetControlInfo(CONTROLINFO* pCI);
-	HRESULT OnMnemonic(LPMSG pMsg);
-	HRESULT OnAmbientPropertyChange(DISPID dispID);
-	HRESULT FreezeEvents(BOOL bFreeze);
-}
-alias IOleControl LPOLECONTROL;
-
-
-interface IOleControlSite : IUnknown {
-	HRESULT OnControlInfoChanged();
-	HRESULT LockInPlaceActive(
-	  BOOL fLock  //Indicates whether to ensure the active state
-	);
-	HRESULT GetExtendedControl(
-	  LPDISPATCH* ppDisp  //Address of output variable that receives the
-	                  // IDispatch interface pointer
-	);
-	HRESULT TransformCoords(
-	  POINTL* pPtlHimetric ,  //Address of POINTL structure
-	  POINTF* pPtfContainer ,  //Address of POINTF structure
-	  DWORD dwFlags           //Flags indicating the exact conversion
-	);
-	HRESULT TranslateAccelerator(
-	  LPMSG pMsg ,        //Pointer to the structure
-	  DWORD grfModifiers  //Flags describing the state of the keys
-	);
-	HRESULT OnFocus(
-	  BOOL fGotFocus  //Indicates whether the control gained focus
-	);
-	HRESULT ShowPropertyFrame();
-}
-alias IOleControlSite LPOLECONTROLSITE;
-
-
-interface IPersistStreamInit : IPersist {
-	HRESULT IsDirty();
-	HRESULT Load(LPSTREAM pStm);
-	HRESULT Save(LPSTREAM pStm, BOOL fClearDirty);
-	HRESULT GetSizeMax(ULARGE_INTEGER * pcbSize);
-	HRESULT InitNew();
-}
-
-interface IPropertyNotifySink : IUnknown {
-	HRESULT OnChanged(DISPID dispID);
-	HRESULT OnRequestEdit(DISPID dispID);
-}
-alias IPropertyNotifySink LPPROPERTYNOTIFYSINK;
-
-interface IProvideClassInfo : IUnknown
-{
-	HRESULT GetClassInfo(LPTYPEINFO * ppTI);
-}
-alias IProvideClassInfo LPPROVIDECLASSINFO;
-
-interface IProvideClassInfo2 : IProvideClassInfo
-{
-	HRESULT GetGUID(DWORD dwGuidKind, GUID * pGUID);
-}
-alias IProvideClassInfo2 LPPROVIDECLASSINFO2;
-
-
-/*
-interface IDocHostUIHandler : IUnknown
-{
-	int ShowContextMenu( int dwID, POINT* ppt, ComObj pcmdtReserved, ComObj pdispReserved);
-	int GetHostInfo( int pInfo );
-	int ShowUI( int dwID, ComObj pActiveObject, ComObj pCommandTarget, ComObj pFrame, ComObj pDoc );
-	int HideUI();
-	int UpdateUI();
-	int EnableModeless( int fEnable );
-	int OnDocWindowActivate( int fActivate );
-	int OnFrameWindowActivate( int fActivate );
-	int ResizeBorder( RECT* prcBorder, ComObj pUIWindow, int fRameWindow );
-	int TranslateAccelerator( int lpMsg, int pguidCmdGroup, int nCmdID );
-	int GetOptionKeyPath( int  pchKey, int dw );
-	int GetDropTarget( ComObj pDropTarget, ComObj* ppDropTarget );
-	int GetExternal( ComObj** ppDispatch );
-	int TranslateUrl( int dwTranslate, int pchURLIn, int ppchURLOut );
-	int FilterDataObject( ComObj pDO, ComObj* ppDORet );
-}
-
-interface IDocHostShowUI : IUnknown
-{
-	int ShowMessage( HWND hwnd, wchar* lpstrText, int lpstrCaption, int dwType, int lpstrHelpFile, int dwHelpContext, int plResult);
-	int ShowHelp( HWND hwnd, int pszHelpFile, int uCommand, int dwData, long ptMouse, ComObj pDispatchObjectHit );
-}
-*/
-interface IServiceProvider : IUnknown {
-	HRESULT QueryService(REFGUID guidService, REFIID riid, void **ppv);
-}
-alias IServiceProvider LPSERVICEPROVIDER;
-
-interface ISpecifyPropertyPages : IUnknown {
-	HRESULT GetPages(
-  		CAUUID *pPages  //Pointer to structure
-	);
-}
-alias ISpecifyPropertyPages LPSPECIFYPROPERTYPAGES;
-
-
-
-
-
-
-
-/*
-interface IEnumFORMATETC : IEnumXXXX {}
-
-
-interface IDataObject : IUnknown {
-	int GetData(int pFormatetc, int pmedium);
-	int GetDataHere(FORMATETC* pFormatetc, STGMEDIUM* pmedium);
-	int QueryGetData(FORMATETC* pFormatetc);
-	int GetCanonicalFormatEtc(int pFormatetcIn, int pFormatetcOut);
-	int SetData(int pFormatetc, int pmedium, int fRelease);
-	int EnumFormatEtc(int dwDirection, int ppenumFormatetc);
-	int DAdvise(int pFormatetc, int advf, int pAdvSink, int pdwConnection);
-	int DUnadvise(int dwConnection);
-	int EnumDAdvise(ComObj* ppenumAdvise);
-}
-
-interface IDropSource : IUnknown {
-	int QueryContinueDrag(int fEscapePressed, int grfKeyState);
-	int GiveFeedback(int dwEffect);
-}
-
-interface IDropTarget : IUnknown {
-	// NOTE : POINT* is splited to pt_x, pt_y
-	int DragEnter(ComObj pDataObject, int grfKeyState, int pt_x, int pt_y, int pdwEffect);
-	int DragOver(int grfKeyState, int pt_x,	int pt_y, int pdwEffect);
-	int DragLeave();
-	int Drop(ComObj pDataObject, int grfKeyState, int pt_x, int pt_y, int pdwEffect);
-}
-*/
\ No newline at end of file
+/*
+ * extra interface not define in any other modules, copied from MSDN 2003
+ * don't import this module directly, import std.internal.ole.win32.com instead
+ *
+ * author : Shawn Liu
+ */
+
+module dwt.internal.ole.win32.ifs;
+
+private import dwt.DWT;
+private import dwt.internal.win32.WINTYPES;
+private import dwt.internal.ole.win32.COM;
+//private import std.c.windows.windows;
+//private import std.c.windows.com;
+private import dwt.internal.ole.win32.COMTYPES;
+private import dwt.internal.ole.win32.OAIDL;
+private import dwt.internal.ole.win32.OBJIDL;
+private import dwt.internal.ole.win32.OLEIDL;
+private import dwt.internal.ole.win32.DOCOBJ;
+private import dwt.internal.ole.win32.EXDISP;
+private import dwt.internal.ole.win32.MSHTMHST;
+private import dwt.internal.ole.win32.extras;
+
+
+interface IAccessible : IDispatch {
+//	int GetTypeInfoCount(int pctinfo);
+//	int GetTypeInfo(THIS_ UINT itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo);
+//	int GetIDsOfNames - not implemented
+//	int Invoke - not implemented
+	HRESULT get_accParent(LPDISPATCH* ppdispParent);
+	HRESULT get_accChildCount(LONG* pcountChildren);
+	HRESULT get_accChild(VARIANT varChildID, LPDISPATCH* ppdispChild);
+	HRESULT get_accName(VARIANT varID, BSTR* pszName);
+	HRESULT get_accValue(VARIANT varID, BSTR* pszValue);
+	HRESULT get_accDescription(VARIANT varID,BSTR* pszDescription);
+	HRESULT get_accRole(VARIANT varID, VARIANT* pvarRole);
+	HRESULT get_accState(VARIANT varID, VARIANT* pvarState);
+	HRESULT get_accHelp(VARIANT varID, BSTR* pszHelp);
+	HRESULT get_accHelpTopic(BSTR* pszHelpFile, VARIANT varChild, LONG* pidTopic);
+	HRESULT get_accKeyboardShortcut(VARIANT varID, BSTR* pszKeyboardShortcut);
+	HRESULT get_accFocus(VARIANT* pvarID);
+	HRESULT get_accSelection(VARIANT* pvarChildren);
+	HRESULT get_accDefaultAction(VARIANT varID,BSTR* pszDefaultAction);
+	HRESULT accSelect(LONG flagsSelect, VARIANT varID);
+	HRESULT accLocation(LONG* pxLeft, LONG* pyTop, LONG* pcxWidth, LONG* pcyHeight, VARIANT varID);
+	HRESULT accNavigate(LONG navDir, VARIANT varStart, VARIANT* pvarEnd);
+	HRESULT accHitTest(LONG xLeft,  LONG yTop, VARIANT* pvarID);
+	HRESULT accDoDefaultAction(VARIANT varID);
+	HRESULT put_accName(VARIANT varID, BSTR* szName);
+	HRESULT put_accValue(VARIANT varID, BSTR* szValue);
+}
+alias IAccessible LPACCESSIBLE;
+
+interface IClassFactory2 : IClassFactory
+{
+	HRESULT GetLicInfo(LICINFO * pLicInfo);
+	HRESULT RequestLicKey(DWORD dwReserved, BSTR * pbstrKey);
+	HRESULT CreateInstanceLic(LPUNKNOWN pUnkOuter, LPUNKNOWN pUnkReserved, REFIID riid, BSTR bstrKey, void ** ppvObject);
+}
+alias IClassFactory2 LPCLASSFACTORY2;
+
+
+interface IConnectionPoint : IUnknown
+{
+	HRESULT GetConnectionInterface(IID * pIID);
+	HRESULT GetConnectionPointContainer(LPCONNECTIONPOINTCONTAINER * ppCPC);
+	HRESULT Advise(LPUNKNOWN pUnk, DWORD * pdwCookie);
+	HRESULT Unadvise(DWORD dwCookie);
+	HRESULT EnumConnections(LPENUMCONNECTIONS * ppEnum);
+}
+alias IConnectionPoint LPCONNECTIONPOINT;
+
+
+interface IConnectionPointContainer : IUnknown
+{
+	HRESULT EnumConnectionPoints(LPENUMCONNECTIONPOINTS * ppEnum);
+	HRESULT FindConnectionPoint(REFIID riid, LPCONNECTIONPOINT * ppCP);
+}
+alias IConnectionPointContainer LPCONNECTIONPOINTCONTAINER;
+
+interface IEnumConnectionPoints : IUnknown
+{
+	HRESULT Next(ULONG celt, LPCONNECTIONPOINT * rgelt, ULONG * pceltFetched);
+	HRESULT Skip(ULONG celt);
+	HRESULT Reset();
+	HRESULT Clone(LPENUMCONNECTIONPOINTS * ppenum);
+}
+alias IEnumConnectionPoints LPENUMCONNECTIONPOINTS;
+
+interface IEnumConnections : IUnknown {
+	HRESULT Next(ULONG cConnections, CONNECTDATA ** rgpcd, ULONG * pcFetched);
+	HRESULT Skip(ULONG cConnections);
+	HRESULT Reset();
+	HRESULT Clone(LPENUMCONNECTIONS * ppEnum);
+}alias IEnumConnections LPENUMCONNECTIONS;
+
+interface IEnumVARIANT : IUnknown {
+    HRESULT Next(ULONG celt, VARIANT *rgelt, ULONG *pceltFetched);
+    HRESULT Skip(ULONG celt);
+    HRESULT Reset();
+    HRESULT Clone(LPENUMVARIANT * ppenum);
+}
+alias IEnumVARIANT LPENUMVARIANT;
+
+
+interface IInternetSecurityManager : IUnknown {
+	HRESULT SetSecuritySite(LPINTERNETSECURITYMGRSITE pSite);
+	HRESULT GetSecuritySite(LPINTERNETSECURITYMGRSITE *ppSite);
+	HRESULT MapUrlToZone(LPCWSTR pwszUrl, DWORD *pdwZone, DWORD dwFlags);
+	HRESULT GetSecurityId(LPCWSTR pwszUrl, BYTE *pbSecurityId, DWORD *pcbSecurityId, DWORD_PTR dwReserved);
+	HRESULT ProcessUrlAction(LPCWSTR pwszUrl, DWORD dwAction, BYTE *pPolicy, DWORD cbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwFlags, DWORD dwReserved);
+	HRESULT QueryCustomPolicy(LPCWSTR pwszUrl, REFGUID guidKey, BYTE **ppPolicy, DWORD *pcbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwReserved);
+	HRESULT SetZoneMapping(DWORD dwZone, LPCWSTR lpszPattern, DWORD dwFlags);
+	HRESULT GetZoneMappings(DWORD dwZone, LPENUMSTRING * ppenumString, DWORD dwFlags);
+}
+interface IInternetSecurityMgrSite : IUnknown {
+	HRESULT EnableModeless(BOOL fEnable);
+	HRESULT GetWindow(HWND *phwnd);
+}
+alias IInternetSecurityMgrSite LPINTERNETSECURITYMGRSITE;
+
+interface IOleControl : IUnknown
+{
+	HRESULT GetControlInfo(CONTROLINFO* pCI);
+	HRESULT OnMnemonic(LPMSG pMsg);
+	HRESULT OnAmbientPropertyChange(DISPID dispID);
+	HRESULT FreezeEvents(BOOL bFreeze);
+}
+alias IOleControl LPOLECONTROL;
+
+
+interface IOleControlSite : IUnknown {
+	HRESULT OnControlInfoChanged();
+	HRESULT LockInPlaceActive(
+	  BOOL fLock  //Indicates whether to ensure the active state
+	);
+	HRESULT GetExtendedControl(
+	  LPDISPATCH* ppDisp  //Address of output variable that receives the
+	                  // IDispatch interface pointer
+	);
+	HRESULT TransformCoords(
+	  POINTL* pPtlHimetric ,  //Address of POINTL structure
+	  POINTF* pPtfContainer ,  //Address of POINTF structure
+	  DWORD dwFlags           //Flags indicating the exact conversion
+	);
+	HRESULT TranslateAccelerator(
+	  LPMSG pMsg ,        //Pointer to the structure
+	  DWORD grfModifiers  //Flags describing the state of the keys
+	);
+	HRESULT OnFocus(
+	  BOOL fGotFocus  //Indicates whether the control gained focus
+	);
+	HRESULT ShowPropertyFrame();
+}
+alias IOleControlSite LPOLECONTROLSITE;
+
+
+interface IPersistStreamInit : IPersist {
+	HRESULT IsDirty();
+	HRESULT Load(LPSTREAM pStm);
+	HRESULT Save(LPSTREAM pStm, BOOL fClearDirty);
+	HRESULT GetSizeMax(ULARGE_INTEGER * pcbSize);
+	HRESULT InitNew();
+}
+
+interface IPropertyNotifySink : IUnknown {
+	HRESULT OnChanged(DISPID dispID);
+	HRESULT OnRequestEdit(DISPID dispID);
+}
+alias IPropertyNotifySink LPPROPERTYNOTIFYSINK;
+
+interface IProvideClassInfo : IUnknown
+{
+	HRESULT GetClassInfo(LPTYPEINFO * ppTI);
+}
+alias IProvideClassInfo LPPROVIDECLASSINFO;
+
+interface IProvideClassInfo2 : IProvideClassInfo
+{
+	HRESULT GetGUID(DWORD dwGuidKind, GUID * pGUID);
+}
+alias IProvideClassInfo2 LPPROVIDECLASSINFO2;
+
+
+/*
+interface IDocHostUIHandler : IUnknown
+{
+	int ShowContextMenu( int dwID, POINT* ppt, ComObj pcmdtReserved, ComObj pdispReserved);
+	int GetHostInfo( int pInfo );
+	int ShowUI( int dwID, ComObj pActiveObject, ComObj pCommandTarget, ComObj pFrame, ComObj pDoc );
+	int HideUI();
+	int UpdateUI();
+	int EnableModeless( int fEnable );
+	int OnDocWindowActivate( int fActivate );
+	int OnFrameWindowActivate( int fActivate );
+	int ResizeBorder( RECT* prcBorder, ComObj pUIWindow, int fRameWindow );
+	int TranslateAccelerator( int lpMsg, int pguidCmdGroup, int nCmdID );
+	int GetOptionKeyPath( int  pchKey, int dw );
+	int GetDropTarget( ComObj pDropTarget, ComObj* ppDropTarget );
+	int GetExternal( ComObj** ppDispatch );
+	int TranslateUrl( int dwTranslate, int pchURLIn, int ppchURLOut );
+	int FilterDataObject( ComObj pDO, ComObj* ppDORet );
+}
+
+interface IDocHostShowUI : IUnknown
+{
+	int ShowMessage( HWND hwnd, wchar* lpstrText, int lpstrCaption, int dwType, int lpstrHelpFile, int dwHelpContext, int plResult);
+	int ShowHelp( HWND hwnd, int pszHelpFile, int uCommand, int dwData, long ptMouse, ComObj pDispatchObjectHit );
+}
+*/
+interface IServiceProvider : IUnknown {
+	HRESULT QueryService(REFGUID guidService, REFIID riid, void **ppv);
+}
+alias IServiceProvider LPSERVICEPROVIDER;
+
+interface ISpecifyPropertyPages : IUnknown {
+	HRESULT GetPages(
+  		CAUUID *pPages  //Pointer to structure
+	);
+}
+alias ISpecifyPropertyPages LPSPECIFYPROPERTYPAGES;
+
+
+
+
+
+
+
+/*
+interface IEnumFORMATETC : IEnumXXXX {}
+
+
+interface IDataObject : IUnknown {
+	int GetData(int pFormatetc, int pmedium);
+	int GetDataHere(FORMATETC* pFormatetc, STGMEDIUM* pmedium);
+	int QueryGetData(FORMATETC* pFormatetc);
+	int GetCanonicalFormatEtc(int pFormatetcIn, int pFormatetcOut);
+	int SetData(int pFormatetc, int pmedium, int fRelease);
+	int EnumFormatEtc(int dwDirection, int ppenumFormatetc);
+	int DAdvise(int pFormatetc, int advf, int pAdvSink, int pdwConnection);
+	int DUnadvise(int dwConnection);
+	int EnumDAdvise(ComObj* ppenumAdvise);
+}
+
+interface IDropSource : IUnknown {
+	int QueryContinueDrag(int fEscapePressed, int grfKeyState);
+	int GiveFeedback(int dwEffect);
+}
+
+interface IDropTarget : IUnknown {
+	// NOTE : POINT* is splited to pt_x, pt_y
+	int DragEnter(ComObj pDataObject, int grfKeyState, int pt_x, int pt_y, int pdwEffect);
+	int DragOver(int grfKeyState, int pt_x,	int pt_y, int pdwEffect);
+	int DragLeave();
+	int Drop(ComObj pDataObject, int grfKeyState, int pt_x, int pt_y, int pdwEffect);
+}
+*/
--- a/dwt/internal/opengl/win32/native.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/opengl/win32/native.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,26 +1,26 @@
-module dwt.internal.opengl.win32.native;
-
-private import dwt.internal.win32.WINTYPES;
-
-extern (Windows):
-
-int     ChoosePixelFormat( HDC, PIXELFORMATDESCRIPTOR* );
-int     DescribePixelFormat( HDC, int, UINT, PIXELFORMATDESCRIPTOR* );
-int     GetPixelFormat( HDC );
-BOOL    SetPixelFormat( HDC, int, PIXELFORMATDESCRIPTOR* );
-BOOL    SwapBuffers( HDC );
-
-BOOL    wglCopyContext(HGLRC, HGLRC, UINT);
-HGLRC   wglCreateContext(HDC);
-HGLRC   wglCreateLayerContext(HDC, int);
-BOOL    wglDeleteContext(HGLRC);
-BOOL    wglDescribeLayerPlane(HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR);
-HGLRC   wglGetCurrentContext();
-HDC     wglGetCurrentDC();
-int     wglGetLayerPaletteEntries(HDC, int, int, int, COLORREF*);
-FARPROC wglGetProcAddress(LPCSTR);
-BOOL    wglMakeCurrent(HDC, HGLRC);
-BOOL    wglRealizeLayerPalette(HDC, int, BOOL);
-int     wglSetLayerPaletteEntries(HDC, int, int, int, COLORREF*);
-BOOL    wglShareLists(HGLRC, HGLRC);
-BOOL    wglSwapLayerBuffers(HDC, UINT);
\ No newline at end of file
+module dwt.internal.opengl.win32.native;
+
+private import dwt.internal.win32.WINTYPES;
+
+extern (Windows):
+
+int     ChoosePixelFormat( HDC, PIXELFORMATDESCRIPTOR* );
+int     DescribePixelFormat( HDC, int, UINT, PIXELFORMATDESCRIPTOR* );
+int     GetPixelFormat( HDC );
+BOOL    SetPixelFormat( HDC, int, PIXELFORMATDESCRIPTOR* );
+BOOL    SwapBuffers( HDC );
+
+BOOL    wglCopyContext(HGLRC, HGLRC, UINT);
+HGLRC   wglCreateContext(HDC);
+HGLRC   wglCreateLayerContext(HDC, int);
+BOOL    wglDeleteContext(HGLRC);
+BOOL    wglDescribeLayerPlane(HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR);
+HGLRC   wglGetCurrentContext();
+HDC     wglGetCurrentDC();
+int     wglGetLayerPaletteEntries(HDC, int, int, int, COLORREF*);
+FARPROC wglGetProcAddress(LPCSTR);
+BOOL    wglMakeCurrent(HDC, HGLRC);
+BOOL    wglRealizeLayerPalette(HDC, int, BOOL);
+int     wglSetLayerPaletteEntries(HDC, int, int, int, COLORREF*);
+BOOL    wglShareLists(HGLRC, HGLRC);
+BOOL    wglSwapLayerBuffers(HDC, UINT);
--- a/dwt/internal/win32/WINTYPES.d	Tue Jul 01 10:15:59 2008 +0200
+++ b/dwt/internal/win32/WINTYPES.d	Tue Jul 01 10:18:15 2008 +0200
@@ -1,15755 +1,15755 @@
-/*
- * This module declared types required by DWT but not in std.c.windows.windows
- */
-
-module dwt.internal.win32.WINTYPES;
-
-/*
-    adopted form tango
-    Author:     Trevor Parscal
-*/
-
-/+ Aliases, Types, and Constants +/
-const void* NULL = null;
-alias int SCODE;
-alias void VOID;
-alias void* POINTER;
-alias ushort ATOM;
-alias int WINBOOL;
-alias WINBOOL BOOL;
-alias uint CALTYPE;
-alias uint CALID;
-alias ubyte CCHAR;
-alias ubyte* PCHAR;
-alias uint COLORREF;
-alias uint TCOLORREF;
-alias ubyte CHAR;
-alias ubyte BYTE;
-alias short INT16;
-alias ushort UINT16;
-alias short SHORT;
-alias int INT;
-alias int WINT;
-alias int LONG;
-alias ushort WORD;
-alias uint DWORD;
-alias int INT_PTR;
-alias uint UINT_PTR;
-alias int LONG_PTR;
-alias uint ULONG_PTR;
-alias uint PROPID;
-const BOOL FALSE = 0;
-const BOOL TRUE = -1;
-alias ubyte* PANSICHAR;
-alias wchar* PWIDECHAR;
-alias int* PINTEGER;
-alias long LONGLONG;
-alias LONGLONG* PLONGLONG;
-alias ulong DWORDLONG;
-alias DWORDLONG* PDWORDLONG;
-alias float FLOAT;
-alias void* HANDLE;
-alias HANDLE HACCEL;
-alias HANDLE HBITMAP;
-alias HANDLE HBRUSH;
-alias HANDLE HCOLORSPACE;
-alias HANDLE HCONV;
-alias HANDLE HCONVLIST;
-alias HANDLE HCURSOR;
-alias HANDLE HDBC;
-alias HANDLE HDC;
-alias HANDLE HDDEDATA;
-alias HANDLE HDESK;
-alias HANDLE HDROP;
-alias HANDLE HDWP;
-alias HANDLE HENHMETAFILE;
-alias HANDLE HENV;
-alias HANDLE HFILE;
-alias HANDLE HFONT;
-alias HANDLE HGDIOBJ;
-alias HANDLE HGLOBAL;
-alias HANDLE HGLRC;
-alias HANDLE HHOOK;
-alias HANDLE HICON;
-alias HANDLE HIMAGELIST;
-alias HANDLE HINST;
-alias HINST HINSTANCE;
-alias HANDLE HKEY;
-alias HANDLE HKL;
-alias HANDLE HLOCAL;
-alias HANDLE HMENU;
-alias HANDLE HMETAFILE;
-alias HANDLE HMODULE;
-alias HANDLE HPALETTE;
-alias HANDLE HPEN;
-alias HANDLE HRASCONN;
-alias int HRESULT;
-alias HANDLE HRGN;
-alias HANDLE HRSRC;
-alias HANDLE HSTMT;
-alias HANDLE HSZ;
-alias HANDLE HWINSTA;
-alias HANDLE HWND;
-alias ushort LANGID;
-alias DWORD LCID;
-alias DWORD LCTYPE;
-alias int LPARAM;
-alias ushort* LP;
-alias WINBOOL* LPBOOL;
-alias ubyte* LPBYTE;
-alias PCHAR LPCCH;
-alias PCHAR LPCH;
-alias COLORREF* LPCOLORREF;
-alias PCHAR LPCSTR;
-alias TCHAR* LPCTSTR;
-alias wchar* LPCWCH;
-alias wchar* LPCWSTR;
-alias DWORD* LPDWORD;
-alias HANDLE* LPHANDLE;
-alias int* LPINT;
-alias int* LPLONG;
-alias PCHAR LPSTR;
-alias PCHAR LPTCH;
-alias TCHAR* LPTSTR;
-alias int LRESULT;
-alias POINTER LPVOID;
-alias POINTER LPCVOID;
-alias wchar* LPWCH;
-alias wchar* LPWORD;
-alias wchar* LPWSTR;
-alias wchar* NWPSTR;
-alias WINBOOL* PWINBOOL;
-alias ubyte* PBOOLEAN;
-alias ubyte* PBYTE;
-alias PCHAR PCCH;
-alias PCHAR PCH;
-alias PCHAR PCSTR;
-alias wchar* PCWCH;
-alias wchar* PCWSTR;
-alias DWORD* PDWORD;
-alias float* PFLOAT;
-alias HANDLE* PHANDLE;
-alias HKEY* PHKEY;
-alias int* PINT;
-alias int* PLONG;
-alias int* PSHORT;
-alias PCHAR PSTR;
-alias PCHAR PSZ;
-alias ubyte* PTBYTE;
-alias PCHAR PTCH;
-alias PCHAR PTCHAR;
-alias PCHAR PTSTR;
-alias ubyte* PUCHAR;
-alias wchar* PWCH;
-alias wchar* PWCHAR;
-alias ushort* PWORD;
-alias uint* PUINT;
-alias uint* PULONG;
-alias ushort* PUSHORT;
-alias POINTER PVOID;
-// NOTE: This is defined in sqltypes.  Probably shouldn't be here.  Commenting for now.
-//alias int RETCODE;
-alias HANDLE SC_HANDLE;
-alias LPVOID SC_LOCK;
-alias SC_HANDLE* LPSC_HANDLE;
-alias DWORD SERVICE_STATUS_HANDLE;
-alias ubyte TBYTE;
-
-version(Win32SansUnicode){
-    alias ubyte  TCHAR;
-}else{
-    alias wchar TCHAR;
-}
-
-alias ubyte BCHAR;
-alias ubyte UCHAR;
-alias wchar WCHAR;
-alias uint UINT;
-alias uint ULONG;
-alias ushort USHORT;
-alias uint WPARAM;
-alias int ACL_INFORMATION_CLASS;
-
-alias GUID IID;
-alias IID* REFIID;
-
-// Cast a string literal to a ubyte*=PCHAR
-template _PCHAR( char[] a ){
-    const PCHAR _PCHAR = cast(PCHAR)a.ptr;
-}
-
-enum { AclRevisionInformation = 1, AclSizeInformation,  };
-alias ACL_INFORMATION_CLASS _ACL_INFORMATION_CLASS;
-alias int MEDIA_TYPE;
-enum { Unknown, F5_1Pt2_512, F3_1Pt44_512, F3_2Pt88_512, F3_20Pt8_512, F3_720_512, F5_360_512, F5_320_512, F5_320_1024, F5_180_512, F5_160_512, RemovableMedia, FixedMedia,  };
-alias MEDIA_TYPE _MEDIA_TYPE;
-const int RASCS_DONE = (0x2000);
-const int RASCS_PAUSED = (0x1000);
-alias int RASCONNSTATE;
-enum { RASCS_OpenPort = 0, RASCS_PortOpened, RASCS_ConnectDevice, RASCS_DeviceConnected, RASCS_AllDevicesConnected, RASCS_Authenticate, RASCS_AuthNotify, RASCS_AuthRetry, RASCS_AuthCallback, RASCS_AuthChangePassword, RASCS_AuthProject, RASCS_AuthLinkSpeed, RASCS_AuthAck, RASCS_ReAuthenticate, RASCS_Authenticated, RASCS_PrepareForCallback, RASCS_WaitForModemReset, RASCS_WaitForCallback, RASCS_Projected, RASCS_StartAuthentication, RASCS_CallbackComplete, RASCS_LogonNetwork, RASCS_Interactive = RASCS_PAUSED, RASCS_RetryAuthentication, RASCS_CallbackSetByCaller, RASCS_PasswordExpired, RASCS_Connected = RASCS_DONE, RASCS_Disconnected,  };
-alias RASCONNSTATE _RASCONNSTATE;
-alias int RASPROJECTION;
-enum { RASP_Amb = 0x10000, RASP_PppNbf = 0x803F, RASP_PppIpx = 0x802B, RASP_PppIp = 0x8021,  };
-alias RASPROJECTION _RASPROJECTION;
-alias int SECURITY_IMPERSONATION_LEVEL;
-enum { SecurityAnonymous, SecurityIdentification, SecurityImpersonation, SecurityDelegation,  };
-alias SECURITY_IMPERSONATION_LEVEL _SECURITY_IMPERSONATION_LEVEL;
-alias int SID_NAME_USE;
-enum { SidTypeUser = 1, SidTypeGroup, SidTypeDomain, SidTypeAlias, SidTypeWellKnownGroup, SidTypeDeletedAccount, SidTypeInvalid, SidTypeUnknown,  };
-alias SID_NAME_USE* PSID_NAME_USE;
-alias SID_NAME_USE _SID_NAME_USE;
-alias int TOKEN_INFORMATION_CLASS;
-enum { TokenUser = 1, TokenGroups, TokenPrivileges, TokenOwner, TokenPrimaryGroup, TokenDefaultDacl, TokenSource, TokenType, TokenImpersonationLevel, TokenStatistics,  };
-alias TOKEN_INFORMATION_CLASS _TOKEN_INFORMATION_CLASS;
-alias int TOKEN_TYPE;
-enum { TokenPrimary = 1, TokenImpersonation,  };
-alias TOKEN_TYPE TAGTOKEN_TYPE;
-
-extern(Windows){
-alias int (*BFFCALLBACK)(HWND, UINT, LPARAM, LPARAM);
-alias UINT (*LPCCHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
-alias UINT (*LPCFHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
-alias POINTER PTHREAD_START_ROUTINE;
-alias PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
-alias DWORD (*EDITSTREAMCALLBACK)(DWORD, LPBYTE, LONG, LONG);
-alias UINT (*LPFRHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
-alias UINT (*LPOFNHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
-alias UINT (*LPPRINTHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
-alias UINT (*LPSETUPHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
-alias LRESULT (*DLGPROC)(HWND, UINT, WPARAM, LPARAM);
-alias int (*PFNPROPSHEETCALLBACK)(HWND, UINT, LPARAM);
-alias void (*LPSERVICE_MAIN_FUNCTION)(DWORD);
-alias int (*PFNTVCOMPARE)(LPARAM, LPARAM, LPARAM);
-alias LRESULT (*WNDPROC)(HWND, UINT, WPARAM, LPARAM);
-alias POINTER FARPROC;
-alias FARPROC PROC;
-alias WINBOOL (*ENUMRESTYPEPROC)(HANDLE, LPTSTR, LONG);
-alias WINBOOL (*ENUMRESNAMEPROC)(HANDLE, LPCTSTR, LPTSTR, LONG);
-alias WINBOOL (*ENUMRESLANGPROC)(HANDLE, LPCTSTR, LPCTSTR, ushort, LONG);
-alias FARPROC DESKTOPENUMPROC;
-alias WINBOOL (*ENUMWINDOWSPROC)(HWND, LPARAM);
-alias WINBOOL (*ENUMWINDOWSTATIONPROC)(LPTSTR, LPARAM);
-alias void (*SENDASYNCPROC)(HWND, UINT, DWORD);
-alias void (*TIMERPROC)(HWND, UINT, UINT, DWORD);
-alias BOOL(*MONITORENUMPROC)(HMONITOR, HDC, RECT*, LPARAM);
-alias FARPROC GRAYSTRINGPROC;
-alias WINBOOL (*DRAWSTATEPROC)(HDC, LPARAM, WPARAM, int, int);
-alias WINBOOL (*PROPENUMPROCEX)(HWND, LPCTSTR, HANDLE, DWORD);
-alias WINBOOL (*PROPENUMPROC)(HWND, LPCTSTR, HANDLE);
-alias LRESULT (*HOOKPROC)(int, WPARAM, LPARAM);
-alias void (*ENUMOBJECTSPROC)(LPVOID);
-alias void (*LINEDDAPROC)(int, int);
-alias WINBOOL (*TABORTPROC)(HDC, int);
-alias UINT (*LPPAGEPAINTHOOK)(HWND, UINT, WPARAM, LPARAM);
-alias UINT (*LPPAGESETUPHOOK)(HWND, UINT, WPARAM, LPARAM);
-alias int (*ICMENUMPROC)(LPTSTR, LPARAM);
-alias LONG (*EDITWORDBREAKPROCEX)(PCHAR, LONG, ubyte, INT);
-alias int (*PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
-alias WINBOOL (*LOCALE_ENUMPROC)(LPTSTR);
-alias WINBOOL (*CODEPAGE_ENUMPROC)(LPTSTR);
-alias WINBOOL (*DATEFMT_ENUMPROC)(LPTSTR);
-alias WINBOOL (*TIMEFMT_ENUMPROC)(LPTSTR);
-alias WINBOOL (*CALINFO_ENUMPROC)(LPTSTR);
-alias WINBOOL (*PHANDLER_ROUTINE)(DWORD);
-alias WINBOOL (*LPHANDLER_FUNCTION)(DWORD);
-alias void (*PTIMERAPCROUTINE)(LPVOID, DWORD, DWORD);
-alias UINT (*PFNGETPROFILEPATH)(LPCTSTR, LPSTR, UINT);
-alias UINT (*PFNRECONCILEPROFILE)(LPCTSTR, LPCTSTR, DWORD);
-alias WINBOOL (*PFNPROCESSPOLICIES)(HWND, LPCTSTR, LPCTSTR, LPCTSTR, DWORD);
-}
-
-const {
-    LPCTSTR SE_CREATE_TOKEN_NAME = ("SeCreateTokenPrivilege");
-    LPCTSTR SE_ASSIGNPRIMARYTOKEN_NAME = ("SeAssignPrimaryTokenPrivilege");
-    LPCTSTR SE_LOCK_MEMORY_NAME = ("SeLockMemoryPrivilege");
-    LPCTSTR SE_INCREASE_QUOTA_NAME = ("SeIncreaseQuotaPrivilege");
-    LPCTSTR SE_UNSOLICITED_INPUT_NAME = ("SeUnsolicitedInputPrivilege");
-    LPCTSTR SE_MACHINE_ACCOUNT_NAME = ("SeMachineAccountPrivilege");
-    LPCTSTR SE_TCB_NAME = ("SeTcbPrivilege");
-    LPCTSTR SE_SECURITY_NAME = ("SeSecurityPrivilege");
-    LPCTSTR SE_TAKE_OWNERSHIP_NAME = ("SeTakeOwnershipPrivilege");
-    LPCTSTR SE_LOAD_DRIVER_NAME = ("SeLoadDriverPrivilege");
-    LPCTSTR SE_SYSTEM_PROFILE_NAME = ("SeSystemProfilePrivilege");
-    LPCTSTR SE_SYSTEMTIME_NAME = ("SeSystemtimePrivilege");
-    LPCTSTR SE_PROF_SINGLE_PROCESS_NAME = ("SeProfileSingleProcessPrivilege");
-    LPCTSTR SE_INC_BASE_PRIORITY_NAME = ("SeIncreaseBasePriorityPrivilege");
-    LPCTSTR SE_CREATE_PAGEFILE_NAME = ("SeCreatePagefilePrivilege");
-    LPCTSTR SE_CREATE_PERMANENT_NAME = ("SeCreatePermanentPrivilege");
-    LPCTSTR SE_BACKUP_NAME = ("SeBackupPrivilege");
-    LPCTSTR SE_RESTORE_NAME = ("SeRestorePrivilege");
-    LPCTSTR SE_SHUTDOWN_NAME = ("SeShutdownPrivilege");
-    LPCTSTR SE_DEBUG_NAME = ("SeDebugPrivilege");
-    LPCTSTR SE_AUDIT_NAME = ("SeAuditPrivilege");
-    LPCTSTR SE_SYSTEM_ENVIRONMENT_NAME = ("SeSystemEnvironmentPrivilege");
-    LPCTSTR SE_CHANGE_NOTIFY_NAME = ("SeChangeNotifyPrivilege");
-    LPCTSTR SE_REMOTE_SHUTDOWN_NAME = ("SeRemoteShutdownPrivilege");
-
-    LPCSTR  SERVICES_ACTIVE_DATABASEA = _PCHAR!("ServicesActive");
-    LPCWSTR SERVICES_ACTIVE_DATABASEW = ("ServicesActive");
-    LPCSTR  SERVICES_FAILED_DATABASEA = _PCHAR!("ServicesFailed");
-    LPCWSTR SERVICES_FAILED_DATABASEW = ("ServicesFailed");
-    LPCSTR  SC_GROUP_IDENTIFIERA = _PCHAR!("+");
-    LPCWSTR SC_GROUP_IDENTIFIERW = ("+");
-    version(Win32SansUnicode){
-        alias SERVICES_ACTIVE_DATABASEA SERVICES_ACTIVE_DATABASE;
-        alias SERVICES_FAILED_DATABASEA SERVICES_FAILED_DATABASE;
-        alias SC_GROUP_IDENTIFIERA SC_GROUP_IDENTIFIER;
-    }
-    else{
-        alias SERVICES_ACTIVE_DATABASEW SERVICES_ACTIVE_DATABASE;
-        alias SERVICES_FAILED_DATABASEW SERVICES_FAILED_DATABASE;
-        alias SC_GROUP_IDENTIFIERW SC_GROUP_IDENTIFIER;
-    }
-}
-
-extern(Windows){
-alias HDDEDATA (*PFNCALLBACK)(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD);
-}
-alias PFNCALLBACK CALLB;
-alias WINBOOL SECURITY___FILE___TRACKING_MODE;
-alias FARPROC WNDENUMPROC;
-alias FARPROC ENHMFENUMPROC;
-alias DWORD CCSTYLE;
-alias CCSTYLE* PCCSTYLE;
-alias CCSTYLE* LPCCSTYLE;
-alias DWORD CCSTYLEFLAGA;
-alias CCSTYLEFLAGA* PCCSTYLEFLAGA;
-alias CCSTYLEFLAGA* LPCCSTYLEFLAGA;
-
-const HANDLE INVALID_HANDLE_VALUE = cast(HANDLE) -1;
-
-
-enum : DWORD {
-    SM_CXVIRTUALSCREEN = (76),
-    SM_CYVIRTUALSCREEN = (77),
-    MONITORINFOF_PRIMARY = (1),
-    LZERROR_UNKNOWNALG = -((8)),
-    LZERROR_BADVALUE = -((7)),
-    LZERROR_GLOBLOCK = -((6)),
-    LZERROR_GLOBALLOC = -((5)),
-    LZERROR_WRITE = -((4)),
-    LZERROR_READ = -((3)),
-    LZERROR_BADOUTHANDLE = -((2)),
-    LZERROR_BADINHANDLE = -((1)),
-    NO_ERROR = (0),
-    ERROR_SUCCESS = (0),
-    ERROR_INVALID_FUNCTION = (1),
-    ERROR_FILE_NOT_FOUND = (2),
-    ERROR_PATH_NOT_FOUND = (3),
-    ERROR_TOO_MANY_OPEN_FILES = (4),
-    ERROR_ACCESS_DENIED = (5),
-    ERROR_INVALID_HANDLE = (6),
-    ERROR_ARENA_TRASHED = (7),
-    ERROR_NOT_ENOUGH_MEMORY = (8),
-    ERROR_INVALID_BLOCK = (9),
-    ERROR_BAD_ENVIRONMENT = (10),
-    ERROR_BAD_FORMAT = (11),
-    ERROR_INVALID_ACCESS = (12),
-    ERROR_INVALID_DATA = (13),
-    ERROR_OUTOFMEMORY = (14),
-    ERROR_INVALID_DRIVE = (15),
-    ERROR_CURRENT_DIRECTORY = (16),
-    ERROR_NOT_SAME_DEVICE = (17),
-    ERROR_NO_MORE_FILES = (18),
-    ERROR_WRITE_PROTECT = (19),
-    ERROR_BAD_UNIT = (20),
-    ERROR_NOT_READY = (21),
-    ERROR_BAD_COMMAND = (22),
-    ERROR_CRC = (23),
-    ERROR_BAD_LENGTH = (24),
-    ERROR_SEEK = (25),
-    ERROR_NOT_DOS_DISK = (26),
-    ERROR_SECTOR_NOT_FOUND = (27),
-    ERROR_OUT_OF_PAPER = (28),
-    ERROR_WRITE_FAULT = (29),
-    ERROR_READ_FAULT = (30),
-    ERROR_GEN_FAILURE = (31),
-    ERROR_SHARING_VIOLATION = (32),
-    ERROR_LOCK_VIOLATION = (33),
-    ERROR_WRONG_DISK = (34),
-    ERROR_SHARING_BUFFER_EXCEEDED = (36),
-    ERROR_HANDLE_EOF = (38),
-    ERROR_HANDLE_DISK_FULL = (39),
-    ERROR_NOT_SUPPORTED = (50),
-    ERROR_REM_NOT_LIST = (51),
-    ERROR_DUP_NAME = (52),
-    ERROR_BAD_NETPATH = (53),
-    ERROR_NETWORK_BUSY = (54),
-    ERROR_DEV_NOT_EXIST = (55),
-    ERROR_TOO_MANY_CMDS = (56),
-    ERROR_ADAP_HDW_ERR = (57),
-    ERROR_BAD_NET_RESP = (58),
-    ERROR_UNEXP_NET_ERR = (59),
-    ERROR_BAD_REM_ADAP = (60),
-    ERROR_PRINTQ_FULL = (61),
-    ERROR_NO_SPOOL_SPACE = (62),
-    ERROR_PRINT_CANCELLED = (63),
-    ERROR_NETNAME_DELETED = (64),
-    ERROR_NETWORK_ACCESS_DENIED = (65),
-    ERROR_BAD_DEV_TYPE = (66),
-    ERROR_BAD_NET_NAME = (67),
-    ERROR_TOO_MANY_NAMES = (68),
-    ERROR_TOO_MANY_SESS = (69),
-    ERROR_SHARING_PAUSED = (70),
-    ERROR_REQ_NOT_ACCEP = (71),
-    ERROR_REDIR_PAUSED = (72),
-    ERROR_FILE_EXISTS = (80),
-    ERROR_CANNOT_MAKE = (82),
-    ERROR_FAIL_I24 = (83),
-    ERROR_OUT_OF_STRUCTURES = (84),
-    ERROR_ALREADY_ASSIGNED = (85),
-    ERROR_INVALID_PASSWORD = (86),
-    ERROR_INVALID_PARAMETER = (87),
-    ERROR_NET_WRITE_FAULT = (88),
-    ERROR_NO_PROC_SLOTS = (89),
-    ERROR_TOO_MANY_SEMAPHORES = (100),
-    ERROR_EXCL_SEM_ALREADY_OWNED = (101),
-    ERROR_SEM_IS_SET = (102),
-    ERROR_TOO_MANY_SEM_REQUESTS = (103),
-    ERROR_INVALID_AT_INTERRUPT_TIME = (104),
-    ERROR_SEM_OWNER_DIED = (105),
-    ERROR_SEM_USER_LIMIT = (106),
-    ERROR_DISK_CHANGE = (107),
-    ERROR_DRIVE_LOCKED = (108),
-    ERROR_BROKEN_PIPE = (109),
-    ERROR_OPEN_FAILED = (110),
-    ERROR_BUFFER_OVERFLOW = (111),
-    ERROR_DISK_FULL = (112),
-    ERROR_NO_MORE_SEARCH_HANDLES = (113),
-    ERROR_INVALID_TARGET_HANDLE = (114),
-    ERROR_INVALID_CATEGORY = (117),
-    ERROR_INVALID_VERIFY_SWITCH = (118),
-    ERROR_BAD_DRIVER_LEVEL = (119),
-    ERROR_CALL_NOT_IMPLEMENTED = (120),
-    ERROR_SEM_TIMEOUT = (121),
-    ERROR_INSUFFICIENT_BUFFER = (122),
-    ERROR_INVALID_NAME = (123),
-    ERROR_INVALID_LEVEL = (124),
-    ERROR_NO_VOLUME_LABEL = (125),
-    ERROR_MOD_NOT_FOUND = (126),
-    ERROR_PROC_NOT_FOUND = (127),
-    ERROR_WAIT_NO_CHILDREN = (128),
-    ERROR_CHILD_NOT_COMPLETE = (129),
-    ERROR_DIRECT_ACCESS_HANDLE = (130),
-    ERROR_NEGATIVE_SEEK = (131),
-    ERROR_SEEK_ON_DEVICE = (132),
-    ERROR_IS_JOIN_TARGET = (133),
-    ERROR_IS_JOINED = (134),
-    ERROR_IS_SUBSTED = (135),
-    ERROR_NOT_JOINED = (136),
-    ERROR_NOT_SUBSTED = (137),
-    ERROR_JOIN_TO_JOIN = (138),
-    ERROR_SUBST_TO_SUBST = (139),
-    ERROR_JOIN_TO_SUBST = (140),
-    ERROR_SUBST_TO_JOIN = (141),
-    ERROR_BUSY_DRIVE = (142),
-    ERROR_SAME_DRIVE = (143),
-    ERROR_DIR_NOT_ROOT = (144),
-    ERROR_DIR_NOT_EMPTY = (145),
-    ERROR_IS_SUBST_PATH = (146),
-    ERROR_IS_JOIN_PATH = (147),
-    ERROR_PATH_BUSY = (148),
-    ERROR_IS_SUBST_TARGET = (149),
-    ERROR_SYSTEM_TRACE = (150),
-    ERROR_INVALID_EVENT_COUNT = (151),
-    ERROR_TOO_MANY_MUXWAITERS = (152),
-    ERROR_INVALID_LIST_FORMAT = (153),
-    ERROR_LABEL_TOO_LONG = (154),
-    ERROR_TOO_MANY_TCBS = (155),
-    ERROR_SIGNAL_REFUSED = (156),
-    ERROR_DISCARDED = (157),
-    ERROR_NOT_LOCKED = (158),
-    ERROR_BAD_THREADID_ADDR = (159),
-    ERROR_BAD_ARGUMENTS = (160),
-    ERROR_BAD_PATHNAME = (161),
-    ERROR_SIGNAL_PENDING = (162),
-    ERROR_MAX_THRDS_REACHED = (164),
-    ERROR_LOCK_FAILED = (167),
-    ERROR_BUSY = (170),
-    ERROR_CANCEL_VIOLATION = (173),
-    ERROR_ATOMIC_LOCKS_NOT_SUPPORTED = (174),
-    ERROR_INVALID_SEGMENT_NUMBER = (180),
-    ERROR_INVALID_ORDINAL = (182),
-    ERROR_ALREADY_EXISTS = (183),
-    ERROR_INVALID_FLAG_NUMBER = (186),
-    ERROR_SEM_NOT_FOUND = (187),
-    ERROR_INVALID_STARTING_CODESEG = (188),
-    ERROR_INVALID_STACKSEG = (189),
-    ERROR_INVALID_MODULETYPE = (190),
-    ERROR_INVALID_EXE_SIGNATURE = (191),
-    ERROR_EXE_MARKED_INVALID = (192),
-    ERROR_BAD_EXE_FORMAT = (193),
-    ERROR_ITERATED_DATA_EXCEEDS_64k = (194),
-    ERROR_INVALID_MINALLOCSIZE = (195),
-    ERROR_DYNLINK_FROM_INVALID_RING = (196),
-    ERROR_IOPL_NOT_ENABLED = (197),
-    ERROR_INVALID_SEGDPL = (198),
-    ERROR_AUTODATASEG_EXCEEDS_64k = (199),
-    ERROR_RING2SEG_MUST_BE_MOVABLE = (200),
-    ERROR_RELOC_CHAIN_XEEDS_SEGLIM = (201),
-    ERROR_INFLOOP_IN_RELOC_CHAIN = (202),
-    ERROR_ENVVAR_NOT_FOUND = (203),
-    ERROR_NO_SIGNAL_SENT = (205),
-    ERROR_FILENAME_EXCED_RANGE = (206),
-    ERROR_RING2_STACK_IN_USE = (207),
-    ERROR_META_EXPANSION_TOO_LONG = (208),
-    ERROR_INVALID_SIGNAL_NUMBER = (209),
-    ERROR_THREAD_1_INACTIVE = (210),
-    ERROR_LOCKED = (212),
-    ERROR_TOO_MANY_MODULES = (214),
-    ERROR_NESTING_NOT_ALLOWED = (215),
-    ERROR_BAD_PIPE = (230),
-    ERROR_PIPE_BUSY = (231),
-    ERROR_NO_DATA = (232),
-    ERROR_PIPE_NOT_CONNECTED = (233),
-    ERROR_MORE_DATA = (234),
-    ERROR_VC_DISCONNECTED = (240),
-    ERROR_INVALID_EA_NAME = (254),
-    ERROR_EA_LIST_INCONSISTENT = (255),
-    ERROR_NO_MORE_ITEMS = (259),
-    ERROR_CANNOT_COPY = (266),
-    ERROR_DIRECTORY = (267),
-    ERROR_EAS_DIDNT_FIT = (275),
-    ERROR_EA_FILE_CORRUPT = (276),
-    ERROR_EA_TABLE_FULL = (277),
-    ERROR_INVALID_EA_HANDLE = (278),
-    ERROR_EAS_NOT_SUPPORTED = (282),
-    ERROR_NOT_OWNER = (288),
-    ERROR_TOO_MANY_POSTS = (298),
-    ERROR_PARTIAL_COPY = (299),
-    ERROR_MR_MID_NOT_FOUND = (317),
-    ERROR_INVALID_ADDRESS = (487),
-    ERROR_ARITHMETIC_OVERFLOW = (534),
-    ERROR_PIPE_CONNECTED = (535),
-    ERROR_PIPE_LISTENING = (536),
-    ERROR_EA_ACCESS_DENIED = (994),
-    ERROR_OPERATION_ABORTED = (995),
-    ERROR_IO_INCOMPLETE = (996),
-    ERROR_IO_PENDING = (997),
-    ERROR_NOACCESS = (998),
-    ERROR_SWAPERROR = (999),
-    ERROR_STACK_OVERFLOW = (1001),
-    ERROR_INVALID_MESSAGE = (1002),
-    ERROR_CAN_NOT_COMPLETE = (1003),
-    ERROR_INVALID_FLAGS = (1004),
-    ERROR_UNRECOGNIZED_VOLUME = (1005),
-    ERROR_FILE_INVALID = (1006),
-    ERROR_FULLSCREEN_MODE = (1007),
-    ERROR_NO_TOKEN = (1008),
-    ERROR_BADDB = (1009),
-    ERROR_BADKEY = (1010),
-    ERROR_CANTOPEN = (1011),
-    ERROR_CANTREAD = (1012),
-    ERROR_CANTWRITE = (1013),
-    ERROR_REGISTRY_RECOVERED = (1014),
-    ERROR_REGISTRY_CORRUPT = (1015),
-    ERROR_REGISTRY_IO_FAILED = (1016),
-    ERROR_NOT_REGISTRY_FILE = (1017),
-    ERROR_KEY_DELETED = (1018),
-    ERROR_NO_LOG_SPACE = (1019),
-    ERROR_KEY_HAS_CHILDREN = (1020),
-    ERROR_CHILD_MUST_BE_VOLATILE = (1021),
-    ERROR_NOTIFY_ENUM_DIR = (1022),
-    ERROR_DEPENDENT_SERVICES_RUNNING = (1051),
-    ERROR_INVALID_SERVICE_CONTROL = (1052),
-    ERROR_SERVICE_REQUEST_TIMEOUT = (1053),
-    ERROR_SERVICE_NO_THREAD = (1054),
-    ERROR_SERVICE_DATABASE_LOCKED = (1055),
-    ERROR_SERVICE_ALREADY_RUNNING = (1056),
-    ERROR_INVALID_SERVICE_ACCOUNT = (1057),
-    ERROR_SERVICE_DISABLED = (1058),
-    ERROR_CIRCULAR_DEPENDENCY = (1059),
-    ERROR_SERVICE_DOES_NOT_EXIST = (1060),
-    ERROR_SERVICE_CANNOT_ACCEPT_CTRL = (1061),
-    ERROR_SERVICE_NOT_ACTIVE = (1062),
-    ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = (1063),
-    ERROR_EXCEPTION_IN_SERVICE = (1064),
-    ERROR_DATABASE_DOES_NOT_EXIST = (1065),
-    ERROR_SERVICE_SPECIFIC_ERROR = (1066),
-    ERROR_PROCESS_ABORTED = (1067),
-    ERROR_SERVICE_DEPENDENCY_FAIL = (1068),
-    ERROR_SERVICE_LOGON_FAILED = (1069),
-    ERROR_SERVICE_START_HANG = (1070),
-    ERROR_INVALID_SERVICE_LOCK = (1071),
-    ERROR_SERVICE_MARKED_FOR_DELETE = (1072),
-    ERROR_SERVICE_EXISTS = (1073),
-    ERROR_ALREADY_RUNNING_LKG = (1074),
-    ERROR_SERVICE_DEPENDENCY_DELETED = (1075),
-    ERROR_BOOT_ALREADY_ACCEPTED = (1076),
-    ERROR_SERVICE_NEVER_STARTED = (1077),
-    ERROR_DUPLICATE_SERVICE_NAME = (1078),
-    ERROR_END_OF_MEDIA = (1100),
-    ERROR_FILEMARK_DETECTED = (1101),
-    ERROR_BEGINNING_OF_MEDIA = (1102),
-    ERROR_SETMARK_DETECTED = (1103),
-    ERROR_NO_DATA_DETECTED = (1104),
-    ERROR_PARTITION_FAILURE = (1105),
-    ERROR_INVALID_BLOCK_LENGTH = (1106),
-    ERROR_DEVICE_NOT_PARTITIONED = (1107),
-    ERROR_UNABLE_TO_LOCK_MEDIA = (1108),
-    ERROR_UNABLE_TO_UNLOAD_MEDIA = (1109),
-    ERROR_MEDIA_CHANGED = (1110),
-    ERROR_BUS_RESET = (1111),
-    ERROR_NO_MEDIA_IN_DRIVE = (1112),
-    ERROR_NO_UNICODE_TRANSLATION = (1113),
-    ERROR_DLL_INIT_FAILED = (1114),
-    ERROR_SHUTDOWN_IN_PROGRESS = (1115),
-    ERROR_NO_SHUTDOWN_IN_PROGRESS = (1116),
-    ERROR_IO_DEVICE = (1117),
-    ERROR_SERIAL_NO_DEVICE = (1118),
-    ERROR_IRQ_BUSY = (1119),
-    ERROR_MORE_WRITES = (1120),
-    ERROR_COUNTER_TIMEOUT = (1121),
-    ERROR_FLOPPY_ID_MARK_NOT_FOUND = (1122),
-    ERROR_FLOPPY_WRONG_CYLINDER = (1123),
-    ERROR_FLOPPY_UNKNOWN_ERROR = (1124),
-    ERROR_FLOPPY_BAD_REGISTERS = (1125),
-    ERROR_DISK_RECALIBRATE_FAILED = (1126),
-    ERROR_DISK_OPERATION_FAILED = (1127),
-    ERROR_DISK_RESET_FAILED = (1128),
-    ERROR_EOM_OVERFLOW = (1129),
-    ERROR_NOT_ENOUGH_SERVER_MEMORY = (1130),
-    ERROR_POSSIBLE_DEADLOCK = (1131),
-    ERROR_MAPPED_ALIGNMENT = (1132),
-    ERROR_SET_POWER_STATE_VETOED = (1140),
-    ERROR_SET_POWER_STATE_FAILED = (1141),
-    ERROR_OLD_WIN_VERSION = (1150),
-    ERROR_APP_WRONG_OS = (1151),
-    ERROR_SINGLE_INSTANCE_APP = (1152),
-    ERROR_RMODE_APP = (1153),
-    ERROR_INVALID_DLL = (1154),
-    ERROR_NO_ASSOCIATION = (1155),
-    ERROR_DDE_FAIL = (1156),
-    ERROR_DLL_NOT_FOUND = (1157),
-    ERROR_BAD_USERNAME = (2202),
-    ERROR_NOT_CONNECTED = (2250),
-    ERROR_OPEN_FILES = (2401),
-    ERROR_ACTIVE_CONNECTIONS = (2402),
-    ERROR_DEVICE_IN_USE = (2404),
-    ERROR_BAD_DEVICE = (1200),
-    ERROR_CONNECTION_UNAVAIL = (1201),
-    ERROR_DEVICE_ALREADY_REMEMBERED = (1202),
-    ERROR_NO_NET_OR_BAD_PATH = (1203),
-    ERROR_BAD_PROVIDER = (1204),
-    ERROR_CANNOT_OPEN_PROFILE = (1205),
-    ERROR_BAD_PROFILE = (1206),
-    ERROR_NOT_CONTAINER = (1207),
-    ERROR_EXTENDED_ERROR = (1208),
-    ERROR_INVALID_GROUPNAME = (1209),
-    ERROR_INVALID_COMPUTERNAME = (1210),
-    ERROR_INVALID_EVENTNAME = (1211),
-    ERROR_INVALID_DOMAINNAME = (1212),
-    ERROR_INVALID_SERVICENAME = (1213),
-    ERROR_INVALID_NETNAME = (1214),
-    ERROR_INVALID_SHARENAME = (1215),
-    ERROR_INVALID_PASSWORDNAME = (1216),
-    ERROR_INVALID_MESSAGENAME = (1217),
-    ERROR_INVALID_MESSAGEDEST = (1218),
-    ERROR_SESSION_CREDENTIAL_CONFLICT = (1219),
-    ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = (1220),
-    ERROR_DUP_DOMAINNAME = (1221),
-    ERROR_NO_NETWORK = (1222),
-    ERROR_CANCELLED = (1223),
-    ERROR_USER_MAPPED_FILE = (1224),
-    ERROR_CONNECTION_REFUSED = (1225),
-    ERROR_GRACEFUL_DISCONNECT = (1226),
-    ERROR_ADDRESS_ALREADY_ASSOCIATED = (1227),
-    ERROR_ADDRESS_NOT_ASSOCIATED = (1228),
-    ERROR_CONNECTION_INVALID = (1229),
-    ERROR_CONNECTION_ACTIVE = (1230),
-    ERROR_NETWORK_UNREACHABLE = (1231),
-    ERROR_HOST_UNREACHABLE = (1232),
-    ERROR_PROTOCOL_UNREACHABLE = (1233),
-    ERROR_PORT_UNREACHABLE = (1234),
-    ERROR_REQUEST_ABORTED = (1235),
-    ERROR_CONNECTION_ABORTED = (1236),
-    ERROR_RETRY = (1237),
-    ERROR_CONNECTION_COUNT_LIMIT = (1238),
-    ERROR_LOGIN_TIME_RESTRICTION = (1239),
-    ERROR_LOGIN_WKSTA_RESTRICTION = (1240),
-    ERROR_INCORRECT_ADDRESS = (1241),
-    ERROR_ALREADY_REGISTERED = (1242),
-    ERROR_SERVICE_NOT_FOUND = (1243),
-    ERROR_NOT_AUTHENTICATED = (1244),
-    ERROR_NOT_LOGGED_ON = (1245),
-    ERROR_CONTINUE = (1246),
-    ERROR_ALREADY_INITIALIZED = (1247),
-    ERROR_NO_MORE_DEVICES = (1248),
-    ERROR_NOT_ALL_ASSIGNED = (1300),
-    ERROR_SOME_NOT_MAPPED = (1301),
-    ERROR_NO_QUOTAS_FOR_ACCOUNT = (1302),
-    ERROR_LOCAL_USER_SESSION_KEY = (1303),
-    ERROR_NULL_LM_PASSWORD = (1304),
-    ERROR_UNKNOWN_REVISION = (1305),
-    ERROR_REVISION_MISMATCH = (1306),
-    ERROR_INVALID_OWNER = (1307),
-    ERROR_INVALID_PRIMARY_GROUP = (1308),
-    ERROR_NO_IMPERSONATION_TOKEN = (1309),
-    ERROR_CANT_DISABLE_MANDATORY = (1310),
-    ERROR_NO_LOGON_SERVERS = (1311),
-    ERROR_NO_SUCH_LOGON_SESSION = (1312),
-    ERROR_NO_SUCH_PRIVILEGE = (1313),
-    ERROR_PRIVILEGE_NOT_HELD = (1314),
-    ERROR_INVALID_ACCOUNT_NAME = (1315),
-    ERROR_USER_EXISTS = (1316),
-    ERROR_NO_SUCH_USER = (1317),
-    ERROR_GROUP_EXISTS = (1318),
-    ERROR_NO_SUCH_GROUP = (1319),
-    ERROR_MEMBER_IN_GROUP = (1320),
-    ERROR_MEMBER_NOT_IN_GROUP = (1321),
-    ERROR_LAST_ADMIN = (1322),
-    ERROR_WRONG_PASSWORD = (1323),
-    ERROR_ILL_FORMED_PASSWORD = (1324),
-    ERROR_PASSWORD_RESTRICTION = (1325),
-    ERROR_LOGON_FAILURE = (1326),
-    ERROR_ACCOUNT_RESTRICTION = (1327),
-    ERROR_INVALID_LOGON_HOURS = (1328),
-    ERROR_INVALID_WORKSTATION = (1329),
-    ERROR_PASSWORD_EXPIRED = (1330),
-    ERROR_ACCOUNT_DISABLED = (1331),
-    ERROR_NONE_MAPPED = (1332),
-    ERROR_TOO_MANY_LUIDS_REQUESTED = (1333),
-    ERROR_LUIDS_EXHAUSTED = (1334),
-    ERROR_INVALID_SUB_AUTHORITY = (1335),
-    ERROR_INVALID_ACL = (1336),
-    ERROR_INVALID_SID = (1337),
-    ERROR_INVALID_SECURITY_DESCR = (1338),
-    ERROR_BAD_INHERITANCE_ACL = (1340),
-    ERROR_SERVER_DISABLED = (1341),
-    ERROR_SERVER_NOT_DISABLED = (1342),
-    ERROR_INVALID_ID_AUTHORITY = (1343),
-    ERROR_ALLOTTED_SPACE_EXCEEDED = (1344),
-    ERROR_INVALID_GROUP_ATTRIBUTES = (1345),
-    ERROR_BAD_IMPERSONATION_LEVEL = (1346),
-    ERROR_CANT_OPEN_ANONYMOUS = (1347),
-    ERROR_BAD_VALIDATION_CLASS = (1348),
-    ERROR_BAD_TOKEN_TYPE = (1349),
-    ERROR_NO_SECURITY_ON_OBJECT = (1350),
-    ERROR_CANT_ACCESS_DOMAIN_INFO = (1351),
-    ERROR_INVALID_SERVER_STATE = (1352),
-    ERROR_INVALID_DOMAIN_STATE = (1353),
-    ERROR_INVALID_DOMAIN_ROLE = (1354),
-    ERROR_NO_SUCH_DOMAIN = (1355),
-    ERROR_DOMAIN_EXISTS = (1356),
-    ERROR_DOMAIN_LIMIT_EXCEEDED = (1357),
-    ERROR_INTERNAL_DB_CORRUPTION = (1358),
-    ERROR_INTERNAL_ERROR = (1359),
-    ERROR_GENERIC_NOT_MAPPED = (1360),
-    ERROR_BAD_DESCRIPTOR_FORMAT = (1361),
-    ERROR_NOT_LOGON_PROCESS = (1362),
-    ERROR_LOGON_SESSION_EXISTS = (1363),
-    ERROR_NO_SUCH_PACKAGE = (1364),
-    ERROR_BAD_LOGON_SESSION_STATE = (1365),
-    ERROR_LOGON_SESSION_COLLISION = (1366),
-    ERROR_INVALID_LOGON_TYPE = (1367),
-    ERROR_CANNOT_IMPERSONATE = (1368),
-    ERROR_RXACT_INVALID_STATE = (1369),
-    ERROR_RXACT_COMMIT_FAILURE = (1370),
-    ERROR_SPECIAL_ACCOUNT = (1371),
-    ERROR_SPECIAL_GROUP = (1372),
-    ERROR_SPECIAL_USER = (1373),
-    ERROR_MEMBERS_PRIMARY_GROUP = (1374),
-    ERROR_TOKEN_ALREADY_IN_USE = (1375),
-    ERROR_NO_SUCH_ALIAS = (1376),
-    ERROR_MEMBER_NOT_IN_ALIAS = (1377),
-    ERROR_MEMBER_IN_ALIAS = (1378),
-    ERROR_ALIAS_EXISTS = (1379),
-    ERROR_LOGON_NOT_GRANTED = (1380),
-    ERROR_TOO_MANY_SECRETS = (1381),
-    ERROR_SECRET_TOO_LONG = (1382),
-    ERROR_INTERNAL_DB_ERROR = (1383),
-    ERROR_TOO_MANY___FILE___IDS = (1384),
-    ERROR_LOGON_TYPE_NOT_GRANTED = (1385),
-    ERROR_NT_CROSS_ENCRYPTION_REQUIRED = (1386),
-    ERROR_NO_SUCH_MEMBER = (1387),
-    ERROR_INVALID_MEMBER = (1388),
-    ERROR_TOO_MANY_SIDS = (1389),
-    ERROR_LM_CROSS_ENCRYPTION_REQUIRED = (1390),
-    ERROR_NO_INHERITANCE = (1391),
-    ERROR_FILE_CORRUPT = (1392),
-    ERROR_DISK_CORRUPT = (1393),
-    ERROR_NO_USER_SESSION_KEY = (1394),
-    ERROR_LICENSE_QUOTA_EXCEEDED = (1395),
-    ERROR_INVALID_WINDOW_HANDLE = (1400),
-    ERROR_INVALID_MENU_HANDLE = (1401),
-    ERROR_INVALID_CURSOR_HANDLE = (1402),
-    ERROR_INVALID_ACCEL_HANDLE = (1403),
-    ERROR_INVALID_HOOK_HANDLE = (1404),
-    ERROR_INVALID_DWP_HANDLE = (1405),
-    ERROR_TLW_WITH_WSCHILD = (1406),
-    ERROR_CANNOT_FIND_WND_CLASS = (1407),
-    ERROR_WINDOW_OF_OTHER_THREAD = (1408),
-    ERROR_HOTKEY_ALREADY_REGISTERED = (1409),
-    ERROR_CLASS_ALREADY_EXISTS = (1410),
-    ERROR_CLASS_DOES_NOT_EXIST = (1411),
-    ERROR_CLASS_HAS_WINDOWS = (1412),
-    ERROR_INVALID_INDEX = (1413),
-    ERROR_INVALID_ICON_HANDLE = (1414),
-    ERROR_PRIVATE_DIALOG_INDEX = (1415),
-    ERROR_LISTBOX_ID_NOT_FOUND = (1416),
-    ERROR_NO_WILDCARD_CHARACTERS = (1417),
-    ERROR_CLIPBOARD_NOT_OPEN = (1418),
-    ERROR_HOTKEY_NOT_REGISTERED = (1419),
-    ERROR_WINDOW_NOT_DIALOG = (1420),
-    ERROR_CONTROL_ID_NOT_FOUND = (1421),
-    ERROR_INVALID_COMBOBOX_MESSAGE = (1422),
-    ERROR_WINDOW_NOT_COMBOBOX = (1423),
-    ERROR_INVALID_EDIT_HEIGHT = (1424),
-    ERROR_DC_NOT_FOUND = (1425),
-    ERROR_INVALID_HOOK_FILTER = (1426),
-    ERROR_INVALID_FILTER_PROC = (1427),
-    ERROR_HOOK_NEEDS_HMOD = (1428),
-    ERROR_GLOBAL_ONLY_HOOK = (1429),
-    ERROR_JOURNAL_HOOK_SET = (1430),
-    ERROR_HOOK_NOT_INSTALLED = (1431),
-    ERROR_INVALID_LB_MESSAGE = (1432),
-    ERROR_SETCOUNT_ON_BAD_LB = (1433),
-    ERROR_LB_WITHOUT_TABSTOPS = (1434),
-    ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = (1435),
-    ERROR_CHILD_WINDOW_MENU = (1436),
-    ERROR_NO_SYSTEM_MENU = (1437),
-    ERROR_INVALID_MSGBOX_STYLE = (1438),
-    ERROR_INVALID_SPI_VALUE = (1439),
-    ERROR_SCREEN_ALREADY_LOCKED = (1440),
-    ERROR_HWNDS_HAVE_DIFF_PARENT = (1441),
-    ERROR_NOT_CHILD_WINDOW = (1442),
-    ERROR_INVALID_GW_COMMAND = (1443),
-    ERROR_INVALID_THREAD_ID = (1444),
-    ERROR_NON_MDICHILD_WINDOW = (1445),
-    ERROR_POPUP_ALREADY_ACTIVE = (1446),
-    ERROR_NO_SCROLLBARS = (1447),
-    ERROR_INVALID_SCROLLBAR_RANGE = (1448),
-    ERROR_INVALID_SHOWWIN_COMMAND = (1449),
-    ERROR_NO_SYSTEM_RESOURCES = (1450),
-    ERROR_NONPAGED_SYSTEM_RESOURCES = (1451),
-    ERROR_PAGED_SYSTEM_RESOURCES = (1452),
-    ERROR_WORKING_SET_QUOTA = (1453),
-    ERROR_PAGEFILE_QUOTA = (1454),
-    ERROR_COMMITMENT_LIMIT = (1455),
-    ERROR_MENU_ITEM_NOT_FOUND = (1456),
-    ERROR_EVENTLOG_FILE_CORRUPT = (1500),
-    ERROR_EVENTLOG_CANT_START = (1501),
-    ERROR_LOG_FILE_FULL = (1502),
-    ERROR_EVENTLOG_FILE_CHANGED = (1503),
-    RPC_S_INVALID_STRING_BINDING = (1700),
-    RPC_S_WRONG_KIND_OF_BINDING = (1701),
-    RPC_S_INVALID_BINDING = (1702),
-    RPC_S_PROTSEQ_NOT_SUPPORTED = (1703),
-    RPC_S_INVALID_RPC_PROTSEQ = (1704),
-    RPC_S_INVALID_STRING_UUID = (1705),
-    RPC_S_INVALID_ENDPOINT_FORMAT = (1706),
-    RPC_S_INVALID_NET_ADDR = (1707),
-    RPC_S_NO_ENDPOINT_FOUND = (1708),
-    RPC_S_INVALID_TIMEOUT = (1709),
-    RPC_S_OBJECT_NOT_FOUND = (1710),
-    RPC_S_ALREADY_REGISTERED = (1711),
-    RPC_S_TYPE_ALREADY_REGISTERED = (1712),
-    RPC_S_ALREADY_LISTENING = (1713),
-    RPC_S_NO_PROTSEQS_REGISTERED = (1714),
-    RPC_S_NOT_LISTENING = (1715),
-    RPC_S_UNKNOWN_MGR_TYPE = (1716),
-    RPC_S_UNKNOWN_IF = (1717),
-    RPC_S_NO_BINDINGS = (1718),
-    RPC_S_NO_PROTSEQS = (1719),
-    RPC_S_CANT_CREATE_ENDPOINT = (1720),
-    RPC_S_OUT_OF_RESOURCES = (1721),
-    RPC_S_SERVER_UNAVAILABLE = (1722),
-    RPC_S_SERVER_TOO_BUSY = (1723),
-    RPC_S_INVALID_NETWORK_OPTIONS = (1724),
-    RPC_S_NO_CALL_ACTIVE = (1725),
-    RPC_S_CALL_FAILED = (1726),
-    RPC_S_CALL_FAILED_DNE = (1727),
-    RPC_S_PROTOCOL_ERROR = (1728),
-    RPC_S_UNSUPPORTED_TRANS_SYN = (1730),
-    RPC_S_UNSUPPORTED_TYPE = (1732),
-    RPC_S_INVALID_TAG = (1733),
-    RPC_S_INVALID_BOUND = (1734),
-    RPC_S_NO_ENTRY_NAME = (1735),
-    RPC_S_INVALID_NAME_SYNTAX = (1736),
-    RPC_S_UNSUPPORTED_NAME_SYNTAX = (1737),
-    RPC_S_UUID_NO_ADDRESS = (1739),
-    RPC_S_DUPLICATE_ENDPOINT = (1740),
-    RPC_S_UNKNOWN_AUTHN_TYPE = (1741),
-    RPC_S_MAX_CALLS_TOO_SMALL = (1742),
-    RPC_S_STRING_TOO_LONG = (1743),
-    RPC_S_PROTSEQ_NOT_FOUND = (1744),
-    RPC_S_PROCNUM_OUT_OF_RANGE = (1745),
-    RPC_S_BINDING_HAS_NO_AUTH = (1746),
-    RPC_S_UNKNOWN_AUTHN_SERVICE = (1747),
-    RPC_S_UNKNOWN_AUTHN_LEVEL = (1748),
-    RPC_S_INVALID_AUTH_IDENTITY = (1749),
-    RPC_S_UNKNOWN_AUTHZ_SERVICE = (1750),
-    EPT_S_INVALID_ENTRY = (1751),
-    EPT_S_CANT_PERFORM_OP = (1752),
-    EPT_S_NOT_REGISTERED = (1753),
-    RPC_S_NOTHING_TO_EXPORT = (1754),
-    RPC_S_INCOMPLETE_NAME = (1755),
-    RPC_S_INVALID_VERS_OPTION = (1756),
-    RPC_S_NO_MORE_MEMBERS = (1757),
-    RPC_S_NOT_ALL_OBJS_UNEXPORTED = (1758),
-    RPC_S_INTERFACE_NOT_FOUND = (1759),
-    RPC_S_ENTRY_ALREADY_EXISTS = (1760),
-    RPC_S_ENTRY_NOT_FOUND = (1761),
-    RPC_S_NAME_SERVICE_UNAVAILABLE = (1762),
-    RPC_S_INVALID_NAF_ID = (1763),
-    RPC_S_CANNOT_SUPPORT = (1764),
-    RPC_S_NO___FILE___AVAILABLE = (1765),
-    RPC_S_INTERNAL_ERROR = (1766),
-    RPC_S_ZERO_DIVIDE = (1767),
-    RPC_S_ADDRESS_ERROR = (1768),
-    RPC_S_FP_DIV_ZERO = (1769),
-    RPC_S_FP_UNDERFLOW = (1770),
-    RPC_S_FP_OVERFLOW = (1771),
-    RPC_X_NO_MORE_ENTRIES = (1772),
-    RPC_X_SS_CHAR_TRANS_OPEN_FAIL = (1773),
-    RPC_X_SS_CHAR_TRANS_SHORT_FILE = (1774),
-    RPC_X_SS_IN_NULL___FILE__ = (1775),
-    RPC_X_SS___FILE___DAMAGED = (1777),
-    RPC_X_SS_HANDLES_MISMATCH = (1778),
-    RPC_X_SS_CANNOT_GET_CALL_HANDLE = (1779),
-    RPC_X_NULL_REF_POINTER = (1780),
-    RPC_X_ENUM_VALUE_OUT_OF_RANGE = (1781),
-    RPC_X_BYTE_COUNT_TOO_SMALL = (1782),
-    RPC_X_BAD_STUB_DATA = (1783),
-    ERROR_INVALID_USER_BUFFER = (1784),
-    ERROR_UNRECOGNIZED_MEDIA = (1785),
-    ERROR_NO_TRUST_LSA_SECRET = (1786),
-    ERROR_NO_TRUST_SAM_ACCOUNT = (1787),
-    ERROR_TRUSTED_DOMAIN_FAILURE = (1788),
-    ERROR_TRUSTED_RELATIONSHIP_FAILURE = (1789),
-    ERROR_TRUST_FAILURE = (1790),
-    RPC_S_CALL_IN_PROGRESS = (1791),
-    ERROR_NETLOGON_NOT_STARTED = (1792),
-    ERROR_ACCOUNT_EXPIRED = (1793),
-    ERROR_REDIRECTOR_HAS_OPEN_HANDLES = (1794),
-    ERROR_PRINTER_DRIVER_ALREADY_INSTALLED = (1795),
-    ERROR_UNKNOWN_PORT = (1796),
-    ERROR_UNKNOWN_PRINTER_DRIVER = (1797),
-    ERROR_UNKNOWN_PRINTPROCESSOR = (1798),
-    ERROR_INVALID_SEPARATOR_FILE = (1799),
-    ERROR_INVALID_PRIORITY = (1800),
-    ERROR_INVALID_PRINTER_NAME = (1801),
-    ERROR_PRINTER_ALREADY_EXISTS = (1802),
-    ERROR_INVALID_PRINTER_COMMAND = (1803),
-    ERROR_INVALID_DATATYPE = (1804),
-    ERROR_INVALID_ENVIRONMENT = (1805),
-    RPC_S_NO_MORE_BINDINGS = (1806),
-    ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = (1807),
-    ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = (1808),
-    ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = (1809),
-    ERROR_DOMAIN_TRUST_INCONSISTENT = (1810),
-    ERROR_SERVER_HAS_OPEN_HANDLES = (1811),
-    ERROR_RESOURCE_DATA_NOT_FOUND = (1812),
-    ERROR_RESOURCE_TYPE_NOT_FOUND = (1813),
-    ERROR_RESOURCE_NAME_NOT_FOUND = (1814),
-    ERROR_RESOURCE_LANG_NOT_FOUND = (1815),
-    ERROR_NOT_ENOUGH_QUOTA = (1816),
-    RPC_S_NO_INTERFACES = (1817),
-    RPC_S_CALL_CANCELLED = (1818),
-    RPC_S_BINDING_INCOMPLETE = (1819),
-    RPC_S_COMM_FAILURE = (1820),
-    RPC_S_UNSUPPORTED_AUTHN_LEVEL = (1821),
-    RPC_S_NO_PRINC_NAME = (1822),
-    RPC_S_NOT_RPC_ERROR = (1823),
-    RPC_S_UUID_LOCAL_ONLY = (1824),
-    RPC_S_SEC_PKG_ERROR = (1825),
-    RPC_S_NOT_CANCELLED = (1826),
-    RPC_X_INVALID_ES_ACTION = (1827),
-    RPC_X_WRONG_ES_VERSION = (1828),
-    RPC_X_WRONG_STUB_VERSION = (1829),
-    RPC_S_GROUP_MEMBER_NOT_FOUND = (1898),
-    EPT_S_CANT_CREATE = (1899),
-    RPC_S_INVALID_OBJECT = (1900),
-    ERROR_INVALID_TIME = (1901),
-    ERROR_INVALID_FORM_NAME = (1902),
-    ERROR_INVALID_FORM_SIZE = (1903),
-    ERROR_ALREADY_WAITING = (1904),
-    ERROR_PRINTER_DELETED = (1905),
-    ERROR_INVALID_PRINTER_STATE = (1906),
-    ERROR_PASSWORD_MUST_CHANGE = (1907),
-    ERROR_DOMAIN_CONTROLLER_NOT_FOUND = (1908),
-    ERROR_ACCOUNT_LOCKED_OUT = (1909),
-    ERROR_NO_BROWSER_SERVERS_FOUND = (6118),
-    ERROR_INVALID_PIXEL_FORMAT = (2000),
-    ERROR_BAD_DRIVER = (2001),
-    ERROR_INVALID_WINDOW_STYLE = (2002),
-    ERROR_METAFILE_NOT_SUPPORTED = (2003),
-    ERROR_TRANSFORM_NOT_SUPPORTED = (2004),
-    ERROR_CLIPPING_NOT_SUPPORTED = (2005),
-    ERROR_UNKNOWN_PRINT_MONITOR = (3000),
-    ERROR_PRINTER_DRIVER_IN_USE = (3001),
-    ERROR_SPOOL_FILE_NOT_FOUND = (3002),
-    ERROR_SPL_NO_STARTDOC = (3003),
-    ERROR_SPL_NO_ADDJOB = (3004),
-    ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED = (3005),
-    ERROR_PRINT_MONITOR_ALREADY_INSTALLED = (3006),
-    ERROR_WINS_INTERNAL = (4000),
-    ERROR_CAN_NOT_DEL_LOCAL_WINS = (4001),
-    ERROR_STATIC_INIT = (4002),
-    ERROR_INC_BACKUP = (4003),
-    ERROR_FULL_BACKUP = (4004),
-    ERROR_REC_NON_EXISTENT = (4005),
-    ERROR_RPL_NOT_ALLOWED = (4006),
-    MAX_PATH = (260),
-    LF_FACESIZE = (32),
-    LF_FULLFACESIZE = (64),
-    ELF_VENDOR_SIZE = (4),
-    SECURITY_STATIC_TRACKING = (0),
-    SECURITY_DYNAMIC_TRACKING = (1),
-    MAX_DEFAULTCHAR = (2),
-    MAX_LEADBYTES = (12),
-    EXCEPTION_MAXIMUM_PARAMETERS = (15),
-    CCHDEVICENAME = (32),
-    CCHFORMNAME = (32),
-    MENU_TEXT_LEN = (40),
-    MAX_LANA = (254),
-    NCBNAMSZ = (16),
-    NETBIOS_NAME_LEN = (16),
-    OFS_MAXPATHNAME = (128),
-    MAX_TAB_STOPS = (32),
-    ANYSIZE_ARRAY = (1),
-    RAS_MaxCallbackNumber = (128),
-    RAS_MaxDeviceName = (128),
-    RAS_MaxDeviceType = (16),
-    RAS_MaxEntryName = (256),
-    RAS_MaxIpAddress = (15),
-    RAS_MaxIpxAddress = (21),
-    RAS_MaxPhoneNumber = (128),
-    UNLEN = (256),
-    PWLEN = (256),
-    CNLEN = (15),
-    DNLEN = (15),
-    MAXDWORD = (0xFFFFFFFF),
-    MAXWORD = (0xFFFF),
-    MAXBYTE = (0xFF),
-    MINCHAR = (0x80),
-    MAXCHAR = (0x7F),
-    MINSHORT = (0x8000),
-    MAXSHORT = (0x7FFF),
-    MINLONG = (0x80000000),
-    MAXLONG = (0x7FFFFFFF),
-    FILE_BEGIN = (0),
-    FILE_CURRENT = (1),
-    FILE_END = (2),
-    OF_READ = (0),
-    OF_READWRITE = (2),
-    OF_WRITE = (1),
-    OF_SHARE_COMPAT = (0),
-    OF_SHARE_DENY_NONE = (64),
-    OF_SHARE_DENY_READ = (48),
-    OF_SHARE_DENY_WRITE = (32),
-    OF_SHARE_EXCLUSIVE = (16),
-    OF_CANCEL = (2048),
-    OF_CREATE = (4096),
-    OF_DELETE = (512),
-    OF_EXIST = (16384),
-    OF_PARSE = (256),
-    OF_PROMPT = (8192),
-    OF_REOPEN = (32768),
-    OF_VERIFY = (1024),
-    HKL_NEXT = (1),
-    HKL_PREV = (0),
-    KLF_REORDER = (8),
-    KLF_UNLOADPREVIOUS = (4),
-    KLF_ACTIVATE = (1),
-    KLF_NOTELLSHELL = (128),
-    KLF_REPLACELANG = (16),
-    KLF_SUBSTITUTE_OK = (2),
-    MF_BITMAP = (0x4),
-    MF_DISABLED = (0x2),
-    MF_ENABLED = (0),
-    MF_GRAYED = (0x1),
-    MF_HELP = (0x4000),
-    MF_MENUBARBREAK = (0x20),
-    MF_MENUBREAK = (0x40),
-    MF_MOUSESELECT = (0x8000),
-    MF_OWNERDRAW = (0x100),
-    MF_POPUP = (0x10),
-    MF_SEPARATOR = (0x800),
-    MF_STRING = (0),
-    MF_SYSMENU = (0x2000),
-    MF_USECHECKBITMAPS = (0x200),
-    BLACKNESS = (0x00000042),
-    NOTSRCERASE = (0x001100A6),
-    NOTSRCCOPY = (0x00330008),
-    SRCERASE = (0x00440328),
-    DSTINVERT = (0x00550009),
-    PATINVERT = (0x005A0049),
-    SRCINVERT = (0x00660046),
-    SRCAND = (0x008800C6),
-    MERGEPAINT = (0x00BB0226),
-    MERGECOPY = (0x00C000CA),
-    SRCCOPY = (0x00CC0020),
-    SRCPAINT = (0x00EE0086),
-    PATCOPY = (0x00F00021),
-    PATPAINT = (0x00FB0A09),
-    WHITENESS = (0x00FF0062),
-    R2_BLACK = (1),
-    R2_COPYPEN = (13),
-    R2_MASKNOTPEN = (3),
-    R2_MASKPEN = (9),
-    R2_MASKPENNOT = (5),
-    R2_MERGENOTPEN = (12),
-    R2_MERGEPEN = (15),
-    R2_MERGEPENNOT = (14),
-    R2_NOP = (11),
-    R2_NOT = (6),
-    R2_NOTCOPYPEN = (4),
-    R2_NOTMASKPEN = (8),
-    R2_NOTMERGEPEN = (2),
-    R2_NOTXORPEN = (10),
-    R2_WHITE = (16),
-    R2_XORPEN = (7),
-    BSF_FLUSHDISK = (4),
-    BSF_FORCEIFHUNG = (32),
-    BSF_IGNORECURRENTTASK = (2),
-    BSF_NOHANG = (8),
-    BSF_POSTMESSAGE = (16),
-    BSF_QUERY = (1),
-    BSM_ALLCOMPONENTS = (0),
-    BSM_APPLICATIONS = (8),
-    BSM_INSTALLABLEDRIVERS = (4),
-    BSM_NETDRIVER = (2),
-    BSM_VXDS = (1),
-    BROADCAST_QUERY_DENY = (1112363332),
-    NMPWAIT_NOWAIT = (1),
-    NMPWAIT_WAIT_FOREVER = -((1)),
-    NMPWAIT_USE_DEFAULT_WAIT = (0),
-    MDITILE_SKIPDISABLED = (2),
-    MDITILE_HORIZONTAL = (1),
-    MDITILE_VERTICAL = (0),
-    HCBT_ACTIVATE = (5),
-    HCBT_CLICKSKIPPED = (6),
-    HCBT_CREATEWND = (3),
-    HCBT_DESTROYWND = (4),
-    HCBT_KEYSKIPPED = (7),
-    HCBT_MINMAX = (1),
-    HCBT_MOVESIZE = (0),
-    HCBT_QS = (2),
-    HCBT_SETFOCUS = (9),
-    HCBT_SYSCOMMAND = (8),
-    DM_BITSPERPEL = (0x40000),
-    DM_PELSWIDTH = (0x80000),
-    DM_PELSHEIGHT = (0x100000),
-    DM_DISPLAYFLAGS = (0x200000),
-    DM_DISPLAYFREQUENCY = (0x400000),
-    CDS_UPDATEREGISTRY = (1),
-    CDS_TEST = (2),
-    DISP_CHANGE_SUCCESSFUL = (0),
-    DISP_CHANGE_RESTART = (1),
-    DISP_CHANGE_BADFLAGS = -((4)),
-    DISP_CHANGE_FAILED = -((1)),
-    DISP_CHANGE_BADMODE = -((2)),
-    DISP_CHANGE_NOTUPDATED = -((3)),
-    SERVICE_NO_CHANGE = -((1)),
-    SERVICE_WIN32_OWN_PROCESS = (16),
-    SERVICE_WIN32_SHARE_PROCESS = (32),
-    SERVICE_KERNEL_DRIVER = (1),
-    SERVICE_FILE_SYSTEM_DRIVER = (2),
-    SERVICE_INTERACTIVE_PROCESS = (256),
-    SERVICE_BOOT_START = (0),
-    SERVICE_SYSTEM_START = (1),
-    SERVICE_AUTO_START = (2),
-    SERVICE_DEMAND_START = (3),
-    SERVICE_DISABLED = (4),
-    SERVICE_STOPPED = (1),
-    SERVICE_START_PENDING = (2),
-    SERVICE_STOP_PENDING = (3),
-    SERVICE_RUNNING = (4),
-    SERVICE_CONTINUE_PENDING = (5),
-    SERVICE_PAUSE_PENDING = (6),
-    SERVICE_PAUSED = (7),
-    SERVICE_ACCEPT_STOP = (1),
-    SERVICE_ACCEPT_PAUSE_CONTINUE = (2),
-    SERVICE_ACCEPT_SHUTDOWN = (4),
-    BST_CHECKED = (1),
-    BST_INDETERMINATE = (2),
-    BST_UNCHECKED = (0),
-    BST_FOCUS = (8),
-    BST_PUSHED = (4),
-    MF_BYCOMMAND = (0),
-    MF_BYPOSITION = (0x400),
-    MF_CHECKED = (0x8),
-    MF_UNCHECKED = (0),
-    MF_HILITE = (0x80),
-    MF_UNHILITE = (0),
-    CWP_ALL = (0),
-    CWP_SKIPINVISIBLE = (1),
-    CWP_SKIPDISABLED = (2),
-    CWP_SKIPTRANSPARENT = (4),
-    CE_BREAK = (16),
-    CE_DNS = (2048),
-    CE_FRAME = (8),
-    CE_IOE = (1024),
-    CE_MODE = (32768),
-    CE_OOP = (4096),
-    CE_OVERRUN = (2),
-    CE_PTO = (512),
-    CE_RXOVER = (1),
-    CE_RXPARITY = (4),
-    CE_TXFULL = (256),
-    RGN_AND = (1),
-    RGN_COPY = (5),
-    RGN_DIFF = (4),
-    RGN_OR = (2),
-    RGN_XOR = (3),
-    NULLREGION = (1),
-    SIMPLEREGION = (2),
-    COMPLEXREGION = (3),
-    ERROR = (0),
-    CDERR_DIALOGFAILURE = (0xffff),
-    CDERR_FINDRESFAILURE = (6),
-    CDERR_INITIALIZATION = (2),
-    CDERR_LOADRESFAILURE = (7),
-    CDERR_LOADSTRFAILURE = (5),
-    CDERR_LOCKRESFAILURE = (8),
-    CDERR_MEMALLOCFAILURE = (9),
-    CDERR_MEMLOCKFAILURE = (10),
-    CDERR_NOHINSTANCE = (4),
-    CDERR_NOHOOK = (11),
-    CDERR_NOTEMPLATE = (3),
-    CDERR_REGISTERMSGFAIL = (12),
-    CDERR_STRUCTSIZE = (1),
-    PDERR_CREATEICFAILURE = (0x1000)+(10),
-    PDERR_DEFAULTDIFFERENT = (0x1000)+(12),
-    PDERR_DNDMMISMATCH = (0x1000)+(9),
-    PDERR_GETDEVMODEFAIL = (0x1000)+(5),
-    PDERR_INITFAILURE = (0x1000)+(6),
-    PDERR_LOADDRVFAILURE = (0x1000)+(4),
-    PDERR_NODEFAULTPRN = (0x1000)+(8),
-    PDERR_NODEVICES = (0x1000)+(7),
-    PDERR_PARSEFAILURE = (0x1000)+(2),
-    PDERR_PRINTERNOTFOUND = (0x1000)+(11),
-    PDERR_RETDEFFAILURE = (0x1000)+(3),
-    PDERR_SETUPFAILURE = (0x1000)+(1),
-    CFERR_MAXLESSTHANMIN = (0x2000)+(2),
-    CFERR_NOFONTS = (0x2000)+(1),
-    FNERR_BUFFERTOOSMALL = (0x3000)+(3),
-    FNERR_INVALIDFILENAME = (0x3000)+(2),
-    FNERR_SUBCLASSFAILURE = (0x3000)+(1),
-    FRERR_BUFFERLENGTHZERO = (0x4000)+(1),
-    LOCALE_SYSTEM_DEFAULT = (0x800),
-    LOCALE_USER_DEFAULT = (0x400),
-    NORM_IGNORECASE = (1),
-    NORM_IGNOREKANATYPE = (65536),
-    NORM_IGNORENONSPACE = (2),
-    NORM_IGNORESYMBOLS = (4),
-    NORM_IGNOREWIDTH = (131072),
-    SORT_STRINGSORT = (4096),
-    LCMAP_BYTEREV = (2048),
-    LCMAP_FULLWIDTH = (8388608),
-    LCMAP_HALFWIDTH = (4194304),
-    LCMAP_HIRAGANA = (1048576),
-    LCMAP_KATAKANA = (2097152),
-    LCMAP_LOWERCASE = (256),
-    LCMAP_SORTKEY = (1024),
-    LCMAP_UPPERCASE = (512),
-    DBG_CONTINUE = (0x10002),
-    DBG_CONTROL_BREAK = (0x40010008),
-    DBG_CONTROL_C = (0x40010005),
-    DBG_EXCEPTION_NOT_HANDLED = (0x80010001),
-    DBG_TERMINATE_THREAD = (0x40010003),
-    DBG_TERMINATE_PROCESS = (0x40010004),
-    SERVICE_CONTROL_STOP = (1),
-    SERVICE_CONTROL_PAUSE = (2),
-    SERVICE_CONTROL_CONTINUE = (3),
-    SERVICE_CONTROL_INTERROGATE = (4),
-    SERVICE_CONTROL_SHUTDOWN = (5),
-    IMAGE_BITMAP = (0),
-    IMAGE_CURSOR = (2),
-    IMAGE_ENHMETAFILE = (1),
-    IMAGE_ICON = (1),
-    LR_COPYDELETEORG = (8),
-    LR_COPYRETURNORG = (4),
-    LR_MONOCHROME = (1),
-    LR_CREATEDIBSECTION = (8192),
-    LR_DEFAULTSIZE = (64),
-    DF_ALLOWOTHERACCOUNTHOOK = (0x1),
-    DESKTOP_CREATEMENU = (0x4),
-    DESKTOP_CREATEWINDOW = (0x2),
-    DESKTOP_ENUMERATE = (0x40),
-    DESKTOP_HOOKCONTROL = (0x8),
-    DESKTOP_JOURNALPLAYBACK = (0x20),
-    DESKTOP_JOURNALRECORD = (0x10),
-    DESKTOP_READOBJECTS = (0x1),
-    DESKTOP_SWITCHDESKTOP = (0x100),
-    DESKTOP_WRITEOBJECTS = (0x80),
-    WSF_VISIBLE = (0x1),
-    CBM_INIT = (0x4),
-    DIB_PAL_COLORS = (1),
-    DIB_RGB_COLORS = (0),
-    GENERIC_READ = (0x80000000),
-    GENERIC_WRITE = (0x40000000),
-    GENERIC_EXECUTE = (0x20000000),
-    FILE_READ_DATA = (0x0001),
-    FILE_LIST_DIRECTORY = (0x0001),
-    FILE_WRITE_DATA = (0x0002),
-    FILE_ADD_FILE = (0x0002),
-    FILE_APPEND_DATA = (0x0004),
-    FILE_ADD_SUBDIRECTORY = (0x0004),
-    FILE_CREATE_PIPE_INSTANCE = (0x0004),
-    FILE_READ_EA = (0x0008),
-    FILE_READ_PROPERTIES = (FILE_READ_EA),
-    FILE_WRITE_EA = (0x0010),
-    FILE_WRITE_PROPERTIES = (FILE_WRITE_EA),
-    FILE_EXECUTE = (0x0020),
-    FILE_TRAVERSE = (0x0020),
-    FILE_DELETE_CHILD = (0x0040),
-    FILE_READ_ATTRIBUTES = (0x0080),
-    FILE_WRITE_ATTRIBUTES = (0x0100),
-    FILE_SHARE_DELETE = (4),
-    FILE_SHARE_READ = (1),
-    FILE_SHARE_WRITE = (2),
-    CONSOLE_TEXTMODE_BUFFER = (1),
-    CREATE_NEW = (1),
-    CREATE_ALWAYS = (2),
-    OPEN_EXISTING = (3),
-    OPEN_ALWAYS = (4),
-    TRUNCATE_EXISTING = (5),
-    INVALID_FILE_ATTRIBUTE = (-1),
-    FILE_ATTRIBUTE_ARCHIVE = (32),
-    FILE_ATTRIBUTE_COMPRESSED = (2048),
-    FILE_ATTRIBUTE_NORMAL = (128),
-    FILE_ATTRIBUTE_DIRECTORY = (16),
-    FILE_ATTRIBUTE_HIDDEN = (2),
-    FILE_ATTRIBUTE_READONLY = (1),
-    FILE_ATTRIBUTE_SYSTEM = (4),
-    FILE_ATTRIBUTE_TEMPORARY = (256),
-    FILE_FLAG_WRITE_THROUGH = (2147483648),
-    FILE_FLAG_OVERLAPPED = (1073741824),
-    FILE_FLAG_NO_BUFFERING = (536870912),
-    FILE_FLAG_RANDOM_ACCESS = (268435456),
-    FILE_FLAG_SEQUENTIAL_SCAN = (134217728),
-    FILE_FLAG_DELETE_ON_CLOSE = (67108864),
-    FILE_FLAG_BACKUP_SEMANTICS = (33554432),
-    FILE_FLAG_POSIX_SEMANTICS = (16777216),
-    SECURITY_ANONYMOUS = (0),
-    SECURITY_IDENTIFICATION = (65536),
-    SECURITY_IMPERSONATION = (131072),
-    SECURITY_DELEGATION = (196608),
-    SECURITY___FILE___TRACKING = (262144),
-    SECURITY_EFFECTIVE_ONLY = (524288),
-    SECURITY_SQOS_PRESENT = (1048576),
-    SEC_COMMIT = (134217728),
-    SEC_IMAGE = (16777216),
-    SEC_NOCACHE = (268435456),
-    SEC_RESERVE = (67108864),
-    PAGE_READONLY = (2),
-    PAGE_READWRITE = (4),
-    PAGE_WRITECOPY = (8),
-    PAGE_EXECUTE = (16),
-    PAGE_EXECUTE_READ = (32),
-    PAGE_EXECUTE_READWRITE = (64),
-    PAGE_EXECUTE_WRITECOPY = (128),
-    PAGE_GUARD = (256),
-    PAGE_NOACCESS = (1),
-    PAGE_NOCACHE = (512),
-    MEM_COMMIT = (4096),
-    MEM_FREE = (65536),
-    MEM_RESERVE = (8192),
-    MEM_IMAGE = (16777216),
-    MEM_MAPPED = (262144),
-    MEM_PRIVATE = (131072),
-    MEM_DECOMMIT = (16384),
-    MEM_RELEASE = (32768),
-    MEM_TOP_DOWN = (1048576),
-    EXCEPTION_GUARD_PAGE = (0x80000001),
-    SECTION_EXTEND_SIZE = (0x10),
-    SECTION_MAP_READ = (0x4),
-    SECTION_MAP_WRITE = (0x2),
-    SECTION_QUERY = (0x1),
-    SECTION_ALL_ACCESS = (0xf001f),
-    FW_DONTCARE = (0),
-    FW_THIN = (100),
-    FW_EXTRALIGHT = (200),
-    FW_LIGHT = (300),
-    FW_NORMAL = (400),
-    FW_REGULAR = (FW_NORMAL),
-    FW_MEDIUM = (500),
-    FW_SEMIBOLD = (600),
-    FW_BOLD = (700),
-    FW_EXTRABOLD = (800),
-    FW_HEAVY = (900),
-    ANSI_CHARSET = (0),
-    DEFAULT_CHARSET = (1),
-    SYMBOL_CHARSET = (2),
-    SHIFTJIS_CHARSET = (128),
-    HANGEUL_CHARSET = (129),
-    GB2312_CHARSET = (134),
-    CHINESEBIG5_CHARSET = (136),
-    GREEK_CHARSET = (161),
-    TURKISH_CHARSET = (162),
-    HEBREW_CHARSET = (177),
-    ARABIC_CHARSET = (178),
-    BALTIC_CHARSET = (186),
-    RUSSIAN_CHARSET = (204),
-    THAI_CHARSET = (222),
-    EASTEUROPE_CHARSET = (238),
-    OEM_CHARSET = (255),
-    OUT_DEFAULT_PRECIS = (0),
-    OUT_STRING_PRECIS = (1),
-    OUT_CHARACTER_PRECIS = (2),
-    OUT_STROKE_PRECIS = (3),
-    OUT_TT_PRECIS = (4),
-    OUT_DEVICE_PRECIS = (5),
-    OUT_RASTER_PRECIS = (6),
-    OUT_TT_ONLY_PRECIS = (7),
-    OUT_OUTLINE_PRECIS = (8),
-    CLIP_DEFAULT_PRECIS = (0),
-    CLIP_CHARACTER_PRECIS = (1),
-    CLIP_STROKE_PRECIS = (2),
-    CLIP_MASK = (15),
-    CLIP_LH_ANGLES = (16),
-    CLIP_TT_ALWAYS = (32),
-    CLIP_EMBEDDED = (128),
-    DEFAULT_QUALITY = (0),
-    DRAFT_QUALITY = (1),
-    PROOF_QUALITY = (2),
-    DEFAULT_PITCH = (0),
-    FIXED_PITCH = (1),
-    VARIABLE_PITCH = (2),
-    FF_DECORATIVE = (80),
-    FF_DONTCARE = (0),
-    FF_MODERN = (48),
-    FF_ROMAN = (16),
-    FF_SCRIPT = (64),
-    FF_SWISS = (32),
-    HS_BDIAGONAL = (3),
-    HS_CROSS = (4),
-    HS_DIAGCROSS = (5),
-    HS_FDIAGONAL = (2),
-    HS_HORIZONTAL = (0),
-    HS_VERTICAL = (1),
-    LR_DEFAULTCOLOR = (0),
-    LR_LOADREALSIZE = (128),
-    MAILSLOT_WAIT_FOREVER = (0xffffffff),
-    MAILSLOT_NO_MESSAGE = (0xffffffff),
-    CMB_MASKED = (2),
-    PIPE_ACCESS_DUPLEX = (3),
-    PIPE_ACCESS_INBOUND = (1),
-    PIPE_ACCESS_OUTBOUND = (2),
-    WRITE_DAC = (0x40000),
-    WRITE_OWNER = (0x80000),
-    ACCESS_SYSTEM_SECURITY = (0x1000000),
-    PIPE_TYPE_BYTE = (0),
-    PIPE_TYPE_MESSAGE = (4),
-    PIPE_READMODE_BYTE = (0),
-    PIPE_READMODE_MESSAGE = (2),
-    PIPE_WAIT = (0),
-    PIPE_NOWAIT = (1),
-    PS_GEOMETRIC = (65536),
-    PS_COSMETIC = (0),
-    PS_ALTERNATE = (8),
-    PS_SOLID = (0),
-    PS_DASH = (1),
-    PS_DOT = (2),
-    PS_DASHDOT = (3),
-    PS_DASHDOTDOT = (4),
-    PS_NULL = (5),
-    PS_USERSTYLE = (7),
-    PS_INSIDEFRAME = (6),
-    PS_ENDCAP_ROUND = (0),
-    PS_ENDCAP_SQUARE = (256),
-    PS_ENDCAP_FLAT = (512),
-    PS_JOIN_BEVEL = (4096),
-    PS_JOIN_MITER = (8192),
-    PS_JOIN_ROUND = (0),
-    PS_STYLE_MASK = (15),
-    PS_ENDCAP_MASK = (3840),
-    PS_TYPE_MASK = (983040),
-    ALTERNATE = (1),
-    WINDING = (2),
-    CREATE_DEFAULT_ERROR_MODE = (67108864),
-    CREATE_NEW_CONSOLE = (16),
-    CREATE_NEW_PROCESS_GROUP = (512),
-    CREATE_NO_WINDOW = (0x8000000),
-    CREATE_SEPARATE_WOW_VDM = (2048),
-    CREATE_SUSPENDED = (4),
-    CREATE_UNICODE_ENVIRONMENT = (1024),
-    DEBUG_PROCESS = (1),
-    DEBUG_ONLY_THIS_PROCESS = (2),
-    DETACHED_PROCESS = (8),
-    HIGH_PRIORITY_CLASS = (128),
-    IDLE_PRIORITY_CLASS = (64),
-    NORMAL_PRIORITY_CLASS = (32),
-    REALTIME_PRIORITY_CLASS = (256),
-    SERVICE_ALL_ACCESS = (0xf01ff),
-    SERVICE_CHANGE_CONFIG = (2),
-    SERVICE_ENUMERATE_DEPENDENTS = (8),
-    SERVICE_INTERROGATE = (128),
-    SERVICE_PAUSE_CONTINUE = (64),
-    SERVICE_QUERY_CONFIG = (1),
-    SERVICE_QUERY_STATUS = (4),
-    SERVICE_START = (16),
-    SERVICE_STOP = (32),
-    SERVICE_USER_DEFINED_CONTROL = (256),
-    SERVICE_DELETE = (0x10000),
-    SERVICE_READ_CONTROL = (0x20000),
-    SERVICE_GENERIC_EXECUTE = (0x20000000),
-    SERVICE_ERROR_IGNORE = (0),
-    SERVICE_ERROR_NORMAL = (1),
-    SERVICE_ERROR_SEVERE = (2),
-    SERVICE_ERROR_CRITICAL = (3),
-    TAPE_FIXED_PARTITIONS = (0),
-    TAPE_INITIATOR_PARTITIONS = (0x2),
-    TAPE_SELECT_PARTITIONS = (0x1),
-    TAPE_FILEMARKS = (0x1),
-    TAPE_LONG_FILEMARKS = (0x3),
-    TAPE_SETMARKS = (0),
-    TAPE_SHORT_FILEMARKS = (0x2),
-    CW_USEDEFAULT = (0x80000000),
-    WS_BORDER = (0x800000),
-    WS_CAPTION = (0xc00000),
-    WS_CHILD = (0x40000000),
-    WS_CHILDWINDOW = (0x40000000),
-    WS_CLIPCHILDREN = (0x2000000),
-    WS_CLIPSIBLINGS = (0x4000000),
-    WS_DISABLED = (0x8000000),
-    WS_DLGFRAME = (0x400000),
-    WS_GROUP = (0x20000),
-    WS_HSCROLL = (0x100000),
-    WS_ICONIC = (0x20000000),
-    WS_MAXIMIZE = (0x1000000),
-    WS_MAXIMIZEBOX = (0x10000),
-    WS_MINIMIZE = (0x20000000),
-    WS_MINIMIZEBOX = (0x20000),
-    WS_OVERLAPPED = (0),
-    WS_OVERLAPPEDWINDOW = (0xcf0000),
-    WS_POPUP = (0x80000000),
-    WS_POPUPWINDOW = (0x80880000),
-    WS_SIZEBOX = (0x40000),
-    WS_SYSMENU = (0x80000),
-    WS_TABSTOP = (0x10000),
-    WS_THICKFRAME = (0x40000),
-    WS_TILED = (0),
-    WS_TILEDWINDOW = (0xcf0000),
-    WS_VISIBLE = (0x10000000),
-    WS_VSCROLL = (0x200000),
-    MDIS_ALLCHILDSTYLES = (0x1),
-    BS_3STATE = (0x5),
-    BS_AUTO3STATE = (0x6),
-    BS_AUTOCHECKBOX = (0x3),
-    BS_AUTORADIOBUTTON = (0x9),
-    BS_BITMAP = (0x80),
-    BS_BOTTOM = (0x800),
-    BS_CENTER = (0x300),
-    BS_CHECKBOX = (0x2),
-    BS_DEFPUSHBUTTON = (0x1),
-    BS_GROUPBOX = (0x7),
-    BS_ICON = (0x40),
-    BS_LEFT = (0x100),
-    BS_LEFTTEXT = (0x20),
-    BS_MULTILINE = (0x2000),
-    BS_NOTIFY = (0x4000),
-    BS_OWNERDRAW = (0xb),
-    BS_PUSHBUTTON = (0),
-    BS_PUSHLIKE = (0x1000),
-    BS_RADIOBUTTON = (0x4),
-    BS_RIGHT = (0x200),
-    BS_RIGHTBUTTON = (0x20),
-    BS_TEXT = (0),
-    BS_TOP = (0x400),
-    BS_USERBUTTON = (0x8),
-    BS_VCENTER = (0xc00),
-    CBS_AUTOHSCROLL = (0x40),
-    CBS_DISABLENOSCROLL = (0x800),
-    CBS_DROPDOWN = (0x2),
-    CBS_DROPDOWNLIST = (0x3),
-    CBS_HASSTRINGS = (0x200),
-    CBS_LOWERCASE = (0x4000),
-    CBS_NOINTEGRALHEIGHT = (0x400),
-    CBS_OEMCONVERT = (0x80),
-    CBS_OWNERDRAWFIXED = (0x10),
-    CBS_OWNERDRAWVARIABLE = (0x20),
-    CBS_SIMPLE = (0x1),
-    CBS_SORT = (0x100),
-    CBS_UPPERCASE = (0x2000),
-    ES_AUTOHSCROLL = (0x80),
-    ES_AUTOVSCROLL = (0x40),
-    ES_CENTER = (0x1),
-    ES_LEFT = (0),
-    ES_LOWERCASE = (0x10),
-    ES_MULTILINE = (0x4),
-    ES_NOHIDESEL = (0x100),
-    ES_NUMBER = (0x2000),
-    ES_OEMCONVERT = (0x400),
-    ES_PASSWORD = (0x20),
-    ES_READONLY = (0x800),
-    ES_RIGHT = (0x2),
-    ES_UPPERCASE = (0x8),
-    ES_WANTRETURN = (0x1000),
-    LBS_DISABLENOSCROLL = (0x1000),
-    LBS_EXTENDEDSEL = (0x800),
-    LBS_HASSTRINGS = (0x40),
-    LBS_MULTICOLUMN = (0x200),
-    LBS_MULTIPLESEL = (0x8),
-    LBS_NODATA = (0x2000),
-    LBS_NOINTEGRALHEIGHT = (0x100),
-    LBS_NOREDRAW = (0x4),
-    LBS_NOSEL = (0x4000),
-    LBS_NOTIFY = (0x1),
-    LBS_OWNERDRAWFIXED = (0x10),
-    LBS_OWNERDRAWVARIABLE = (0x20),
-    LBS_SORT = (0x2),
-    LBS_STANDARD = (0xa00003),
-    LBS_USETABSTOPS = (0x80),
-    LBS_WANTKEYBOARDINPUT = (0x400),
-    SBS_BOTTOMALIGN = (0x4),
-    SBS_HORZ = (0),
-    SBS_LEFTALIGN = (0x2),
-    SBS_RIGHTALIGN = (0x4),
-    SBS_SIZEBOX = (0x8),
-    SBS_SIZEBOXBOTTOMRIGHTALIGN = (0x4),
-    SBS_SIZEBOXTOPLEFTALIGN = (0x2),
-    SBS_SIZEGRIP = (0x10),
-    SBS_TOPALIGN = (0x2),
-    SBS_VERT = (0x1),
-    SS_BITMAP = (0xe),
-    SS_BLACKFRAME = (0x7),
-    SS_BLACKRECT = (0x4),
-    SS_CENTER = (0x1),
-    SS_CENTERIMAGE = (0x200),
-    SS_ENHMETAFILE = (0xf),
-    SS_ETCHEDFRAME = (0x12),
-    SS_ETCHEDHORZ = (0x10),
-    SS_ETCHEDVERT = (0x11),
-    SS_GRAYFRAME = (0x8),
-    SS_GRAYRECT = (0x5),
-    SS_ICON = (0x3),
-    SS_LEFT = (0),
-    SS_LEFTNOWORDWRAP = (0xc),
-    SS_NOPREFIX = (0x80),
-    SS_NOTIFY = (0x100),
-    SS_OWNERDRAW = (0xd),
-    SS_REALSIZEIMAGE = (0x800),
-    SS_RIGHT = (0x2),
-    SS_RIGHTJUST = (0x400),
-    SS_SIMPLE = (0xb),
-    SS_SUNKEN = (0x1000),
-    SS_USERITEM = (0xa),
-    SS_WHITEFRAME = (0x9),
-    SS_WHITERECT = (0x6),
-    DS_3DLOOK = (0x4),
-    DS_ABSALIGN = (0x1),
-    DS_CENTER = (0x800),
-    DS_CENTERMOUSE = (0x1000),
-    DS___FILE__HELP = (0x2000),
-    DS_CONTROL = (0x400),
-    DS_FIXEDSYS = (0x8),
-    DS_LOCALEDIT = (0x20),
-    DS_MODALFRAME = (0x80),
-    DS_NOFAILCREATE = (0x10),
-    DS_NOIDLEMSG = (0x100),
-    DS_SETFONT = (0x40),
-    DS_SETFOREGROUND = (0x200),
-    DS_SYSMODAL = (0x2),
-    WS_EX_ACCEPTFILES = (0x10),
-    WS_EX_APPWINDOW = (0x40000),
-    WS_EX_CLIENTEDGE = (0x200),
-    WS_EX___FILE__HELP = (0x400),
-    WS_EX_CONTROLPARENT = (0x10000),
-    WS_EX_DLGMODALFRAME = (0x1),
-    WS_EX_LEFT = (0),
-    WS_EX_LEFTSCROLLBAR = (0x4000),
-    WS_EX_LTRREADING = (0),
-    WS_EX_MDICHILD = (0x40),
-    WS_EX_NOPARENTNOTIFY = (0x4),
-    WS_EX_OVERLAPPEDWINDOW = (0x300),
-    WS_EX_PALETTEWINDOW = (0x188),
-    WS_EX_RIGHT = (0x1000),
-    WS_EX_RIGHTSCROLLBAR = (0),
-    WS_EX_RTLREADING = (0x2000),
-    WS_EX_STATICEDGE = (0x20000),
-    WS_EX_TOOLWINDOW = (0x80),
-    WS_EX_TOPMOST = (0x8),
-    WS_EX_TRANSPARENT = (0x20),
-    WS_EX_WINDOWEDGE = (0x100),
-    WINSTA_ACCESSCLIPBOARD = (0x4),
-    WINSTA_ACCESSGLOBALATOMS = (0x20),
-    WINSTA_CREATEDESKTOP = (0x8),
-    WINSTA_ENUMDESKTOPS = (0x1),
-    WINSTA_ENUMERATE = (0x100),
-    WINSTA_EXITWINDOWS = (0x40),
-    WINSTA_READATTRIBUTES = (0x2),
-    WINSTA_READSCREEN = (0x200),
-    WINSTA_WRITEATTRIBUTES = (0x10),
-    WH_CALLWNDPROC = (4),
-    WH_CALLWNDPROCRET = (12),
-    WH_CBT = (5),
-    WH_DEBUG = (9),
-    WH_GETMESSAGE = (3),
-    WH_JOURNALPLAYBACK = (1),
-    WH_JOURNALRECORD = (0),
-    WH_KEYBOARD = (2),
-    WH_MOUSE = (7),
-    WH_MSGFILTER = -((1)),
-    WH_SHELL = (10),
-    WH_SYSMSGFILTER = (6),
-    WH_FOREGROUNDIDLE = (11),
-    DDD_RAW_TARGET_PATH = (1),
-    DDD_REMOVE_DEFINITION = (2),
-    DDD_EXACT_MATCH_ON_REMOVE = (4),
-    DC_BINNAMES = (12),
-    DC_BINS = (6),
-    DC_COPIES = (18),
-    DC_DRIVER = (11),
-    DC_DATATYPE_PRODUCED = (21),
-    DC_DUPLEX = (7),
-    DC_EMF_COMPLIANT = (20),
-    DC_ENUMRESOLUTIONS = (13),
-    DC_EXTRA = (9),
-    DC_FIELDS = (1),
-    DC_FILEDEPENDENCIES = (14),
-    DC_MAXEXTENT = (5),
-    DC_MINEXTENT = (4),
-    DC_ORIENTATION = (17),
-    DC_PAPERNAMES = (16),
-    DC_PAPERS = (2),
-    DC_PAPERSIZE = (3),
-    DC_SIZE = (8),
-    DC_TRUETYPE = (15),
-    DCTT_BITMAP = (0x1),
-    DCTT_DOWNLOAD = (0x2),
-    DCTT_SUBDEV = (0x4),
-    DC_VERSION = (10),
-    DC_BINADJUST = (19),
-    DDL_ARCHIVE = (32),
-    DDL_DIRECTORY = (16),
-    DDL_DRIVES = (16384),
-    DDL_EXCLUSIVE = (32768),
-    DDL_HIDDEN = (2),
-    DDL_READONLY = (1),
-    DDL_READWRITE = (0),
-    DDL_SYSTEM = (4),
-    DDL_POSTMSGS = (8192),
-    DLL_PROCESS_ATTACH = (1),
-    DLL_THREAD_ATTACH = (2),
-    DLL_PROCESS_DETACH = (0),
-    DLL_THREAD_DETACH = (3),
-    DM_IN_BUFFER = (8),
-    DM_MODIFY = (8),
-    DM_IN_PROMPT = (4),
-    DM_PROMPT = (4),
-    DM_OUT_BUFFER = (2),
-    DM_COPY = (2),
-    DM_UPDATE = (1),
-    IDANI_OPEN = (1),
-    IDANI_CLOSE = (2),
-    DC_ACTIVE = (1),
-    DC_SMALLCAP = (2),
-    BDR_RAISEDINNER = (4),
-    BDR_SUNKENINNER = (8),
-    BDR_RAISEDOUTER = (1),
-    BDR_SUNKENOUTER = (1),
-    EDGE_BUMP = (9),
-    EDGE_ETCHED = (6),
-    EDGE_RAISED = (5),
-    EDGE_SUNKEN = (10),
-    BF_ADJUST = (8192),
-    BF_BOTTOM = (8),
-    BF_BOTTOMLEFT = (9),
-    BF_BOTTOMRIGHT = (12),
-    BF_DIAGONAL = (16),
-    BF_DIAGONAL_ENDBOTTOMLEFT = (25),
-    BF_DIAGONAL_ENDBOTTOMRIGHT = (28),
-    BF_DIAGONAL_ENDTOPLEFT = (19),
-    BF_DIAGONAL_ENDTOPRIGHT = (22),
-    BF_FLAT = (16384),
-    BF_LEFT = (1),
-    BF_MIDDLE = (2048),
-    BF_MONO = (32768),
-    BF_RECT = (15),
-    BF_RIGHT = (4),
-    BF_SOFT = (4096),
-    BF_TOP = (2),
-    BF_TOPLEFT = (3),
-    BF_TOPRIGHT = (6),
-    DFC_BUTTON = (4),
-    DFC_CAPTION = (1),
-    DFC_MENU = (2),
-    DFC_SCROLL = (3),
-    DFCS_BUTTON3STATE = (8),
-    DFCS_BUTTONCHECK = (0),
-    DFCS_BUTTONPUSH = (16),
-    DFCS_BUTTONRADIO = (4),
-    DFCS_BUTTONRADIOIMAGE = (1),
-    DFCS_BUTTONRADIOMASK = (2),
-    DFCS_CAPTIONCLOSE = (0),
-    DFCS_CAPTIONHELP = (4),
-    DFCS_CAPTIONMAX = (2),
-    DFCS_CAPTIONMIN = (1),
-    DFCS_CAPTIONRESTORE = (3),
-    DFCS_MENUARROW = (0),
-    DFCS_MENUBULLET = (2),
-    DFCS_MENUCHECK = (1),
-    DFCS_SCROLLCOMBOBOX = (5),
-    DFCS_SCROLLDOWN = (1),
-    DFCS_SCROLLLEFT = (2),
-    DFCS_SCROLLRIGHT = (3),
-    DFCS_SCROLLSIZEGRIP = (8),
-    DFCS_SCROLLUP = (0),
-    DFCS_ADJUSTRECT = (8192),
-    DFCS_CHECKED = (1024),
-    DFCS_FLAT = (16384),
-    DFCS_INACTIVE = (256),
-    DFCS_MONO = (32768),
-    DFCS_PUSHED = (512),
-    DI_COMPAT = (4),
-    DI_DEFAULTSIZE = (8),
-    DI_IMAGE = (2),
-    DI_MASK = (1),
-    DI_NORMAL = (3),
-    DST_BITMAP = (4),
-    DST_COMPLEX = (0),
-    DST_ICON = (3),
-    DST_PREFIXTEXT = (2),
-    DST_TEXT = (1),
-    DSS_NORMAL = (0),
-    DSS_UNION = (16),
-    DSS_DISABLED = (32),
-    DSS_MONO = (128),
-    SBT_NOBORDERS = (256),
-    SBT_OWNERDRAW = (4096),
-    SBT_POPOUT = (512),
-    SBT_RTLREADING = (1024),
-    DT_BOTTOM = (8),
-    DT_CALCRECT = (1024),
-    DT_CENTER = (1),
-    DT_EDITCONTROL = (8192),
-    DT_END_ELLIPSIS = (32768),
-    DT_PATH_ELLIPSIS = (16384),
-    DT_EXPANDTABS = (64),
-    DT_EXTERNALLEADING = (512),
-    DT_LEFT = (0),
-    DT_MODIFYSTRING = (65536),
-    DT_NOCLIP = (256),
-    DT_NOPREFIX = (2048),
-    DT_RIGHT = (2),
-    DT_RTLREADING = (131072),
-    DT_SINGLELINE = (32),
-    DT_TABSTOP = (128),
-    DT_TOP = (0),
-    DT_VCENTER = (4),
-    DT_WORDBREAK = (16),
-    DT_INTERNAL = (4096),
-    DUPLICATE_CLOSE_SOURCE = (1),
-    DUPLICATE_SAME_ACCESS = (2),
-    FILE_MAP_ALL_ACCESS = (0xf001f),
-    FILE_MAP_READ = (4),
-    FILE_MAP_WRITE = (2),
-    FILE_MAP_COPY = (1),
-    FILE_MAP_EXECUTE = (0x20),
-    MUTEX_ALL_ACCESS = (0x1f0001),
-    MUTEX_MODIFY_STATE = (1),
-    SYNCHRONIZE = (0x100000),
-    SEMAPHORE_ALL_ACCESS = (0x1f0003),
-    SEMAPHORE_MODIFY_STATE = (2),
-    EVENT_ALL_ACCESS = (0x1f0003),
-    EVENT_MODIFY_STATE = (2),
-    KEY_ALL_ACCESS = (0xf003f),
-    KEY_CREATE_LINK = (32),
-    KEY_CREATE_SUB_KEY = (4),
-    KEY_ENUMERATE_SUB_KEYS = (8),
-    KEY_EXECUTE = (0x20019),
-    KEY_NOTIFY = (16),
-    KEY_QUERY_VALUE = (1),
-    KEY_READ = (0x20019),
-    KEY_SET_VALUE = (2),
-    KEY_WRITE = (0x20006),
-    PROCESS_ALL_ACCESS = (0x1f0fff),
-    PROCESS_CREATE_PROCESS = (128),
-    PROCESS_CREATE_THREAD = (2),
-    PROCESS_DUP_HANDLE = (64),
-    PROCESS_QUERY_INFORMATION = (1024),
-    PROCESS_SET_INFORMATION = (512),
-    PROCESS_TERMINATE = (1),
-    PROCESS_VM_OPERATION = (8),
-    PROCESS_VM_READ = (16),
-    PROCESS_VM_WRITE = (32),
-    THREAD_ALL_ACCESS = (0x1f03ff),
-    THREAD_DIRECT_IMPERSONATION = (512),
-    THREAD_GET___FILE__ = (8),
-    THREAD_IMPERSONATE = (256),
-    THREAD_QUERY_INFORMATION = (64),
-    THREAD_SET___FILE__ = (16),
-    THREAD_SET_INFORMATION = (32),
-    THREAD_SET_THREAD_TOKEN = (128),
-    THREAD_SUSPEND_RESUME = (2),
-    THREAD_TERMINATE = (1),
-    WB_ISDELIMITER = (2),
-    WB_LEFT = (0),
-    WB_RIGHT = (1),
-    SB_BOTH = (3),
-    SB_CTL = (2),
-    SB_HORZ = (0),
-    SB_VERT = (1),
-    ESB_DISABLE_BOTH = (3),
-    ESB_DISABLE_DOWN = (2),
-    ESB_DISABLE_LEFT = (1),
-    ESB_DISABLE_LTUP = (1),
-    ESB_DISABLE_RIGHT = (2),
-    ESB_DISABLE_RTDN = (2),
-    ESB_DISABLE_UP = (1),
-    ESB_ENABLE_BOTH = (0),
-    SB_LINEUP = (0),
-    SB_LINEDOWN = (1),
-    SB_LINELEFT = (0),
-    SB_LINERIGHT = (1),
-    SB_PAGEUP = (2),
-    SB_PAGEDOWN = (3),
-    SB_PAGELEFT = (2),
-    SB_PAGERIGHT = (3),
-    SB_THUMBPOSITION = (4),
-    SB_THUMBTRACK = (5),
-    SB_ENDSCROLL = (8),
-    SB_LEFT = (6),
-    SB_RIGHT = (7),
-    SB_BOTTOM = (7),
-    SB_TOP = (6),
-    ENUM_ALL_CALENDARS = -((1)),
-    DATE_SHORTDATE = (1),
-    DATE_LONGDATE = (2),
-    SERVICE_ACTIVE = (1),
-    SERVICE_INACTIVE = (2),
-    DEVICE_FONTTYPE = (2),
-    RASTER_FONTTYPE = (1),
-    TRUETYPE_FONTTYPE = (4),
-    OBJ_BRUSH = (2),
-    OBJ_PEN = (1),
-    OBJ_PAL = (5),
-    OBJ_FONT = (6),
-    OBJ_BITMAP = (7),
-    OBJ_EXTPEN = (11),
-    OBJ_REGION = (8),
-    OBJ_DC = (3),
-    OBJ_MEMDC = (10),
-    OBJ_METAFILE = (9),
-    OBJ_METADC = (4),
-    OBJ_ENHMETAFILE = (13),
-    OBJ_ENHMETADC = (12),
-    SERVICE_WIN32 = (48),
-    SERVICE_DRIVER = (11),
-    CP_INSTALLED = (1),
-    CP_SUPPORTED = (2),
-    LCID_INSTALLED = (1),
-    LCID_SUPPORTED = (2),
-    TAPE_ERASE_LONG = (0x1),
-    TAPE_ERASE_SHORT = (0),
-    SP_ERROR = -((1)),
-    SP_OUTOFDISK = -((4)),
-    SP_OUTOFMEMORY = -((5)),
-    SP_USERABORT = -((3)),
-    PHYSICALWIDTH = (110),
-    PHYSICALHEIGHT = (111),
-    PHYSICALOFFSETX = (112),
-    PHYSICALOFFSETY = (113),
-    SCALINGFACTORX = (114),
-    SCALINGFACTORY = (115),
-    QUERYESCSUPPORT = (8),
-    cABORTDOC = (2),
-    cENDDOC = (11),
-    GETPHYSPAGESIZE = (12),
-    GETPRINTINGOFFSET = (13),
-    GETSCALINGFACTOR = (14),
-    NEWFRAME = (1),
-    NEXTBAND = (3),
-    PASSTHROUGH = (19),
-    cSETABORTPROC = (9),
-    cSTARTDOC = (10),
-    CLRDTR = (6),
-    CLRRTS = (4),
-    SETDTR = (5),
-    SETRTS = (3),
-    SETXOFF = (1),
-    SETXON = (2),
-    SETBREAK = (8),
-    CLRBREAK = (9),
-    EWX_FORCE = (4),
-    EWX_LOGOFF = (0),
-    EWX_POWEROFF = (8),
-    EWX_REBOOT = (2),
-    EWX_SHUTDOWN = (1),
-    FLOODFILLBORDER = (0),
-    FLOODFILLSURFACE = (1),
-    ETO_CLIPPED = (4),
-    ETO_GLYPH_INDEX = (16),
-    ETO_OPAQUE = (2),
-    ETO_RTLREADING = (128),
-    FOREGROUND_BLUE = (1),
-    FOREGROUND_GREEN = (2),
-    FOREGROUND_RED = (4),
-    FOREGROUND_INTENSITY = (8),
-    BACKGROUND_BLUE = (16),
-    BACKGROUND_GREEN = (32),
-    BACKGROUND_RED = (64),
-    BACKGROUND_INTENSITY = (128),
-    FILE_NOTIFY_CHANGE_FILE_NAME = (1),
-    FILE_NOTIFY_CHANGE_DIR_NAME = (2),
-    FILE_NOTIFY_CHANGE_ATTRIBUTES = (4),
-    FILE_NOTIFY_CHANGE_SIZE = (8),
-    FILE_NOTIFY_CHANGE_LAST_WRITE = (16),
-    FILE_NOTIFY_CHANGE_SECURITY = (256),
-    MAP_FOLDCZONE = (16),
-    MAP_FOLDDIGITS = (128),
-    MAP_PRECOMPOSED = (32),
-    MAP_COMPOSITE = (64),
-    HC_ACTION = (0),
-    FORMAT_MESSAGE_ALLOCATE_BUFFER = (256),
-    FORMAT_MESSAGE_IGNORE_INSERTS = (512),
-    FORMAT_MESSAGE_FROM_STRING = (1024),
-    FORMAT_MESSAGE_FROM_HMODULE = (2048),
-    FORMAT_MESSAGE_FROM_SYSTEM = (4096),
-    FORMAT_MESSAGE_ARGUMENT_ARRAY = (8192),
-    FORMAT_MESSAGE_MAX_WIDTH_MASK = (255),
-    GDICOMMENT_WINDOWS_METAFILE = -((2147483647)),
-    GDICOMMENT_BEGINGROUP = (2),
-    GDICOMMENT_ENDGROUP = (3),
-    GDICOMMENT_MULTIFORMATS = (1073741828),
-    GDICOMMENT_IDENTIFIER = (1128875079),
-    CTRL_C_EVENT = (0),
-    CTRL_BREAK_EVENT = (1),
-    CTRL_CLOSE_EVENT = (2),
-    CTRL_LOGOFF_EVENT = (5),
-    CTRL_SHUTDOWN_EVENT = (6),
-    AD_COUNTERCLOCKWISE = (1),
-    AD_CLOCKWISE = (2),
-    SCS_32BIT_BINARY = (0),
-    SCS_DOS_BINARY = (1),
-    SCS_OS216_BINARY = (5),
-    SCS_PIF_BINARY = (3),
-    SCS_POSIX_BINARY = (4),
-    SCS_WOW_BINARY = (2),
-    DCB_DISABLE = (8),
-    DCB_ENABLE = (4),
-    DCB_RESET = (1),
-    DCB_SET = (3),
-    DCB_ACCUMULATE = (2),
-    GCP_DBCS = (1),
-    GCP_ERROR = (0x8000),
-    GCP_CLASSIN = (0x80000),
-    GCP_DIACRITIC = (256),
-    GCP_DISPLAYZWG = (0x400000),
-    GCP_GLYPHSHAPE = (16),
-    GCP_JUSTIFY = (0x10000),
-    GCP_JUSTIFYIN = (0x200000),
-    GCP_KASHIDA = (1024),
-    GCP_LIGATE = (32),
-    GCP_MAXEXTENT = (0x100000),
-    GCP_NEUTRALOVERRIDE = (0x2000000),
-    GCP_NUMERICOVERRIDE = (0x1000000),
-    GCP_NUMERICSLATIN = (0x4000000),
-    GCP_NUMERICSLOCAL = (0x8000000),
-    GCP_REORDER = (2),
-    GCP_SYMSWAPOFF = (0x800000),
-    GCP_USEKERNING = (8),
-    FLI_GLYPHS = (0x40000),
-    FLI_MASK = (0x103b),
-    GCW_ATOM = -((32)),
-    GCL_CBCLSEXTRA = -((20)),
-    GCL_CBWNDEXTRA = -((18)),
-    GCL_HBRBACKGROUND = -((10)),
-    GCL_HCURSOR = -((12)),
-    GCL_HICON = -((14)),
-    GCL_HICONSM = -((34)),
-    GCL_HMODULE = -((16)),
-    GCL_MENUNAME = -((8)),
-    GCL_STYLE = -((26)),
-    GCL_WNDPROC = -((24)),
-    CF_BITMAP = (2),
-    CF_DIB = (8),
-    CF_PALETTE = (9),
-    CF_ENHMETAFILE = (14),
-    CF_METAFILEPICT = (3),
-    CF_OEMTEXT = (7),
-    CF_TEXT = (1),
-    CF_UNICODETEXT = (13),
-    CF_DIF = (5),
-    CF_DSPBITMAP = (130),
-    CF_DSPENHMETAFILE = (142),
-    CF_DSPMETAFILEPICT = (131),
-    CF_DSPTEXT = (129),
-    CF_GDIOBJFIRST = (768),
-    CF_GDIOBJLAST = (1023),
-    CF_HDROP = (15),
-    CF_LOCALE = (16),
-    CF_OWNERDISPLAY = (128),
-    CF_PENDATA = (10),
-    CF_PRIVATEFIRST = (512),
-    CF_PRIVATELAST = (767),
-    CF_RIFF = (11),
-    CF_SYLK = (4),
-    CF_WAVE = (12),
-    CF_TIFF = (6),
-    EV_BREAK = (64),
-    EV_CTS = (8),
-    EV_DSR = (16),
-    EV_ERR = (128),
-    EV_EVENT1 = (2048),
-    EV_EVENT2 = (4096),
-    EV_PERR = (512),
-    EV_RING = (256),
-    EV_RLSD = (32),
-    EV_RX80FULL = (1024),
-    EV_RXCHAR = (1),
-    EV_RXFLAG = (2),
-    EV_TXEMPTY = (4),
-    MS_CTS_ON = (0x10),
-    MS_DSR_ON = (0x20),
-    MS_RING_ON = (0x40),
-    MS_RLSD_ON = (0x80),
-    MAX_COMPUTERNAME_LENGTH = (15),
-    ENABLE_LINE_INPUT = (2),
-    ENABLE_ECHO_INPUT = (4),
-    ENABLE_PROCESSED_INPUT = (1),
-    ENABLE_WINDOW_INPUT = (8),
-    ENABLE_MOUSE_INPUT = (16),
-    ENABLE_PROCESSED_OUTPUT = (1),
-    ENABLE_WRAP_AT_EOL_OUTPUT = (2),
-    CP_ACP = (0),
-    CP_MACCP = (2),
-    CP_OEMCP = (1),
-    CP_UTF8 = 65001,
-    DATE_USE_ALT_CALENDAR = (4),
-    DCX_WINDOW = (0x1),
-    DCX_CACHE = (0x2),
-    DCX_PARENTCLIP = (0x20),
-    DCX_CLIPSIBLINGS = (0x10),
-    DCX_CLIPCHILDREN = (0x8),
-    DCX_NORESETATTRS = (0x4),
-    DCX_LOCKWINDOWUPDATE = (0x400),
-    DCX_EXCLUDERGN = (0x40),
-    DCX_INTERSECTRGN = (0x80),
-    DCX_VALIDATE = (0x200000),
-    DRIVERVERSION = (0),
-    TECHNOLOGY = (2),
-    DT_PLOTTER = (0),
-    DT_RASDISPLAY = (1),
-    DT_RASPRINTER = (2),
-    DT_RASCAMERA = (3),
-    DT_CHARSTREAM = (4),
-    DT_METAFILE = (5),
-    DT_DISPFILE = (6),
-    HORZSIZE = (4),
-    VERTSIZE = (6),
-    HORZRES = (8),
-    VERTRES = (10),
-    LOGPIXELSX = (88),
-    LOGPIXELSY = (90),
-    BITSPIXEL = (12),
-    PLANES = (14),
-    NUMBRUSHES = (16),
-    NUMPENS = (18),
-    NUMFONTS = (22),
-    NUMCOLORS = (24),
-    ASPECTX = (40),
-    ASPECTY = (42),
-    ASPECTXY = (44),
-    PDEVICESIZE = (26),
-    CLIPCAPS = (36),
-    SIZEPALETTE = (104),
-    NUMRESERVED = (106),
-    COLORRES = (108),
-    VREFRESH = (116),
-    DESKTOPHORZRES = (118),
-    DESKTOPVERTRES = (117),
-    BLTALIGNMENT = (119),
-    RASTERCAPS = (38),
-    RC_BANDING = (2),
-    RC_BITBLT = (1),
-    RC_BITMAP64 = (8),
-    RC_DI_BITMAP = (128),
-    RC_DIBTODEV = (512),
-    RC_FLOODFILL = (4096),
-    RC_GDI20_OUTPUT = (16),
-    RC_PALETTE = (256),
-    RC_SCALING = (4),
-    RC_STRETCHBLT = (2048),
-    RC_STRETCHDIB = (8192),
-    CURVECAPS = (28),
-    CC_NONE = (0),
-    CC_CIRCLES = (1),
-    CC_PIE = (2),
-    CC_CHORD = (4),
-    CC_ELLIPSES = (8),
-    CC_WIDE = (16),
-    CC_STYLED = (32),
-    CC_WIDESTYLED = (64),
-    CC_INTERIORS = (128),
-    CC_ROUNDRECT = (256),
-    LINECAPS = (30),
-    LC_NONE = (0),
-    LC_POLYLINE = (2),
-    LC_MARKER = (4),
-    LC_POLYMARKER = (8),
-    LC_WIDE = (16),
-    LC_STYLED = (32),
-    LC_WIDESTYLED = (64),
-    LC_INTERIORS = (128),
-    POLYGONALCAPS = (32),
-    PC_NONE = (0),
-    PC_POLYGON = (1),
-    PC_RECTANGLE = (2),
-    PC_WINDPOLYGON = (4),
-    PC_SCANLINE = (8),
-    PC_WIDE = (16),
-    PC_STYLED = (32),
-    PC_WIDESTYLED = (64),
-    PC_INTERIORS = (128),
-    TEXTCAPS = (34),
-    TC_OP_CHARACTER = (1),
-    TC_OP_STROKE = (2),
-    TC_CP_STROKE = (4),
-    TC_CR_90 = (8),
-    TC_CR_ANY = (16),
-    TC_SF_X_YINDEP = (32),
-    TC_SA_DOUBLE = (64),
-    TC_SA_INTEGER = (128),
-    TC_SA_CONTIN = (256),
-    TC_EA_DOUBLE = (512),
-    TC_IA_ABLE = (1024),
-    TC_UA_ABLE = (2048),
-    TC_SO_ABLE = (4096),
-    TC_RA_ABLE = (8192),
-    TC_VA_ABLE = (16384),
-    TC_RESERVED = (32768),
-    TC_SCROLLBLT = (65536),
-    PC_PATHS = (512),
-    DRIVE_REMOVABLE = (2),
-    DRIVE_FIXED = (3),
-    DRIVE_REMOTE = (4),
-    DRIVE_CDROM = (5),
-    DRIVE_RAMDISK = (6),
-    DRIVE_UNKNOWN = (0),
-    DRIVE_NO_ROOT_DIR = (1),
-    EXCEPTION_ACCESS_VIOLATION = (0xc0000005),
-    EXCEPTION_BREAKPOINT = (0x80000003),
-    EXCEPTION_DATATYPE_MISALIGNMENT = (0x80000002),
-    EXCEPTION_SINGLE_STEP = (0x80000004),
-    EXCEPTION_ARRAY_BOUNDS_EXCEEDED = (0xc000008c),
-    EXCEPTION_FLT_DENORMAL_OPERAND = (0xc000008d),
-    EXCEPTION_FLT_DIVIDE_BY_ZERO = (0xc000008e),
-    EXCEPTION_FLT_INEXACT_RESULT = (0xc000008f),
-    EXCEPTION_FLT_INVALID_OPERATION = (0xc0000090),
-    EXCEPTION_FLT_OVERFLOW = (0xc0000091),
-    EXCEPTION_FLT_STACK_CHECK = (0xc0000092),
-    EXCEPTION_FLT_UNDERFLOW = (0xc0000093),
-    EXCEPTION_INT_DIVIDE_BY_ZERO = (0xc0000094),
-    EXCEPTION_INT_OVERFLOW = (0xc0000095),
-    EXCEPTION_INVALID_HANDLE = (0xc0000008),
-    EXCEPTION_PRIV_INSTRUCTION = (0xc0000096),
-    EXCEPTION_NONCONTINUABLE_EXCEPTION = (0xc0000025),
-    EXCEPTION_NONCONTINUABLE = (0x1),
-    EXCEPTION_STACK_OVERFLOW = (0xc00000fd),
-    EXCEPTION_INVALID_DISPOSITION = (0xc0000026),
-    FILE_TYPE_UNKNOWN = (0),
-    FILE_TYPE_DISK = (1),
-    FILE_TYPE_CHAR = (2),
-    FILE_TYPE_PIPE = (3),
-    GGO_BITMAP = (1),
-    GGO_NATIVE = (2),
-    GGO_METRICS = (0),
-    GGO_GRAY2_BITMAP = (4),
-    GGO_GRAY4_BITMAP = (5),
-    GGO_GRAY8_BITMAP = (6),
-    GDI_ERROR = (0xffffffff),
-    GM_COMPATIBLE = (1),
-    GM_ADVANCED = (2),
-    HANDLE_FLAG_INHERIT = (1),
-    HANDLE_FLAG_PROTECT_FROM_CLOSE = (2),
-}
-char* RT_ACCELERATOR = cast(char*) ((9));
-char* RT_BITMAP = cast(char*) ((2));
-char* RT_DIALOG = cast(char*) ((5));
-char* RT_FONT = cast(char*) ((8));
-char* RT_FONTDIR = cast(char*) ((7));
-char* RT_MENU = cast(char*) ((4));
-char* RT_RCDATA = cast(char*) ((10));
-char* RT_STRING = cast(char*) ((6));
-char* RT_MESSAGETABLE = cast(char*) ((11));
-char* RT_CURSOR = cast(char*) ((1));
-char* RT_GROUP_CURSOR = cast(char*) ((12));
-char* RT_ICON = cast(char*) ((3));
-char* RT_GROUP_ICON = cast(char*) ((13));
-char* RT_VERSION = cast(char*) ((16));
-char* IDC_ARROW = cast(char*) ((32512));
-char* IDC_IBEAM = cast(char*) ((32513));
-char* IDC_WAIT = cast(char*) ((32514));
-char* IDC_CROSS = cast(char*) ((32515));
-char* IDC_UPARROW = cast(char*) ((32516));
-char* IDC_SIZENWSE = cast(char*) ((32642));
-char* IDC_SIZENESW = cast(char*) ((32643));
-char* IDC_SIZEWE = cast(char*) ((32644));
-char* IDC_SIZENS = cast(char*) ((32645));
-char* IDC_SIZEALL = cast(char*) ((32646));
-char* IDC_NO = cast(char*) ((32648));
-char* IDC_APPSTARTING = cast(char*) ((32650));
-char* IDC_HELP = cast(char*) ((32651));
-char* IDI_APPLICATION = cast(char*) ((32512));
-char* IDI_HAND = cast(char*) ((32513));
-char* IDI_QUESTION = cast(char*) ((32514));
-char* IDI_EXCLAMATION = cast(char*) ((32515));
-char* IDI_ASTERISK = cast(char*) ((32516));
-char* IDI_WINLOGO = cast(char*) ((32517));
-char* IDC_SIZE = cast(char*) ((32640));
-char* IDC_ICON = cast(char*) ((32641));
-enum : DWORD {
-    MM_ANISOTROPIC = (8),
-    MM_HIENGLISH = (5),
-    MM_HIMETRIC = (3),
-    MM_ISOTROPIC = (7),
-    MM_LOENGLISH = (4),
-    MM_LOMETRIC = (2),
-    MM_TEXT = (1),
-    MM_TWIPS = (6),
-    GMDI_GOINTOPOPUPS = (0x2),
-    GMDI_USEDISABLED = (0x1),
-    PM_NOREMOVE = (0),
-    PM_REMOVE = (1),
-    PM_NOYIELD = (2),
-    PIPE_CLIENT_END = (0),
-    PIPE_SERVER_END = (1),
-    GW_HWNDNEXT = (2),
-    GW_HWNDPREV = (3),
-    GW_CHILD = (5),
-    GW_HWNDFIRST = (0),
-    GW_HWNDLAST = (1),
-    GW_OWNER = (4),
-    PT_MOVETO = (6),
-    PT_LINETO = (2),
-    PT_BEZIERTO = (4),
-    PT_CLOSEFIGURE = (1),
-    SHUTDOWN_NORETRY = (1),
-    QS_ALLEVENTS = (191),
-    QS_ALLINPUT = (255),
-    QS_HOTKEY = (128),
-    QS_INPUT = (7),
-    QS_KEY = (1),
-    QS_MOUSE = (6),
-    QS_MOUSEBUTTON = (4),
-    QS_MOUSEMOVE = (2),
-    QS_PAINT = (32),
-    QS_POSTMESSAGE = (8),
-    QS_SENDMESSAGE = (64),
-    QS_TIMER = (16),
-    SIF_ALL = (23),
-    SIF_PAGE = (2),
-    SIF_POS = (4),
-    SIF_RANGE = (1),
-    SIF_DISABLENOSCROLL = (8),
-    STD_INPUT_HANDLE = -(10),
-    STD_OUTPUT_HANDLE = -(11),
-    STD_ERROR_HANDLE = -(12),
-    BLACK_BRUSH = (4),
-    DKGRAY_BRUSH = (3),
-    GRAY_BRUSH = (2),
-    HOLLOW_BRUSH = (5),
-    LTGRAY_BRUSH = (1),
-    NULL_BRUSH = (5),
-    WHITE_BRUSH = (0),
-    BLACK_PEN = (7),
-    NULL_PEN = (8),
-    WHITE_PEN = (6),
-    ANSI_FIXED_FONT = (11),
-    ANSI_VAR_FONT = (12),
-    DEVICE_DEFAULT_FONT = (14),
-    DEFAULT_GUI_FONT = (17),
-    OEM_FIXED_FONT = (10),
-    SYSTEM_FONT = (13),
-    SYSTEM_FIXED_FONT = (16),
-    DEFAULT_PALETTE = (15),
-    CT_CTYPE1 = (1),
-    CT_CTYPE2 = (2),
-    CT_CTYPE3 = (4),
-    C1_UPPER = (1),
-    C1_LOWER = (2),
-    C1_DIGIT = (4),
-    C1_SPACE = (8),
-    C1_PUNCT = (16),
-    C1_CNTRL = (32),
-    C1_BLANK = (64),
-    C1_XDIGIT = (128),
-    C1_ALPHA = (256),
-    C2_LEFTTORIGHT = (1),
-    C2_RIGHTTOLEFT = (2),
-    C2_EUROPENUMBER = (3),
-    C2_EUROPESEPARATOR = (4),
-    C2_EUROPETERMINATOR = (5),
-    C2_ARABICNUMBER = (6),
-    C2_COMMONSEPARATOR = (7),
-    C2_BLOCKSEPARATOR = (8),
-    C2_SEGMENTSEPARATOR = (9),
-    C2_WHITESPACE = (10),
-    C2_OTHERNEUTRAL = (11),
-    C2_NOTAPPLICABLE = (0),
-    C3_NONSPACING = (1),
-    C3_DIACRITIC = (2),
-    C3_VOWELMARK = (4),
-    C3_SYMBOL = (8),
-    C3_KATAKANA = (16),
-    C3_HIRAGANA = (32),
-    C3_HALFWIDTH = (64),
-    C3_FULLWIDTH = (128),
-    C3_IDEOGRAPH = (256),
-    C3_KASHIDA = (512),
-    C3_ALPHA = (32768),
-    C3_NOTAPPLICABLE = (0),
-    COLOR_3DDKSHADOW = (21),
-    COLOR_3DFACE = (15),
-    COLOR_3DHILIGHT = (20),
-    COLOR_3DLIGHT = (22),
-    COLOR_BTNHILIGHT = (20),
-    COLOR_3DSHADOW = (16),
-    COLOR_ACTIVEBORDER = (10),
-    COLOR_ACTIVECAPTION = (2),
-    COLOR_APPWORKSPACE = (12),
-    COLOR_BACKGROUND = (1),
-    COLOR_DESKTOP = (1),
-    COLOR_BTNFACE = (15),
-    COLOR_BTNHIGHLIGHT = (20),
-    COLOR_BTNSHADOW = (16),
-    COLOR_BTNTEXT = (18),
-    COLOR_CAPTIONTEXT = (9),
-    COLOR_GRAYTEXT = (17),
-    COLOR_HIGHLIGHT = (13),
-    COLOR_HIGHLIGHTTEXT = (14),
-    COLOR_INACTIVEBORDER = (11),
-    COLOR_INACTIVECAPTION = (3),
-    COLOR_INACTIVECAPTIONTEXT = (19),
-    COLOR_INFOBK = (24),
-    COLOR_INFOTEXT = (23),
-    COLOR_MENU = (4),
-    COLOR_MENUTEXT = (7),
-    COLOR_SCROLLBAR = (0),
-    COLOR_WINDOW = (5),
-    COLOR_WINDOWFRAME = (6),
-    COLOR_WINDOWTEXT = (8),
-    SM_CYMIN = (29),
-    SM_CXMIN = (28),
-    SM_ARRANGE = (56),
-    SM_CLEANBOOT = (67),
-    SM_CMETRICS = (76),
-    SM_CMOUSEBUTTONS = (43),
-    SM_CXBORDER = (5),
-    SM_CYBORDER = (6),
-    SM_CXCURSOR = (13),
-    SM_CYCURSOR = (14),
-    SM_CXDLGFRAME = (7),
-    SM_CYDLGFRAME = (8),
-    SM_CXDOUBLECLK = (36),
-    SM_CYDOUBLECLK = (37),
-    SM_CXDRAG = (68),
-    SM_CYDRAG = (69),
-    SM_CXEDGE = (45),
-    SM_CYEDGE = (46),
-    SM_CXFIXEDFRAME = (7),
-    SM_CYFIXEDFRAME = (8),
-    SM_CXFRAME = (32),
-    SM_CYFRAME = (33),
-    SM_CXFULLSCREEN = (16),
-    SM_CYFULLSCREEN = (17),
-    SM_CXHSCROLL = (21),
-    SM_CYHSCROLL = (3),
-    SM_CXHTHUMB = (10),
-    SM_CXICON = (11),
-    SM_CYICON = (12),
-    SM_CXICONSPACING = (38),
-    SM_CYICONSPACING = (39),
-    SM_CXMAXIMIZED = (61),
-    SM_CYMAXIMIZED = (62),
-    SM_CXMAXTRACK = (59),
-    SM_CYMAXTRACK = (60),
-    SM_CXMENUCHECK = (71),
-    SM_CYMENUCHECK = (72),
-    SM_CXMENUSIZE = (54),
-    SM_CYMENUSIZE = (55),
-    SM_CXMINIMIZED = (57),
-    SM_CYMINIMIZED = (58),
-    SM_CXMINSPACING = (47),
-    SM_CYMINSPACING = (48),
-    SM_CXMINTRACK = (34),
-    SM_CYMINTRACK = (35),
-    SM_CXSCREEN = (0),
-    SM_CYSCREEN = (1),
-    SM_CXSIZE = (30),
-    SM_CYSIZE = (31),
-    SM_CXSIZEFRAME = (32),
-    SM_CYSIZEFRAME = (33),
-    SM_CXSMICON = (49),
-    SM_CYSMICON = (50),
-    SM_CXSMSIZE = (52),
-    SM_CYSMSIZE = (53),
-    SM_CXVSCROLL = (2),
-    SM_CYVSCROLL = (20),
-    SM_CYVTHUMB = (9),
-    SM_CYCAPTION = (4),
-    SM_CYKANJIWINDOW = (18),
-    SM_CYMENU = (15),
-    SM_CYSMCAPTION = (51),
-    SM_DBCSENABLED = (42),
-    SM_DEBUG = (22),
-    SM_MENUDROPALIGNMENT = (40),
-    SM_MIDEASTENABLED = (74),
-    SM_MOUSEPRESENT = (19),
-    SM_MOUSEWHEELPRESENT = (75),
-    SM_NETWORK = (63),
-    SM_PENWINDOWS = (41),
-    SM_SECURE = (44),
-    SM_SHOWSOUNDS = (70),
-    SM_SLOWMACHINE = (73),
-    SM_SWAPBUTTON = (23),
-    ARW_BOTTOMLEFT = (0),
-    ARW_BOTTOMRIGHT = (0x1),
-    ARW_HIDE = (0x8),
-    ARW_TOPLEFT = (0x2),
-    ARW_TOPRIGHT = (0x3),
-    ARW_DOWN = (0x4),
-    ARW_LEFT = (0),
-    ARW_RIGHT = (0),
-    ARW_UP = (0x4),
-    SYSPAL_NOSTATIC = (2),
-    SYSPAL_STATIC = (1),
-    SYSPAL_ERROR = (0),
-    GET_TAPE_MEDIA_INFORMATION = (0),
-    GET_TAPE_DRIVE_INFORMATION = (1),
-    SET_TAPE_MEDIA_INFORMATION = (0),
-    SET_TAPE_DRIVE_INFORMATION = (1),
-    TAPE_ABSOLUTE_POSITION = (0),
-    TAPE_LOGICAL_POSITION = (0x1),
-    TA_BASELINE = (24),
-    TA_BOTTOM = (8),
-    TA_TOP = (0),
-    TA_CENTER = (6),
-    TA_LEFT = (0),
-    TA_RIGHT = (2),
-    TA_RTLREADING = (256),
-    TA_NOUPDATECP = (0),
-    TA_UPDATECP = (1),
-    VTA_BASELINE = (24),
-    VTA_CENTER = (6),
-    THREAD_PRIORITY_ABOVE_NORMAL = (1),
-    THREAD_PRIORITY_BELOW_NORMAL = -((1)),
-    THREAD_PRIORITY_HIGHEST = (2),
-    THREAD_PRIORITY_IDLE = -((15)),
-    THREAD_PRIORITY_LOWEST = -((2)),
-    THREAD_PRIORITY_NORMAL = (0),
-    THREAD_PRIORITY_TIME_CRITICAL = (15),
-    THREAD_PRIORITY_ERROR_RETURN = (2147483647),
-    TLS_MINIMUM_AVAILABLE = (64),
-    TIME_NOMINUTESORSECONDS = (1),
-    TIME_NOSECONDS = (2),
-    TIME_NOTIMEMARKER = (4),
-    TIME_FORCE24HOURFORMAT = (8),
-    TIME_ZONE_ID_INVALID = -(1),
-    TIME_ZONE_ID_UNKNOWN = (0),
-    TIME_ZONE_ID_STANDARD = (1),
-    TIME_ZONE_ID_DAYLIGHT = (2),
-    UOI_FLAGS = (1),
-    UOI_NAME = (2),
-    UOI_TYPE = (3),
-    FS_CASE_IS_PRESERVED = (2),
-    FS_CASE_SENSITIVE = (1),
-    FS_UNICODE_STORED_ON_DISK = (4),
-    FS_PERSISTENT_ACLS = (8),
-    FS_FILE_COMPRESSION = (16),
-    FS_VOL_IS_COMPRESSED = (32768),
-    GWL_EXSTYLE = -((20)),
-    GWL_STYLE = -((16)),
-    GWL_WNDPROC = -((4)),
-    GWL_HINSTANCE = -((6)),
-    GWL_HWNDPARENT = -((8)),
-    GWL_ID = -((12)),
-    GWL_USERDATA = -((21)),
-    DWL_DLGPROC = (4),
-    DWL_MSGRESULT = (0),
-    DWL_USER = (8),
-    GMEM_FIXED = (0),
-    GMEM_MOVEABLE = (2),
-    GPTR = (64),
-    GHND = (66),
-    GMEM_DDESHARE = (8192),
-    GMEM_DISCARDABLE = (256),
-    GMEM_LOWER = (4096),
-    GMEM_NOCOMPACT = (16),
-    GMEM_NODISCARD = (32),
-    GMEM_NOT_BANKED = (4096),
-    GMEM_NOTIFY = (16384),
-    GMEM_SHARE = (8192),
-    GMEM_ZEROINIT = (64),
-    GMEM_DISCARDED = (16384),
-    GMEM_INVALID_HANDLE = (32768),
-    GMEM_LOCKCOUNT = (255),
-    HEAP_GENERATE_EXCEPTIONS = (4),
-    HEAP_NO_SERIALIZE = (1),
-    HEAP_ZERO_MEMORY = (8),
-    STATUS_NO_MEMORY = (0xc0000017),
-    STATUS_ACCESS_VIOLATION = (0xc0000005),
-    HEAP_REALLOC_IN_PLACE_ONLY = (16),
-    ILC_COLOR = (0),
-    ILC_COLOR4 = (4),
-    ILC_COLOR8 = (8),
-    ILC_COLOR16 = (16),
-    ILC_COLOR24 = (24),
-    ILC_COLOR32 = (32),
-    ILC_COLORDDB = (254),
-    ILC_MASK = (1),
-    ILC_PALETTE = (2048),
-    ILD_BLEND25 = (2),
-    ILD_BLEND50 = (4),
-    ILD_SELECTED = (4),
-    ILD_BLEND = (4),
-    ILD_FOCUS = (2),
-    ILD_MASK = (16),
-    ILD_NORMAL = (0),
-    ILD_TRANSPARENT = (1),
-    CLR_NONE = (0xffffffff),
-    CLR_DEFAULT = (0xff000000),
-    CLR_INVALID = (0xFFFFFFFF),
-    LR_LOADFROMFILE = (16),
-    LR_LOADMAP3DCOLORS = (4096),
-    LR_LOADTRANSPARENT = (32),
-    IME_CONFIG_GENERAL = (1),
-    IME_CONFIG_REGISTERWORD = (2),
-    IME_CONFIG_SELECTDICTIONARY = (3),
-    GCL_CONVERSION = (1),
-    GCL_REVERSECONVERSION = (2),
-    GCL_REVERSE_LENGTH = (3),
-    GGL_LEVEL = (1),
-    GGL_INDEX = (2),
-    GGL_STRING = (3),
-    GGL_PRIVATE = (4),
-    GL_LEVEL_ERROR = (2),
-    GL_LEVEL_FATAL = (1),
-    GL_LEVEL_INFORMATION = (4),
-    GL_LEVEL_NOGUIDELINE = (0),
-    GL_LEVEL_WARNING = (3),
-    GL_ID_CANNOTSAVE = (17),
-    GL_ID_NOCONVERT = (32),
-    GL_ID_NODICTIONARY = (16),
-    GL_ID_NOMODULE = (1),
-    GL_ID_READINGCONFLICT = (35),
-    GL_ID_TOOMANYSTROKE = (34),
-    GL_ID_TYPINGERROR = (33),
-    GL_ID_UNKNOWN = (0),
-    GL_ID_INPUTREADING = (36),
-    GL_ID_INPUTRADICAL = (37),
-    GL_ID_INPUTCODE = (38),
-    GL_ID_CHOOSECANDIDATE = (40),
-    GL_ID_REVERSECONVERSION = (41),
-    IGP_PROPERTY = (4),
-    IGP_CONVERSION = (8),
-    IGP_SENTENCE = (12),
-    IGP_UI = (16),
-    IGP_SETCOMPSTR = (20),
-    IGP_SELECT = (24),
-    IME_PROP_AT_CARET = (65536),
-    IME_PROP_SPECIAL_UI = (131072),
-    IME_PROP_CANDLIST_START_FROM_1 = (262144),
-    IME_PROP_UNICODE = (524288),
-    UI_CAP_2700 = (1),
-    UI_CAP_ROT90 = (2),
-    UI_CAP_ROTANY = (4),
-    SCS_CAP_COMPSTR = (1),
-    SCS_CAP_MAKEREAD = (2),
-    SELECT_CAP_CONVERSION = (1),
-    SELECT_CAP_SENTENCE = (2),
-    NI_CHANGECANDIDATELIST = (19),
-    NI_CLOSECANDIDATE = (17),
-    NI_COMPOSITIONSTR = (21),
-    NI_OPENCANDIDATE = (16),
-    NI_SELECTCANDIDATESTR = (18),
-    NI_SETCANDIDATE_PAGESIZE = (23),
-    NI_SETCANDIDATE_PAGESTART = (22),
-    CPS_CANCEL = (4),
-    CPS_COMPLETE = (1),
-    CPS_CONVERT = (2),
-    CPS_REVERT = (3),
-    SCS_SETSTR = (9),
-    SCS_CHANGEATTR = (18),
-    SCS_CHANGECLAUSE = (36),
-    IME_REGWORD_STYLE_EUDC = (1),
-    IME_REGWORD_STYLE_USER_FIRST = (0x80000000),
-    IME_REGWORD_STYLE_USER_LAST = -((1)),
-    SECURITY_DESCRIPTOR_REVISION = (1),
-    IS_TEXT_UNICODE_ASCII16 = (1),
-    IS_TEXT_UNICODE_REVERSE_ASCII16 = (16),
-    IS_TEXT_UNICODE_STATISTICS = (2),
-    IS_TEXT_UNICODE_REVERSE_STATISTICS = (32),
-    IS_TEXT_UNICODE_CONTROLS = (4),
-    IS_TEXT_UNICODE_REVERSE_CONTROLS = (64),
-    IS_TEXT_UNICODE_SIGNATURE = (8),
-    IS_TEXT_UNICODE_REVERSE_SIGNATURE = (128),
-    IS_TEXT_UNICODE_ILLEGAL_CHARS = (256),
-    IS_TEXT_UNICODE_ODD_LENGTH = (512),
-    IS_TEXT_UNICODE_NULL_BYTES = (4096),
-    IS_TEXT_UNICODE_UNICODE_MASK = (15),
-    IS_TEXT_UNICODE_REVERSE_MASK = (240),
-    IS_TEXT_UNICODE_NOT_UNICODE_MASK = (3840),
-    IS_TEXT_UNICODE_NOT_ASCII_MASK = (61440),
-    HC_GETNEXT = (1),
-    HC_SKIP = (2),
-    HC_SYSMODALOFF = (5),
-    HC_SYSMODALON = (4),
-    HC_NOREMOVE = (3),
-    KEYEVENTF_EXTENDEDKEY = (1),
-    KEYEVENTF_KEYUP = (2),
-    OBM_BTNCORNERS = (32758),
-    OBM_BTSIZE = (32761),
-    OBM_CHECK = (32760),
-    OBM_CHECKBOXES = (32759),
-    OBM_CLOSE = (32754),
-    OBM_COMBO = (32738),
-    OBM_DNARROW = (32752),
-    OBM_DNARROWD = (32742),
-    OBM_DNARROWI = (32736),
-    OBM_LFARROW = (32750),
-    OBM_LFARROWI = (32734),
-    OBM_LFARROWD = (32740),
-    OBM_MNARROW = (32739),
-    OBM_OLD_CLOSE = (32767),
-    OBM_OLD_DNARROW = (32764),
-    OBM_OLD_LFARROW = (32762),
-    OBM_OLD_REDUCE = (32757),
-    OBM_OLD_RESTORE = (32755),
-    OBM_OLD_RGARROW = (32763),
-    OBM_OLD_UPARROW = (32765),
-    OBM_OLD_ZOOM = (32756),
-    OBM_REDUCE = (32749),
-    OBM_REDUCED = (32746),
-    OBM_RESTORE = (32747),
-    OBM_RESTORED = (32744),
-    OBM_RGARROW = (32751),
-    OBM_RGARROWD = (32741),
-    OBM_RGARROWI = (32735),
-    OBM_SIZE = (32766),
-    OBM_UPARROW = (32753),
-    OBM_UPARROWD = (32743),
-    OBM_UPARROWI = (32737),
-    OBM_ZOOM = (32748),
-    OBM_ZOOMD = (32745),
-    DONT_RESOLVE_DLL_REFERENCES = (1),
-    LOAD_LIBRARY_AS_DATAFILE = (2),
-    LOAD_WITH_ALTERED_SEARCH_PATH = (8),
-    LPTR = (64),
-    LHND = (66),
-    NONZEROLHND = (2),
-    NONZEROLPTR = (0),
-    LMEM_NONZEROLHND = (2),
-    LMEM_NONZEROLPTR = (0),
-    LMEM_FIXED = (0),
-    LMEM_MOVEABLE = (2),
-    LMEM_NOCOMPACT = (16),
-    LMEM_NODISCARD = (32),
-    LMEM_ZEROINIT = (64),
-    LMEM_MODIFY = (128),
-    LMEM_LOCKCOUNT = (255),
-    LMEM_DISCARDABLE = (3840),
-    LMEM_DISCARDED = (16384),
-    LMEM_INVALID_HANDLE = (32768),
-    LOCKFILE_FAIL_IMMEDIATELY = (1),
-    LOCKFILE_EXCLUSIVE_LOCK = (2),
-    MB_USERICON = (0x80),
-    MB_ICONASTERISK = (0x40),
-    MB_ICONEXCLAMATION = (0x30),
-    MB_ICONWARNING = (0x30),
-    MB_ICONERROR = (0x10),
-    MB_ICONHAND = (0x10),
-    MB_ICONQUESTION = (0x20),
-    MB_OK = (0),
-    MB_ABORTRETRYIGNORE = (0x2),
-    MB_APPLMODAL = (0),
-    MB_DEFAULT_DESKTOP_ONLY = (0x20000),
-    MB_HELP = (0x4000),
-    MB_RIGHT = (0x80000),
-    MB_RTLREADING = (0x100000),
-    MB_TOPMOST = (0x40000),
-    MB_DEFBUTTON1 = (0),
-    MB_DEFBUTTON2 = (0x100),
-    MB_DEFBUTTON3 = (0x200),
-    MB_DEFBUTTON4 = (0x300),
-    MB_ICONINFORMATION = (0x40),
-    MB_ICONSTOP = (0x10),
-    MB_OKCANCEL = (0x1),
-    MB_RETRYCANCEL = (0x5),
-    MB_SERVICE_NOTIFICATION = (0x40000),
-    MB_SETFOREGROUND = (0x10000),
-    MB_SYSTEMMODAL = (0x1000),
-    MB_TASKMODAL = (0x2000),
-    MB_YESNO = (0x4),
-    MB_YESNOCANCEL = (0x3),
-    IDABORT = (3),
-    IDCANCEL = (2),
-    IDCLOSE = (8),
-    IDHELP = (9),
-    IDIGNORE = (5),
-    IDNO = (7),
-    IDOK = (1),
-    IDRETRY = (4),
-    IDYES = (6),
-    MSGF_DIALOGBOX = (0),
-    MSGF_MENU = (2),
-    MSGF_NEXTWINDOW = (6),
-    MSGF_SCROLLBAR = (5),
-    MSGF_MAINLOOP = (8),
-    MSGF_USER = (4096),
-    MWT_IDENTITY = (1),
-    MWT_LEFTMULTIPLY = (2),
-    MWT_RIGHTMULTIPLY = (3),
-    MOUSEEVENTF_ABSOLUTE = (32768),
-    MOUSEEVENTF_MOVE = (1),
-    MOUSEEVENTF_LEFTDOWN = (2),
-    MOUSEEVENTF_LEFTUP = (4),
-    MOUSEEVENTF_RIGHTDOWN = (8),
-    MOUSEEVENTF_RIGHTUP = (16),
-    MOUSEEVENTF_MIDDLEDOWN = (32),
-    MOUSEEVENTF_MIDDLEUP = (64),
-    MOVEFILE_REPLACE_EXISTING = (1),
-    MOVEFILE_COPY_ALLOWED = (2),
-    MOVEFILE_DELAY_UNTIL_REBOOT = (4),
-    MOVEFILE_WRITE_THROUGH = (8),
-    WAIT_OBJECT_0 = (0),
-    WAIT_ABANDONED_0 = (0x80),
-    WAIT_TIMEOUT = (0x102),
-    WAIT_IO_COMPLETION = (0xc0),
-    WAIT_ABANDONED = (0x80),
-    WAIT_FAILED = (0xffffffff),
-    MAXIMUM_WAIT_OBJECTS = (0x40),
-    MAXIMUM_SUSPEND_COUNT = (0x7f),
-    MB_PRECOMPOSED = (1),
-    MB_COMPOSITE = (2),
-    MB_ERR_INVALID_CHARS = (8),
-    MB_USEGLYPHCHARS = (4),
-    TOKEN_ADJUST_DEFAULT = (128),
-    TOKEN_ADJUST_GROUPS = (64),
-    TOKEN_ADJUST_PRIVILEGES = (32),
-    TOKEN_ALL_ACCESS = (0xf00ff),
-    TOKEN_ASSIGN_PRIMARY = (1),
-    TOKEN_DUPLICATE = (2),
-    TOKEN_EXECUTE = (0x20000),
-    TOKEN_IMPERSONATE = (4),
-    TOKEN_QUERY = (8),
-    TOKEN_QUERY_SOURCE = (16),
-    TOKEN_READ = (0x20008),
-    TOKEN_WRITE = (0x200e0),
-    SC_MANAGER_ALL_ACCESS = (0xf003f),
-    SC_MANAGER_CONNECT = (1),
-    SC_MANAGER_CREATE_SERVICE = (2),
-    SC_MANAGER_ENUMERATE_SERVICE = (4),
-    SC_MANAGER_LOCK = (8),
-    SC_MANAGER_QUERY_LOCK_STATUS = (16),
-    SC_MANAGER_MODIFY_BOOT_CONFIG = (32),
-    TAPE_FORMAT = (0x5),
-    TAPE_LOAD = (0),
-    TAPE_LOCK = (0x3),
-    TAPE_TENSION = (0x2),
-    TAPE_UNLOAD = (0x1),
-    TAPE_UNLOCK = (0x4),
-    IS_PSREBOOTSYSTEM = (3),
-    IS_PSRESTARTWINDOWS = (2),
-    PSPCB_CREATE = (2),
-    PSPCB_RELEASE = (1),
-    PURGE_TXABORT = (1),
-    PURGE_RXABORT = (2),
-    PURGE_TXCLEAR = (4),
-    PURGE_RXCLEAR = (8),
-    OWNER_SECURITY_INFORMATION = (0x1),
-    GROUP_SECURITY_INFORMATION = (0x2),
-    DACL_SECURITY_INFORMATION = (0x4),
-    SACL_SECURITY_INFORMATION = (0x8),
-    EVENTLOG_FORWARDS_READ = (4),
-    EVENTLOG_BACKWARDS_READ = (8),
-    EVENTLOG_SEEK_READ = (2),
-    EVENTLOG_SEQUENTIAL_READ = (1),
-    EVENTLOG_ERROR_TYPE = (1),
-    EVENTLOG_WARNING_TYPE = (2),
-    EVENTLOG_INFORMATION_TYPE = (4),
-    EVENTLOG_AUDIT_SUCCESS = (8),
-    EVENTLOG_AUDIT_FAILURE = (16),
-    RDW_ERASE = (4),
-    RDW_FRAME = (1024),
-    RDW_INTERNALPAINT = (2),
-    RDW_INVALIDATE = (1),
-    RDW_NOERASE = (32),
-    RDW_NOFRAME = (2048),
-    RDW_NOINTERNALPAINT = (16),
-    RDW_VALIDATE = (8),
-    RDW_ERASENOW = (512),
-    RDW_UPDATENOW = (256),
-    RDW_ALLCHILDREN = (128),
-    RDW_NOCHILDREN = (64),
-/*
-   //
-    HKEY_CLASSES_ROOT = (0x80000000),
-    HKEY_CURRENT_USER = (0x80000001),
-    HKEY_LOCAL_MACHINE = (0x80000002),
-    HKEY_USERS = (0x80000003),
-    HKEY_PERFORMANCE_DATA = (0x80000004),
-    HKEY_CURRENT_CONFIG = (0x80000005),
-    HKEY_DYN_DATA = (0x80000006),
-*/
-    REG_OPTION_VOLATILE = (0x1),
-    REG_OPTION_NON_VOLATILE = (0),
-    REG_CREATED_NEW_KEY = (0x1),
-    REG_OPENED_EXISTING_KEY = (0x2),
-    REG_BINARY = (3),
-    REG_DWORD = (4),
-    REG_DWORD_LITTLE_ENDIAN = (4),
-    REG_DWORD_BIG_ENDIAN = (5),
-    REG_EXPAND_SZ = (2),
-    REG_FULL_RESOURCE_DESCRIPTOR = (9),
-    REG_LINK = (6),
-    REG_MULTI_SZ = (7),
-    REG_NONE = (0),
-    REG_RESOURCE_LIST = (8),
-    REG_RESOURCE_REQUIREMENTS_LIST = (10),
-    REG_SZ = (1),
-    MOD_ALT = (1),
-    MOD_CONTROL = (2),
-    MOD_SHIFT = (4),
-    MOD_WIN = (8),
-    IDHOT_SNAPDESKTOP = -((2)),
-    IDHOT_SNAPWINDOW = -((1)),
-    REG_NOTIFY_CHANGE_NAME = (0x1),
-    REG_NOTIFY_CHANGE_ATTRIBUTES = (0x2),
-    REG_NOTIFY_CHANGE_LAST_SET = (0x4),
-    REG_NOTIFY_CHANGE_SECURITY = (0x8),
-    SW_ERASE = (4),
-    SW_INVALIDATE = (2),
-    SW_SCROLLCHILDREN = (1),
-    SMTO_ABORTIFHUNG = (2),
-    SMTO_BLOCK = (1),
-    SMTO_NORMAL = (0),
-    OPAQUE = (2),
-    TRANSPARENT = (1),
-    SLE_ERROR = (1),
-    SLE_MINORERROR = (2),
-    SLE_WARNING = (3),
-    SEM_FAILCRITICALERRORS = (1),
-    SEM_NOALIGNMENTFAULTEXCEPT = (4),
-    SEM_NOGPFAULTERRORBOX = (2),
-    SEM_NOOPENFILEERRORBOX = (32768),
-    ICM_ON = (2),
-    ICM_OFF = (1),
-    ICM_QUERY = (3),
-    LOCALE_ILANGUAGE = (1),
-    LOCALE_SLANGUAGE = (2),
-    LOCALE_SENGLANGUAGE = (4097),
-    LOCALE_SABBREVLANGNAME = (3),
-    LOCALE_SNATIVELANGNAME = (4),
-    LOCALE_ICOUNTRY = (5),
-    LOCALE_SCOUNTRY = (6),
-    LOCALE_SENGCOUNTRY = (4098),
-    LOCALE_SABBREVCTRYNAME = (7),
-    LOCALE_SNATIVECTRYNAME = (8),
-    LOCALE_IDEFAULTLANGUAGE = (9),
-    LOCALE_IDEFAULTCOUNTRY = (10),
-    LOCALE_IDEFAULTANSICODEPAGE = (4100),
-    LOCALE_IDEFAULTCODEPAGE = (11),
-    LOCALE_SLIST = (12),
-    LOCALE_IMEASURE = (13),
-    LOCALE_SDECIMAL = (14),
-    LOCALE_STHOUSAND = (15),
-    LOCALE_SGROUPING = (16),
-    LOCALE_IDIGITS = (17),
-    LOCALE_ILZERO = (18),
-    LOCALE_INEGNUMBER = (4112),
-    LOCALE_SCURRENCY = (20),
-    LOCALE_SMONDECIMALSEP = (22),
-    LOCALE_SMONTHOUSANDSEP = (23),
-    LOCALE_SMONGROUPING = (24),
-    LOCALE_ICURRDIGITS = (25),
-    LOCALE_ICURRENCY = (27),
-    LOCALE_INEGCURR = (28),
-    LOCALE_SDATE = (29),
-    LOCALE_STIME = (30),
-    LOCALE_STIMEFORMAT = (4099),
-    LOCALE_SSHORTDATE = (31),
-    LOCALE_SLONGDATE = (32),
-    LOCALE_IDATE = (33),
-    LOCALE_ILDATE = (34),
-    LOCALE_ITIME = (35),
-    LOCALE_ITLZERO = (37),
-    LOCALE_IDAYLZERO = (38),
-    LOCALE_IMONLZERO = (39),
-    LOCALE_S1159 = (40),
-    LOCALE_S2359 = (41),
-    LOCALE_ICALENDARTYPE = (4105),
-    LOCALE_IOPTIONALCALENDAR = (4107),
-    LOCALE_IFIRSTDAYOFWEEK = (4108),
-    LOCALE_IFIRSTWEEKOFYEAR = (4109),
-    LOCALE_SDAYNAME1 = (42),
-    LOCALE_SDAYNAME2 = (43),
-    LOCALE_SDAYNAME3 = (44),
-    LOCALE_SDAYNAME4 = (45),
-    LOCALE_SDAYNAME5 = (46),
-    LOCALE_SDAYNAME6 = (47),
-    LOCALE_SDAYNAME7 = (48),
-    LOCALE_SABBREVDAYNAME1 = (49),
-    LOCALE_SABBREVDAYNAME2 = (50),
-    LOCALE_SABBREVDAYNAME3 = (51),
-    LOCALE_SABBREVDAYNAME4 = (52),
-    LOCALE_SABBREVDAYNAME5 = (53),
-    LOCALE_SABBREVDAYNAME6 = (54),
-    LOCALE_SABBREVDAYNAME7 = (55),
-    LOCALE_SMONTHNAME1 = (56),
-    LOCALE_SMONTHNAME2 = (57),
-    LOCALE_SMONTHNAME3 = (58),
-    LOCALE_SMONTHNAME4 = (59),
-    LOCALE_SMONTHNAME5 = (60),
-    LOCALE_SMONTHNAME6 = (61),
-    LOCALE_SMONTHNAME7 = (62),
-    LOCALE_SMONTHNAME8 = (63),
-    LOCALE_SMONTHNAME9 = (64),
-    LOCALE_SMONTHNAME10 = (65),
-    LOCALE_SMONTHNAME11 = (66),
-    LOCALE_SMONTHNAME12 = (67),
-    LOCALE_SMONTHNAME13 = (4110),
-    LOCALE_SABBREVMONTHNAME1 = (68),
-    LOCALE_SABBREVMONTHNAME2 = (69),
-    LOCALE_SABBREVMONTHNAME3 = (70),
-    LOCALE_SABBREVMONTHNAME4 = (71),
-    LOCALE_SABBREVMONTHNAME5 = (72),
-    LOCALE_SABBREVMONTHNAME6 = (73),
-    LOCALE_SABBREVMONTHNAME7 = (74),
-    LOCALE_SABBREVMONTHNAME8 = (75),
-    LOCALE_SABBREVMONTHNAME9 = (76),
-    LOCALE_SABBREVMONTHNAME10 = (77),
-    LOCALE_SABBREVMONTHNAME11 = (78),
-    LOCALE_SABBREVMONTHNAME12 = (79),
-    LOCALE_SABBREVMONTHNAME13 = (4111),
-    LOCALE_SPOSITIVESIGN = (80),
-    LOCALE_SNEGATIVESIGN = (81),
-    LOCALE_IPOSSIGNPOSN = (82),
-    LOCALE_INEGSIGNPOSN = (83),
-    LOCALE_IPOSSYMPRECEDES = (84),
-    LOCALE_IPOSSEPBYSPACE = (85),
-    LOCALE_INEGSYMPRECEDES = (86),
-    LOCALE_INEGSEPBYSPACE = (87),
-    LOCALE_NOUSEROVERRIDE = (0x80000000),
-    CAL_ICALINTVALUE = (1),
-    CAL_IYEAROFFSETRANGE = (3),
-    CAL_SABBREVDAYNAME1 = (14),
-    CAL_SABBREVDAYNAME2 = (15),
-    CAL_SABBREVDAYNAME3 = (16),
-    CAL_SABBREVDAYNAME4 = (17),
-    CAL_SABBREVDAYNAME5 = (18),
-    CAL_SABBREVDAYNAME6 = (19),
-    CAL_SABBREVDAYNAME7 = (20),
-    CAL_SABBREVMONTHNAME1 = (34),
-    CAL_SABBREVMONTHNAME2 = (35),
-    CAL_SABBREVMONTHNAME3 = (36),
-    CAL_SABBREVMONTHNAME4 = (37),
-    CAL_SABBREVMONTHNAME5 = (38),
-    CAL_SABBREVMONTHNAME6 = (39),
-    CAL_SABBREVMONTHNAME7 = (40),
-    CAL_SABBREVMONTHNAME8 = (41),
-    CAL_SABBREVMONTHNAME9 = (42),
-    CAL_SABBREVMONTHNAME10 = (43),
-    CAL_SABBREVMONTHNAME11 = (44),
-    CAL_SABBREVMONTHNAME12 = (45),
-    CAL_SABBREVMONTHNAME13 = (46),
-    CAL_SCALNAME = (2),
-    CAL_SDAYNAME1 = (7),
-    CAL_SDAYNAME2 = (8),
-    CAL_SDAYNAME3 = (9),
-    CAL_SDAYNAME4 = (10),
-    CAL_SDAYNAME5 = (11),
-    CAL_SDAYNAME6 = (12),
-    CAL_SDAYNAME7 = (13),
-    CAL_SERASTRING = (4),
-    CAL_SLONGDATE = (6),
-    CAL_SMONTHNAME1 = (21),
-    CAL_SMONTHNAME2 = (22),
-    CAL_SMONTHNAME3 = (23),
-    CAL_SMONTHNAME4 = (24),
-    CAL_SMONTHNAME5 = (25),
-    CAL_SMONTHNAME6 = (26),
-    CAL_SMONTHNAME7 = (27),
-    CAL_SMONTHNAME8 = (28),
-    CAL_SMONTHNAME9 = (29),
-    CAL_SMONTHNAME10 = (30),
-    CAL_SMONTHNAME11 = (31),
-    CAL_SMONTHNAME12 = (32),
-    CAL_SMONTHNAME13 = (33),
-    CAL_SSHORTDATE = (5),
-    PROCESS_SET_QUOTA = (256),
-    BLACKONWHITE = (1),
-    COLORONCOLOR = (3),
-    HALFTONE = (4),
-    STRETCH_ANDSCANS = (1),
-    STRETCH_DELETESCANS = (3),
-    STRETCH_HALFTONE = (4),
-    STRETCH_ORSCANS = (2),
-    WHITEONBLACK = (2),
-    OCR_NORMAL = (32512),
-    OCR_IBEAM = (32513),
-    OCR_WAIT = (32514),
-    OCR_CROSS = (32515),
-    OCR_UP = (32516),
-    OCR_SIZE = (32640),
-    OCR_ICON = (32641),
-    OCR_SIZENWSE = (32642),
-    OCR_SIZENESW = (32643),
-    OCR_SIZEWE = (32644),
-    OCR_SIZENS = (32645),
-    OCR_SIZEALL = (32646),
-    OCR_NO = (32648),
-    OCR_APPSTARTING = (32650),
-    TAPE_ABSOLUTE_BLOCK = (0x1),
-    TAPE_LOGICAL_BLOCK = (0x2),
-    TAPE_REWIND = (0),
-    TAPE_SPACE_END_OF_DATA = (0x4),
-    TAPE_SPACE_FILEMARKS = (0x6),
-    TAPE_SPACE_RELATIVE_BLOCKS = (0x5),
-    TAPE_SPACE_SEQUENTIAL_FMKS = (0x7),
-    TAPE_SPACE_SEQUENTIAL_SMKS = (0x9),
-    TAPE_SPACE_SETMARKS = (0x8),
-    EXCEPTION_EXECUTE_HANDLER = (1),
-    EXCEPTION_CONTINUE_EXECUTION = -((1)),
-    EXCEPTION_CONTINUE_SEARCH = (0),
-    SWP_DRAWFRAME = (32),
-    SWP_FRAMECHANGED = (32),
-    SWP_HIDEWINDOW = (128),
-    SWP_NOACTIVATE = (16),
-    SWP_NOCOPYBITS = (256),
-    SWP_NOMOVE = (2),
-    SWP_NOSIZE = (1),
-    SWP_NOREDRAW = (8),
-    SWP_NOZORDER = (4),
-    SWP_SHOWWINDOW = (64),
-    SWP_NOOWNERZORDER = (512),
-    SWP_NOREPOSITION = (512),
-    SWP_NOSENDCHANGING = (1024),
-    HSHELL_ACTIVATESHELLWINDOW = (3),
-    HSHELL_GETMINRECT = (5),
-    HSHELL_LANGUAGE = (8),
-    HSHELL_REDRAW = (6),
-    HSHELL_TASKMAN = (7),
-    HSHELL_WINDOWACTIVATED = (4),
-    HSHELL_WINDOWCREATED = (1),
-    HSHELL_WINDOWDESTROYED = (2),
-    SW_HIDE = (0),
-    SW_MAXIMIZE = (3),
-    SW_MINIMIZE = (6),
-    SW_NORMAL = (1),
-    SW_RESTORE = (9),
-    SW_SHOW = (5),
-    SW_SHOWDEFAULT = (10),
-    SW_SHOWMAXIMIZED = (3),
-    SW_SHOWMINIMIZED = (2),
-    SW_SHOWMINNOACTIVE = (7),
-    SW_SHOWNA = (8),
-    SW_SHOWNOACTIVATE = (4),
-    SW_SHOWNORMAL = (1),
-    WPF_RESTORETOMAXIMIZED = (2),
-    WPF_SETMINPOSITION = (1),
-    INFINITE = (0xFFFFFFFF),
-    SPI_GETACCESSTIMEOUT = (60),
-    SPI_GETANIMATION = (72),
-    SPI_GETBEEP = (1),
-    SPI_GETBORDER = (5),
-    SPI_GETDEFAULTINPUTLANG = (89),
-    SPI_GETDRAGFULLWINDOWS = (38),
-    SPI_GETFASTTASKSWITCH = (35),
-    SPI_GETFILTERKEYS = (50),
-    SPI_GETFONTSMOOTHING = (74),
-    SPI_GETGRIDGRANULARITY = (18),
-    SPI_GETHIGHCONTRAST = (66),
-    SPI_GETICONMETRICS = (45),
-    SPI_GETICONTITLELOGFONT = (31),
-    SPI_GETICONTITLEWRAP = (25),
-    SPI_GETKEYBOARDDELAY = (22),
-    SPI_GETKEYBOARDPREF = (68),
-    SPI_GETKEYBOARDSPEED = (10),
-    SPI_GETLOWPOWERACTIVE = (83),
-    SPI_GETLOWPOWERTIMEOUT = (79),
-    SPI_GETMENUDROPALIGNMENT = (27),
-    SPI_GETMINIMIZEDMETRICS = (43),
-    SPI_GETMOUSE = (3),
-    SPI_GETMOUSEKEYS = (54),
-    SPI_GETMOUSETRAILS = (94),
-    SPI_GETNONCLIENTMETRICS = (41),
-    SPI_GETPOWEROFFACTIVE = (84),
-    SPI_GETPOWEROFFTIMEOUT = (80),
-    SPI_GETSCREENREADER = (70),
-    SPI_GETSCREENSAVEACTIVE = (16),
-    SPI_GETSCREENSAVETIMEOUT = (14),
-    SPI_GETSERIALKEYS = (62),
-    SPI_GETSHOWSOUNDS = (56),
-    SPI_GETSOUNDSENTRY = (64),
-    SPI_GETSTICKYKEYS = (58),
-    SPI_GETTOGGLEKEYS = (52),
-    SPI_GETWINDOWSEXTENSION = (92),
-    SPI_GETWORKAREA = (48),
-    SPI_ICONHORIZONTALSPACING = (13),
-    SPI_ICONVERTICALSPACING = (24),
-    SPI_LANGDRIVER = (12),
-    SPI_SCREENSAVERRUNNING = (97),
-    SPI_SETACCESSTIMEOUT = (61),
-    SPI_SETANIMATION = (73),
-    SPI_SETBEEP = (2),
-    SPI_SETBORDER = (6),
-    SPI_SETDEFAULTINPUTLANG = (90),
-    SPI_SETDESKPATTERN = (21),
-    SPI_SETDESKWALLPAPER = (20),
-    SPI_SETDOUBLECLICKTIME = (32),
-    SPI_SETDOUBLECLKHEIGHT = (30),
-    SPI_SETDOUBLECLKWIDTH = (29),
-    SPI_SETDRAGFULLWINDOWS = (37),
-    SPI_SETDRAGHEIGHT = (77),
-    SPI_SETDRAGWIDTH = (76),
-    SPI_SETFASTTASKSWITCH = (36),
-    SPI_SETFILTERKEYS = (51),
-    SPI_SETFONTSMOOTHING = (75),
-    SPI_SETGRIDGRANULARITY = (19),
-    SPI_SETHANDHELD = (78),
-    SPI_SETHIGHCONTRAST = (67),
-    SPI_SETICONMETRICS = (46),
-    SPI_SETICONTITLELOGFONT = (34),
-    SPI_SETICONTITLEWRAP = (26),
-    SPI_SETKEYBOARDDELAY = (23),
-    SPI_SETKEYBOARDPREF = (69),
-    SPI_SETKEYBOARDSPEED = (11),
-    SPI_SETLANGTOGGLE = (91),
-    SPI_SETLOWPOWERACTIVE = (85),
-    SPI_SETLOWPOWERTIMEOUT = (81),
-    SPI_SETMENUDROPALIGNMENT = (28),
-    SPI_SETMINIMIZEDMETRICS = (44),
-    SPI_SETMOUSE = (4),
-    SPI_SETMOUSEBUTTONSWAP = (33),
-    SPI_SETMOUSEKEYS = (55),
-    SPI_SETMOUSETRAILS = (93),
-    SPI_SETNONCLIENTMETRICS = (42),
-    SPI_SETPENWINDOWS = (49),
-    SPI_SETPOWEROFFACTIVE = (86),
-    SPI_SETPOWEROFFTIMEOUT = (82),
-    SPI_SETSCREENREADER = (71),
-    SPI_SETSCREENSAVEACTIVE = (17),
-    SPI_SETSCREENSAVETIMEOUT = (15),
-    SPI_SETSERIALKEYS = (63),
-    SPI_SETSHOWSOUNDS = (57),
-    SPI_SETSOUNDSENTRY = (65),
-    SPI_SETSTICKYKEYS = (59),
-    SPI_SETTOGGLEKEYS = (53),
-    SPI_SETWORKAREA = (47),
-    SPIF_UPDATEINIFILE = (1),
-    SPIF_SENDWININICHANGE = (2),
-    SPIF_SENDCHANGE = (2),
-    TPM_CENTERALIGN = (0x4),
-    TPM_LEFTALIGN = (0),
-    TPM_RIGHTALIGN = (0x8),
-    TPM_LEFTBUTTON = (0),
-    TPM_RIGHTBUTTON = (0x2),
-    TPM_HORIZONTAL = (0),
-    TPM_VERTICAL = (0x40),
-    TCI_SRCCHARSET = (1),
-    TCI_SRCCODEPAGE = (2),
-    TCI_SRCFONTSIG = (3),
-    VFFF_ISSHAREDFILE = (1),
-    VFF_CURNEDEST = (1),
-    VFF_FILEINUSE = (2),
-    VFF_BUFFTOOSMALL = (4),
-    VIFF_FORCEINSTALL = (1),
-    VIFF_DONTDELETEOLD = (2),
-    VIF_TEMPFILE = (0x1),
-    VIF_MISMATCH = (0x2),
-    VIF_SRCOLD = (0x4),
-    VIF_DIFFLANG = (0x8),
-    VIF_DIFFCODEPG = (0x10),
-    VIF_DIFFTYPE = (0x20),
-    VIF_WRITEPROT = (0x40),
-    VIF_FILEINUSE = (0x80),
-    VIF_OUTOFSPACE = (0x100),
-    VIF_ACCESSVIOLATION = (0x200),
-    VIF_SHARINGVIOLATION = (0x400),
-    VIF_CANNOTCREATE = (0x800),
-    VIF_CANNOTDELETE = (0x1000),
-    VIF_CANNOTDELETECUR = (0x4000),
-    VIF_CANNOTRENAME = (0x2000),
-    VIF_OUTOFMEMORY = (0x8000),
-    VIF_CANNOTREADSRC = (0x10000),
-    VIF_CANNOTREADDST = (0x20000),
-    VIF_BUFFTOOSMALL = (0x40000),
-    WC_COMPOSITECHECK = (512),
-    WC_DISCARDNS = (16),
-    WC_SEPCHARS = (32),
-    WC_DEFAULTCHAR = (64),
-    HELP_COMMAND = (0x102),
-    HELP_CONTENTS = (0x3),
-    HELP___FILE__ = (0x1),
-    HELP___FILE__POPUP = (0x8),
-    HELP_FORCEFILE = (0x9),
-    HELP_HELPONHELP = (0x4),
-    HELP_INDEX = (0x3),
-    HELP_KEY = (0x101),
-    HELP_MULTIKEY = (0x201),
-    HELP_PARTIALKEY = (0x105),
-    HELP_QUIT = (0x2),
-    HELP_SETCONTENTS = (0x5),
-    HELP_SETINDEX = (0x5),
-    HELP___FILE__MENU = (0xa),
-    HELP_FINDER = (0xb),
-    HELP_WM_HELP = (0xc),
-    HELP_TCARD = (0x8000),
-    HELP_TCARD_DATA = (0x10),
-    HELP_TCARD_OTHER_CALLER = (0x11),
-    CONNECT_UPDATE_PROFILE = (1),
-    RESOURCETYPE_DISK = (1),
-    RESOURCETYPE_PRINT = (2),
-    RESOURCETYPE_ANY = (0),
-    RESOURCE_CONNECTED = (1),
-    RESOURCE_GLOBALNET = (2),
-    RESOURCE_REMEMBERED = (3),
-    RESOURCEUSAGE_CONNECTABLE = (1),
-    RESOURCEUSAGE_CONTAINER = (2),
-    WN_BAD_NETNAME = (0x43),
-    WN_EXTENDED_ERROR = (0x4b8),
-    WN_MORE_DATA = (0xea),
-    WN_NO_NETWORK = (0x4c6),
-    WN_SUCCESS = (0),
-    WN_ACCESS_DENIED = (0x5),
-    WN_BAD_PROVIDER = (0x4b4),
-    WN_NOT_AUTHENTICATED = (0x4dc),
-    UNIVERSAL_NAME_INFO_LEVEL = (1),
-    REMOTE_NAME_INFO_LEVEL = (2),
-    STILL_ACTIVE = (0x103),
-    SP_SERIALCOMM = (0x1),
-    BAUD_075 = (0x1),
-    BAUD_110 = (0x2),
-    BAUD_134_5 = (0x4),
-    BAUD_150 = (0x8),
-    BAUD_300 = (0x10),
-    BAUD_600 = (0x20),
-    BAUD_1200 = (0x40),
-    BAUD_1800 = (0x80),
-    BAUD_2400 = (0x100),
-    BAUD_4800 = (0x200),
-    BAUD_7200 = (0x400),
-    BAUD_9600 = (0x800),
-    BAUD_14400 = (0x1000),
-    BAUD_19200 = (0x2000),
-    BAUD_38400 = (0x4000),
-    BAUD_56K = (0x8000),
-    BAUD_57600 = (0x40000),
-    BAUD_115200 = (0x20000),
-    BAUD_128K = (0x10000),
-    BAUD_USER = (0x10000000),
-    PST_FAX = (0x21),
-    PST_LAT = (0x101),
-    PST_MODEM = (0x6),
-    PST_NETWORK_BRIDGE = (0x100),
-    PST_PARALLELPORT = (0x2),
-    PST_RS232 = (0x1),
-    PST_RS422 = (0x3),
-    PST_RS423 = (0x4),
-    PST_RS449 = (0x5),
-    PST_SCANNER = (0x22),
-    PST_TCPIP_TELNET = (0x102),
-    PST_UNSPECIFIED = (0),
-    PST_X25 = (0x103),
-    PCF_16BITMODE = (0x200),
-    PCF_DTRDSR = (0x1),
-    PCF_INTTIMEOUTS = (0x80),
-    PCF_PARITY_CHECK = (0x8),
-    PCF_RLSD = (0x4),
-    PCF_RTSCTS = (0x2),
-    PCF_SETXCHAR = (0x20),
-    PCF_SPECIALCHARS = (0x100),
-    PCF_TOTALTIMEOUTS = (0x40),
-    PCF_XONXOFF = (0x10),
-    SP_BAUD = (0x2),
-    SP_DATABITS = (0x4),
-    SP_HANDSHAKING = (0x10),
-    SP_PARITY = (0x1),
-    SP_PARITY_CHECK = (0x20),
-    SP_RLSD = (0x40),
-    SP_STOPBITS = (0x8),
-    DATABITS_5 = (1),
-    DATABITS_6 = (2),
-    DATABITS_7 = (4),
-    DATABITS_8 = (8),
-    DATABITS_16 = (16),
-    DATABITS_16X = (32),
-    STOPBITS_10 = (1),
-    STOPBITS_15 = (2),
-    STOPBITS_20 = (4),
-    PARITY_NONE = (256),
-    PARITY_ODD = (512),
-    PARITY_EVEN = (1024),
-    PARITY_MARK = (2048),
-    PARITY_SPACE = (4096),
-    COMMPROP_INITIALIZED = (0xe73cf52e),
-    CBR_110 = (110),
-    CBR_300 = (300),
-    CBR_600 = (600),
-    CBR_1200 = (1200),
-    CBR_2400 = (2400),
-    CBR_4800 = (4800),
-    CBR_9600 = (9600),
-    CBR_14400 = (14400),
-    CBR_19200 = (19200),
-    CBR_38400 = (38400),
-    CBR_56000 = (56000),
-    CBR_57600 = (57600),
-    CBR_115200 = (115200),
-    CBR_128000 = (128000),
-    CBR_256000 = (256000),
-    DTR_CONTROL_DISABLE = (0),
-    DTR_CONTROL_ENABLE = (1),
-    DTR_CONTROL_HANDSHAKE = (2),
-    RTS_CONTROL_DISABLE = (0),
-    RTS_CONTROL_ENABLE = (1),
-    RTS_CONTROL_HANDSHAKE = (2),
-    RTS_CONTROL_TOGGLE = (3),
-    EVENPARITY = (2),
-    MARKPARITY = (3),
-    NOPARITY = (0),
-    ODDPARITY = (1),
-    SPACEPARITY = (4),
-    ONESTOPBIT = (0),
-    ONE5STOPBITS = (1),
-    TWOSTOPBITS = (2),
-    CREATE_PROCESS_DEBUG_EVENT = (3),
-    CREATE_THREAD_DEBUG_EVENT = (2),
-    EXCEPTION_DEBUG_EVENT = (1),
-    EXIT_PROCESS_DEBUG_EVENT = (5),
-    EXIT_THREAD_DEBUG_EVENT = (4),
-    LOAD_DLL_DEBUG_EVENT = (6),
-    OUTPUT_DEBUG_STRING_EVENT = (8),
-    UNLOAD_DLL_DEBUG_EVENT = (7),
-    RIP_EVENT = (9),
-    PROCESS_HEAP_REGION = (1),
-    PROCESS_HEAP_UNCOMMITTED_RANGE = (2),
-    PROCESS_HEAP_ENTRY_BUSY = (4),
-    PROCESS_HEAP_ENTRY_MOVEABLE = (16),
-    PROCESS_HEAP_ENTRY_DDESHARE = (32),
-    HINSTANCE_ERROR = (32),
-    BACKUP_DATA = (1),
-    BACKUP_EA_DATA = (2),
-    BACKUP_SECURITY_DATA = (3),
-    BACKUP_ALTERNATE_DATA = (4),
-    BACKUP_LINK = (5),
-    STREAM_MODIFIED_WHEN_READ = (1),
-    STREAM_CONTAINS_SECURITY = (2),
-    STARTF_USESHOWWINDOW = (1),
-    STARTF_USEPOSITION = (4),
-    STARTF_USESIZE = (2),
-    STARTF_USECOUNTCHARS = (8),
-    STARTF_USEFILLATTRIBUTE = (16),
-    STARTF_RUNFULLSCREEN = (32),
-    STARTF_FORCEONFEEDBACK = (64),
-    STARTF_FORCEOFFFEEDBACK = (128),
-    STARTF_USESTDHANDLES = (256),
-    STARTF_USEHOTKEY = (512),
-    VER_PLATFORM_WIN32s = (0),
-    VER_PLATFORM_WIN32_WINDOWS = (1),
-    VER_PLATFORM_WIN32_NT = (2),
-    MAXPROPPAGES = (100),
-    PSP_DEFAULT = (0),
-    PSP_DLGINDIRECT = (1),
-    PSP_HASHELP = (32),
-    PSP_USECALLBACK = (128),
-    PSP_USEHICON = (2),
-    PSP_USEICONID = (4),
-    PSP_USEREFPARENT = (64),
-    PSP_USETITLE = (8),
-    PSP_RTLREADING = (16),
-    PSH_DEFAULT = (0),
-    PSH_HASHELP = (512),
-    PSH_MODELESS = (1024),
-    PSH_NOAPPLYNOW = (128),
-    PSH_PROPSHEETPAGE = (8),
-    PSH_PROPTITLE = (1),
-    PSH_USECALLBACK = (256),
-    PSH_USEHICON = (2),
-    PSH_USEICONID = (4),
-    PSH_USEPSTARTPAGE = (64),
-    PSH_WIZARD = (32),
-    PSH_RTLREADING = (2048),
-    PSCB_INITIALIZED = (1),
-    PSCB_PRECREATE = (2),
-    PSNRET_NOERROR = (0),
-    PSNRET_INVALID_NOCHANGEPAGE = (2),
-    PSBTN_APPLYNOW = (4),
-    PSBTN_BACK = (0),
-    PSBTN_CANCEL = (5),
-    PSBTN_FINISH = (2),
-    PSBTN_HELP = (6),
-    PSBTN_NEXT = (1),
-    PSBTN_OK = (3),
-    PSWIZB_BACK = (1),
-    PSWIZB_NEXT = (2),
-    PSWIZB_FINISH = (4),
-    PSWIZB_DISABLEDFINISH = (8),
-    ID_PSREBOOTSYSTEM = (3),
-    ID_PSRESTARTWINDOWS = (2),
-    WIZ_BODYCX = (184),
-    WIZ_BODYX = (92),
-    WIZ_CXBMP = (80),
-    WIZ_CXDLG = (276),
-    WIZ_CYDLG = (140),
-}
-char* VS_FILE_INFO = cast(char*) ((16));
-enum : DWORD {
-    VS_VERSION_INFO = (1),
-    VS_FF_DEBUG = (0x1),
-    VS_FF_INFOINFERRED = (0x10),
-    VS_FF_PATCHED = (0x4),
-    VS_FF_PRERELEASE = (0x2),
-    VS_FF_PRIVATEBUILD = (0x8),
-    VS_FF_SPECIALBUILD = (0x20),
-    VOS_UNKNOWN = (0),
-    VOS_DOS = (0x10000),
-    VOS_OS216 = (0x20000),
-    VOS_OS232 = (0x30000),
-    VOS_NT = (0x40000),
-    VOS_DOS_WINDOWS16 = (0x10001),
-    VOS_DOS_WINDOWS32 = (0x10004),
-    VOS_OS216_PM16 = (0x20002),
-    VOS_OS232_PM32 = (0x30003),
-    VOS_NT_WINDOWS32 = (0x40004),
-    VFT_UNKNOWN = (0),
-    VFT_APP = (0x1),
-    VFT_DLL = (0x2),
-    VFT_DRV = (0x3),
-    VFT_FONT = (0x4),
-    VFT_VXD = (0x5),
-    VFT_STATIC_LIB = (0x7),
-    VFT2_UNKNOWN = (0),
-    VFT2_DRV_PRINTER = (0x1),
-    VFT2_DRV_KEYBOARD = (0x2),
-    VFT2_DRV_LANGUAGE = (0x3),
-    VFT2_DRV_DISPLAY = (0x4),
-    VFT2_DRV_MOUSE = (0x5),
-    VFT2_DRV_NETWORK = (0x6),
-    VFT2_DRV_SYSTEM = (0x7),
-    VFT2_DRV_INSTALLABLE = (0x8),
-    VFT2_DRV_SOUND = (0x9),
-    VFT2_FONT_RASTER = (0x1),
-    VFT2_FONT_VECTOR = (0x2),
-    VFT2_FONT_TRUETYPE = (0x3),
-    PAN_ANY = (0),
-    PAN_NO_FIT = (1),
-    PAN_FAMILY_TEXT_DISPLAY = (2),
-    PAN_FAMILY_SCRIPT = (3),
-    PAN_FAMILY_DECORATIVE = (4),
-    PAN_FAMILY_PICTORIAL = (5),
-    PAN_SERIF_COVE = (2),
-    PAN_SERIF_OBTUSE_COVE = (3),
-    PAN_SERIF_SQUARE_COVE = (4),
-    PAN_SERIF_OBTUSE_SQUARE_COVE = (5),
-    PAN_SERIF_SQUARE = (6),
-    PAN_SERIF_THIN = (7),
-    PAN_SERIF_BONE = (8),
-    PAN_SERIF_EXAGGERATED = (9),
-    PAN_SERIF_TRIANGLE = (10),
-    PAN_SERIF_NORMAL_SANS = (11),
-    PAN_SERIF_OBTUSE_SANS = (12),
-    PAN_SERIF_PERP_SANS = (13),
-    PAN_SERIF_FLARED = (14),
-    PAN_SERIF_ROUNDED = (15),
-    PAN_WEIGHT_VERY_LIGHT = (2),
-    PAN_WEIGHT_LIGHT = (3),
-    PAN_WEIGHT_THIN = (4),
-    PAN_WEIGHT_BOOK = (5),
-    PAN_WEIGHT_MEDIUM = (6),
-    PAN_WEIGHT_DEMI = (7),
-    PAN_WEIGHT_BOLD = (8),
-    PAN_WEIGHT_HEAVY = (9),
-    PAN_WEIGHT_BLACK = (10),
-    PAN_WEIGHT_NORD = (11),
-    PAN_PROP_OLD_STYLE = (2),
-    PAN_PROP_MODERN = (3),
-    PAN_PROP_EVEN_WIDTH = (4),
-    PAN_PROP_EXPANDED = (5),
-    PAN_PROP_CONDENSED = (6),
-    PAN_PROP_VERY_EXPANDED = (7),
-    PAN_PROP_VERY_CONDENSED = (8),
-    PAN_PROP_MONOSPACED = (9),
-    PAN_CONTRAST_NONE = (2),
-    PAN_CONTRAST_VERY_LOW = (3),
-    PAN_CONTRAST_LOW = (4),
-    PAN_CONTRAST_MEDIUM_LOW = (5),
-    PAN_CONTRAST_MEDIUM = (6),
-    PAN_CONTRAST_MEDIUM_HIGH = (7),
-    PAN_CONTRAST_HIGH = (8),
-    PAN_CONTRAST_VERY_HIGH = (9),
-    PAN_STROKE_GRADUAL_DIAG = (2),
-    PAN_STROKE_GRADUAL_TRAN = (3),
-    PAN_STROKE_GRADUAL_VERT = (4),
-    PAN_STROKE_GRADUAL_HORZ = (5),
-    PAN_STROKE_RAPID_VERT = (6),
-    PAN_STROKE_RAPID_HORZ = (7),
-    PAN_STROKE_INSTANT_VERT = (8),
-    PAN_STRAIGHT_ARMS_HORZ = (2),
-    PAN_STRAIGHT_ARMS_WEDGE = (3),
-    PAN_STRAIGHT_ARMS_VERT = (4),
-    PAN_STRAIGHT_ARMS_SINGLE_SERIF = (5),
-    PAN_STRAIGHT_ARMS_DOUBLE_SERIF = (6),
-    PAN_BENT_ARMS_HORZ = (7),
-    PAN_BENT_ARMS_VERT = (9),
-    PAN_BENT_ARMS_WEDGE = (8),
-    PAN_BENT_ARMS_SINGLE_SERIF = (10),
-    PAN_BENT_ARMS_DOUBLE_SERIF = (11),
-    PAN_LETT_NORMAL_CONTACT = (2),
-    PAN_LETT_NORMAL_WEIGHTED = (3),
-    PAN_LETT_NORMAL_BOXED = (4),
-    PAN_LETT_NORMAL_FLATTENED = (5),
-    PAN_LETT_NORMAL_ROUNDED = (6),
-    PAN_LETT_NORMAL_OFF_CENTER = (7),
-    PAN_LETT_NORMAL_SQUARE = (8),
-    PAN_LETT_OBLIQUE_CONTACT = (9),
-    PAN_LETT_OBLIQUE_WEIGHTED = (10),
-    PAN_LETT_OBLIQUE_BOXED = (11),
-    PAN_LETT_OBLIQUE_FLATTENED = (12),
-    PAN_LETT_OBLIQUE_ROUNDED = (13),
-    PAN_LETT_OBLIQUE_OFF_CENTER = (14),
-    PAN_LETT_OBLIQUE_SQUARE = (15),
-    PAN_MIDLINE_STANDARD_TRIMMED = (2),
-    PAN_MIDLINE_STANDARD_POINTED = (3),
-    PAN_MIDLINE_STANDARD_SERIFED = (4),
-    PAN_MIDLINE_HIGH_TRIMMED = (5),
-    PAN_MIDLINE_HIGH_POINTED = (6),
-    PAN_MIDLINE_HIGH_SERIFED = (7),
-    PAN_MIDLINE_CONSTANT_TRIMMED = (8),
-    PAN_MIDLINE_CONSTANT_POINTED = (9),
-    PAN_MIDLINE_CONSTANT_SERIFED = (10),
-    PAN_MIDLINE_LOW_TRIMMED = (11),
-    PAN_MIDLINE_LOW_POINTED = (12),
-    PAN_MIDLINE_LOW_SERIFED = (13),
-    PAN_XHEIGHT_CONSTANT_SMALL = (2),
-    PAN_XHEIGHT_CONSTANT_STD = (3),
-    PAN_XHEIGHT_CONSTANT_LARGE = (4),
-    PAN_XHEIGHT_DUCKING_SMALL = (5),
-    PAN_XHEIGHT_DUCKING_STD = (6),
-    PAN_XHEIGHT_DUCKING_LARGE = (7),
-    PC_EXPLICIT = (2),
-    PC_NOCOLLAPSE = (4),
-    PC_RESERVED = (1),
-    BS_DIBPATTERN = (5),
-    BS_DIBPATTERN8X8 = (8),
-    BS_DIBPATTERNPT = (6),
-    BS_HATCHED = (2),
-    BS_HOLLOW = (1),
-    BS_NULL = (1),
-    BS_PATTERN = (3),
-    BS_PATTERN8X8 = (7),
-    BS_SOLID = (0),
-    DM_ORIENTATION = (0x1),
-    DM_PAPERSIZE = (0x2),
-    DM_PAPERLENGTH = (0x4),
-    DM_PAPERWIDTH = (0x8),
-    DM_SCALE = (0x10),
-    DM_COPIES = (0x100),
-    DM_DEFAULTSOURCE = (0x200),
-    DM_PRINTQUALITY = (0x400),
-    DM_COLOR = (0x800),
-    DM_DUPLEX = (0x1000),
-    DM_YRESOLUTION = (0x2000),
-    DM_TTOPTION = (0x4000),
-    DM_COLLATE = (0x8000),
-    DM_FORMNAME = (0x10000),
-    DM_LOGPIXELS = (0x20000),
-    DM_ICMMETHOD = (0x800000),
-    DM_ICMINTENT = (0x1000000),
-    DM_MEDIATYPE = (0x2000000),
-    DM_DITHERTYPE = (0x4000000),
-    DMORIENT_LANDSCAPE = (2),
-    DMORIENT_PORTRAIT = (1),
-    DMPAPER_LETTER = (1),
-    DMPAPER_LEGAL = (5),
-    DMPAPER_A4 = (9),
-    DMPAPER_CSHEET = (24),
-    DMPAPER_DSHEET = (25),
-    DMPAPER_ESHEET = (26),
-    DMPAPER_LETTERSMALL = (2),
-    DMPAPER_TABLOID = (3),
-    DMPAPER_LEDGER = (4),
-    DMPAPER_STATEMENT = (6),
-    DMPAPER_EXECUTIVE = (7),
-    DMPAPER_A3 = (8),
-    DMPAPER_A4SMALL = (10),
-    DMPAPER_A5 = (11),
-    DMPAPER_B4 = (12),
-    DMPAPER_B5 = (13),
-    DMPAPER_FOLIO = (14),
-    DMPAPER_QUARTO = (15),
-    DMPAPER_10X14 = (16),
-    DMPAPER_11X17 = (17),
-    DMPAPER_NOTE = (18),
-    DMPAPER_ENV_9 = (19),
-    DMPAPER_ENV_10 = (20),
-    DMPAPER_ENV_11 = (21),
-    DMPAPER_ENV_12 = (22),
-    DMPAPER_ENV_14 = (23),
-    DMPAPER_ENV_DL = (27),
-    DMPAPER_ENV_C5 = (28),
-    DMPAPER_ENV_C3 = (29),
-    DMPAPER_ENV_C4 = (30),
-    DMPAPER_ENV_C6 = (31),
-    DMPAPER_ENV_C65 = (32),
-    DMPAPER_ENV_B4 = (33),
-    DMPAPER_ENV_B5 = (34),
-    DMPAPER_ENV_B6 = (35),
-    DMPAPER_ENV_ITALY = (36),
-    DMPAPER_ENV_MONARCH = (37),
-    DMPAPER_ENV_PERSONAL = (38),
-    DMPAPER_FANFOLD_US = (39),
-    DMPAPER_FANFOLD_STD_GERMAN = (40),
-    DMPAPER_FANFOLD_LGL_GERMAN = (41),
-    DMRES_HIGH = -((4)),
-    DMRES_MEDIUM = -((3)),
-    DMRES_LOW = -((2)),
-    DMRES_DRAFT = -((1)),
-    DMCOLOR_COLOR = (2),
-    DMCOLOR_MONOCHROME = (1),
-    DMDUP_SIMPLEX = (1),
-    DMDUP_HORIZONTAL = (3),
-    DMDUP_VERTICAL = (2),
-    DMTT_BITMAP = (1),
-    DMTT_DOWNLOAD = (2),
-    DMTT_SUBDEV = (3),
-    DMCOLLATE_TRUE = (1),
-    DMCOLLATE_FALSE = (0),
-    DM_GRAYSCALE = (1),
-    DM_INTERLACED = (2),
-    DMICMMETHOD_NONE = (1),
-    DMICMMETHOD_SYSTEM = (2),
-    DMICMMETHOD_DRIVER = (3),
-    DMICMMETHOD_DEVICE = (4),
-    DMICMMETHOD_USER = (256),
-    DMICM_SATURATE = (1),
-    DMICM_CONTRAST = (2),
-    DMICM_COLORMETRIC = (3),
-    DMICM_USER = (256),
-    DMMEDIA_STANDARD = (1),
-    DMMEDIA_GLOSSY = (3),
-    DMMEDIA_TRANSPARENCY = (2),
-    DMMEDIA_USER = (256),
-    DMDITHER_NONE = (1),
-    DMDITHER_COARSE = (2),
-    DMDITHER_FINE = (3),
-    DMDITHER_LINEART = (4),
-    DMDITHER_GRAYSCALE = (10),
-    DMDITHER_USER = (256),
-    RDH_RECTANGLES = (1),
-    TT_POLYGON_TYPE = (24),
-    TT_PRIM_LINE = (1),
-    TT_PRIM_QSPLINE = (2),
-    GCPCLASS_ARABIC = (2),
-    GCPCLASS_HEBREW = (2),
-    GCPCLASS_LATIN = (1),
-    GCPCLASS_LATINNUMBER = (5),
-    GCPCLASS_LOCALNUMBER = (4),
-    GCPCLASS_LATINNUMERICSEPARATOR = (7),
-    GCPCLASS_LATINNUMERICTERMINATOR = (6),
-    GCPCLASS_NEUTRAL = (3),
-    GCPCLASS_NUMERICSEPARATOR = (8),
-    GCPCLASS_PREBOUNDLTR = (128),
-    GCPCLASS_PREBOUNDRTL = (64),
-    GCPCLASS_POSTBOUNDLTR = (32),
-    GCPCLASS_POSTBOUNDRTL = (16),
-    GCPGLYPH_LINKBEFORE = (32768),
-    GCPGLYPH_LINKAFTER = (16384),
-    TT_AVAILABLE = (1),
-    TT_ENABLED = (2),
-    CA_NEGATIVE = (1),
-    CA_LOG_FILTER = (2),
-    ILLUMINANT_DEVICE_DEFAULT = (0),
-    ILLUMINANT_A = (1),
-    ILLUMINANT_B = (2),
-    ILLUMINANT_C = (3),
-    ILLUMINANT_D50 = (4),
-    ILLUMINANT_D55 = (5),
-    ILLUMINANT_D65 = (6),
-    ILLUMINANT_D75 = (7),
-    ILLUMINANT_F2 = (8),
-    ILLUMINANT_TUNGSTEN = (1),
-    ILLUMINANT_DAYLIGHT = (3),
-    ILLUMINANT_FLUORESCENT = (8),
-    ILLUMINANT_NTSC = (3),
-    DI_APPBANDING = (1),
-    EMR_HEADER = (1),
-    ENHMETA_SIGNATURE = (1179469088),
-    ENM_CHANGE = (1),
-    ENM_CORRECTTEXT = (4194304),
-    ENM_DROPFILES = (1048576),
-    ENM_KEYEVENTS = (65536),
-    ENM_MOUSEEVENTS = (131072),
-    ENM_PROTECTED = (2097152),
-    ENM_REQUESTRESIZE = (262144),
-    ENM_SCROLL = (4),
-    ENM_SELCHANGE = (524288),
-    ENM_UPDATE = (2),
-    ENM_NONE = (0),
-    ES_DISABLENOSCROLL = (8192),
-    ES_EX_NOCALLOLEINIT = (16777216),
-    ES_NOIME = (524288),
-    ES_SAVESEL = (32768),
-    ES_SELFIME = (262144),
-    ES_SUNKEN = (16384),
-    ES_VERTICAL = (4194304),
-    ES_SELECTIONBAR = (16777216),
-    ECOOP_SET = (1),
-    ECOOP_OR = (2),
-    ECOOP_AND = (3),
-    ECOOP_XOR = (4),
-    ECO_AUTOWORDSELECTION = (1),
-    ECO_AUTOVSCROLL = (64),
-    ECO_AUTOHSCROLL = (128),
-    ECO_NOHIDESEL = (256),
-    ECO_READONLY = (2048),
-    ECO_WANTRETURN = (4096),
-    ECO_SAVESEL = (32768),
-    ECO_SELECTIONBAR = (16777216),
-    ECO_VERTICAL = (4194304),
-    SCF_WORD = (2),
-    SCF_SELECTION = (1),
-    SF_TEXT = (1),
-    SF_RTF = (2),
-    SF_RTFNOOBJS = (3),
-    SF_TEXTIZED = (4),
-    SFF_SELECTION = (32768),
-    SFF_PLAINRTF = (16384),
-    WB_CLASSIFY = (3),
-    WB_LEFTBREAK = (6),
-    WB_PREVBREAK = (6),
-    WB_MOVEWORDLEFT = (4),
-    WB_MOVEWORDPREV = (4),
-    WB_MOVEWORDRIGHT = (5),
-    WB_MOVEWORDNEXT = (5),
-    WB_RIGHTBREAK = (7),
-    WB_NEXTBREAK = (7),
-    PC_LEADING = (2),
-    PC_FOLLOWING = (1),
-    PC_DELIMITER = (4),
-    PC_OVERFLOW = (3),
-    WBF_WORDWRAP = (16),
-    WBF_WORDBREAK = (32),
-    WBF_OVERFLOW = (64),
-    WBF_LEVEL1 = (128),
-    WBF_LEVEL2 = (256),
-    WBF_CUSTOM = (512),
-    WBF_BREAKAFTER = (64),
-    WBF_BREAKLINE = (32),
-    WBF_ISWHITE = (16),
-    CFM_BOLD = (1),
-    CFM_COLOR = (1073741824),
-    CFM_FACE = (536870912),
-    CFM_ITALIC = (2),
-    CFM_OFFSET = (268435456),
-    CFM_PROTECTED = (16),
-    CFM_SIZE = (0x80000000),
-    CFM_STRIKEOUT = (8),
-    CFM_UNDERLINE = (4),
-    CFE_AUTOCOLOR = (1073741824),
-    CFE_BOLD = (1),
-    CFE_ITALIC = (2),
-    CFE_STRIKEOUT = (8),
-    CFE_UNDERLINE = (4),
-    CFE_PROTECTED = (16),
-    PFM_ALIGNMENT = (8),
-    PFM_NUMBERING = (32),
-    PFM_OFFSET = (4),
-    PFM_OFFSETINDENT = (0x80000000),
-    PFM_RIGHTINDENT = (2),
-    PFM_STARTINDENT = (1),
-    PFM_TABSTOPS = (16),
-    PFN_BULLET = (1),
-    PFA_LEFT = (1),
-    PFA_RIGHT = (2),
-    PFA_CENTER = (3),
-    SEL_EMPTY = (0),
-    SEL_TEXT = (1),
-    SEL_OBJECT = (2),
-    SEL_MULTICHAR = (4),
-    SEL_MULTIOBJECT = (8),
-}
-const {
-char* CF_RTF = ("Rich Text Format");
-char* CF_RETEXTOBJ = ("RichEdit Text and Objects");
-}
-enum : DWORD {
-    ODT_BUTTON = (4),
-    ODT_COMBOBOX = (3),
-    ODT_LISTBOX = (2),
-    ODT_LISTVIEW = (102),
-    ODT_MENU = (1),
-    ODT_STATIC = (5),
-    ODT_TAB = (101),
-    ODT_HEADER = (100),
-    ODA_DRAWENTIRE = (1),
-    ODA_FOCUS = (4),
-    ODA_SELECT = (2),
-    ODS_CHECKED = (8),
-    ODS_COMBOBOXEDIT = (4096),
-    ODS_DEFAULT = (32),
-    ODS_DISABLED = (4),
-    ODS_FOCUS = (16),
-    ODS_GRAYED = (2),
-    ODS_SELECTED = (1),
-}
-const {
-char* ANIMATE_CLASSW = ("SysAnimate32");
-char* HOTKEY_CLASSW = ("msctls_hotkey32");
-char* PROGRESS_CLASSW = ("msctls_progress32");
-char* STATUSCLASSNAMEW = ("msctls_statusbar32");
-char* TOOLBARCLASSNAMEW = ("ToolbarWindow32");
-char* TOOLTIPS_CLASSW = ("tooltips_class32");
-char* TRACKBAR_CLASSW = ("msctls_trackbar32");
-char* UPDOWN_CLASSW = ("msctls_updown32");
-char* WC_HEADERW = ("SysHeader32");
-char* WC_LISTVIEWW = ("SysListView32");
-char* WC_TABCONTROLW = ("SysTabControl32");
-char* WC_TREEVIEWW = ("SysTreeView32");
-}
-enum : DWORD {
-    CCS_ADJUSTABLE = (0x20),
-    CCS_BOTTOM = (0x3),
-    CCS_NODIVIDER = (0x40),
-    CCS_NOMOVEY = (0x2),
-    CCS_NOPARENTALIGN = (0x8),
-    CCS_NORESIZE = (0x4),
-    CCS_TOP = (0x1),
-}
-const {
-char* ANIMATE_CLASSA = ("SysAnimate32");
-char* HOTKEY_CLASSA = ("msctls_hotkey32");
-char* PROGRESS_CLASSA = ("msctls_progress32");
-char* STATUSCLASSNAMEA = ("msctls_statusbar32");
-char* TOOLBARCLASSNAMEA = ("ToolbarWindow32");
-char* TOOLTIPS_CLASSA = ("tooltips_class32");
-char* TRACKBAR_CLASSA = ("msctls_trackbar32");
-char* UPDOWN_CLASSA = ("msctls_updown32");
-char* WC_HEADERA = ("SysHeader32");
-char* WC_LISTVIEWA = ("SysListView32");
-char* WC_TABCONTROLA = ("SysTabControl32");
-char* WC_TREEVIEWA = ("SysTreeView32");
-char* ANIMATE_CLASS = (ANIMATE_CLASSA);
-char* HOTKEY_CLASS = (HOTKEY_CLASSA);
-char* PROGRESS_CLASS = (PROGRESS_CLASSA);
-char* STATUSCLASSNAME = (STATUSCLASSNAMEA);
-char* TOOLBARCLASSNAME = (TOOLBARCLASSNAMEA);
-char* TOOLTIPS_CLASS = (TOOLTIPS_CLASSA);
-char* TRACKBAR_CLASS = (TRACKBAR_CLASSA);
-char* UPDOWN_CLASS = (UPDOWN_CLASSA);
-char* WC_HEADER = (WC_HEADERA);
-char* WC_LISTVIEW = (WC_LISTVIEWA);
-char* WC_TABCONTROL = (WC_TABCONTROLA);
-char* WC_TREEVIEW = (WC_TREEVIEWA);
-}
-enum : DWORD {
-    HDS_BUTTONS = (2),
-    HDS_HIDDEN = (8),
-    HDS_HORZ = (0),
-    HDI_BITMAP = (16),
-    HDI_FORMAT = (4),
-    HDI_HEIGHT = (1),
-    HDI_LPARAM = (8),
-    HDI_TEXT = (2),
-    HDI_WIDTH = (1),
-    HDF_CENTER = (2),
-    HDF_LEFT = (0),
-    HDF_RIGHT = (1),
-    HDF_RTLREADING = (4),
-    HDF_BITMAP = (8192),
-    HDF_OWNERDRAW = (32768),
-    HDF_STRING = (16384),
-    HDF_JUSTIFYMASK = (3),
-    HHT_NOWHERE = (1),
-    HHT_ONDIVIDER = (4),
-    HHT_ONDIVOPEN = (8),
-    HHT_ONHEADER = (2),
-    HHT_TOLEFT = (2048),
-    HHT_TORIGHT = (1024),
-    HINST_COMMCTRL = -(1),
-    IDB_STD_LARGE_COLOR = (1),
-    IDB_STD_SMALL_COLOR = (0),
-    IDB_VIEW_LARGE_COLOR = (5),
-    IDB_VIEW_SMALL_COLOR = (4),
-    STD_COPY = (1),
-    STD_CUT = (0),
-    STD_DELETE = (5),
-    STD_FILENEW = (6),
-    STD_FILEOPEN = (7),
-    STD_FILESAVE = (8),
-    STD_FIND = (12),
-    STD_HELP = (11),
-    STD_PASTE = (2),
-    STD_PRINT = (14),
-    STD_PRINTPRE = (9),
-    STD_PROPERTIES = (10),
-    STD_REDOW = (4),
-    STD_REPLACE = (13),
-    STD_UNDO = (3),
-    VIEW_LARGEICONS = (0),
-    VIEW_SMALLICONS = (1),
-    VIEW_LIST = (2),
-    VIEW_DETAILS = (3),
-    VIEW_SORTNAME = (4),
-    VIEW_SORTSIZE = (5),
-    VIEW_SORTDATE = (6),
-    VIEW_SORTTYPE = (7),
-    TBSTYLE_ALTDRAG = (1024),
-    TBSTYLE_TOOLTIPS = (256),
-    TBSTYLE_WRAPABLE = (512),
-    TBSTYLE_BUTTON = (0),
-    TBSTYLE_CHECK = (2),
-    TBSTYLE_CHECKGROUP = (6),
-    TBSTYLE_GROUP = (4),
-    TBSTYLE_SEP = (1),
-    TBSTATE_CHECKED = (1),
-    TBSTATE_ENABLED = (4),
-    TBSTATE_HIDDEN = (8),
-    TBSTATE_INDETERMINATE = (16),
-    TBSTATE_PRESSED = (2),
-    TBSTATE_WRAP = (32),
-    TTS_ALWAYSTIP = (1),
-    TTS_NOPREFIX = (2),
-    TTF_IDISHWND = (1),
-    TTF_CENTERTIP = (2),
-    TTF_RTLREADING = (4),
-    TTF_SUBCLASS = (16),
-    TTDT_AUTOMATIC = (0),
-    TTDT_AUTOPOP = (2),
-    TTDT_INITIAL = (3),
-    TTDT_RESHOW = (1),
-    SBARS_SIZEGRIP = (256),
-    DL_MOVECURSOR = (3),
-    DL_COPYCURSOR = (2),
-    DL_STOPCURSOR = (1),
-    UDS_ALIGNLEFT = (8),
-    UDS_ALIGNRIGHT = (4),
-    UDS_ARROWKEYS = (32),
-    UDS_AUTOBUDDY = (16),
-    UDS_HORZ = (64),
-    UDS_NOTHOUSANDS = (128),
-    UDS_SETBUDDYINT = (2),
-    UDS_WRAP = (1),
-    UD_MAXVAL = (32767),
-    UD_MINVAL = -((32767)),
-    HOTKEYF_ALT = (4),
-    HOTKEYF_CONTROL = (2),
-    HOTKEYF_EXT = (8),
-    HOTKEYF_SHIFT = (1),
-    HKCOMB_A = (8),
-    HKCOMB_C = (4),
-    HKCOMB_CA = (64),
-    HKCOMB_NONE = (1),
-    HKCOMB_S = (2),
-    HKCOMB_SA = (32),
-    HKCOMB_SC = (16),
-    HKCOMB_SCA = (128),
-    TBS_HORZ = (0),
-    TBS_VERT = (2),
-    TBS_AUTOTICKS = (1),
-    TBS_NOTICKS = (16),
-    TBS_TOP = (4),
-    TBS_BOTTOM = (0),
-    TBS_LEFT = (4),
-    TBS_RIGHT = (0),
-    TBS_BOTH = (8),
-    TBS_ENABLESELRANGE = (32),
-    TBS_FIXEDLENGTH = (64),
-    TBS_NOTHUMB = (128),
-    TB_BOTTOM = (7),
-    TB_ENDTRACK = (8),
-    TB_LINEDOWN = (1),
-    TB_LINEUP = (0),
-    TB_PAGEDOWN = (3),
-    TB_PAGEUP = (2),
-    TB_THUMBPOSITION = (4),
-    TB_THUMBTRACK = (5),
-    TB_TOP = (6),
-    LVS_ALIGNLEFT = (2048),
-    LVS_ALIGNTOP = (0),
-    LVS_AUTOARRANGE = (256),
-    LVS_EDITLABELS = (512),
-    LVS_ICON = (0),
-    LVS_LIST = (3),
-    LVS_NOCOLUMNHEADER = (16384),
-    LVS_NOLABELWRAP = (128),
-    LVS_NOSCROLL = (8192),
-    LVS_NOSORTHEADER = (32768),
-    LVS_OWNERDRAWFIXED = (1024),
-    LVS_REPORT = (1),
-    LVS_SHAREIMAGELISTS = (64),
-    LVS_SHOWSELALWAYS = (8),
-    LVS_SINGLESEL = (4),
-    LVS_SMALLICON = (2),
-    LVS_SORTASCENDING = (16),
-    LVS_SORTDESCENDING = (32),
-    LVS_TYPESTYLEMASK = (64512),
-    LVSIL_NORMAL = (0),
-    LVSIL_SMALL = (1),
-    LVSIL_STATE = (2),
-    LVIS_CUT = (4),
-    LVIS_DROPHILITED = (8),
-    LVIS_FOCUSED = (1),
-    LVIS_SELECTED = (2),
-    LVIS_OVERLAYMASK = (3840),
-    LVIS_STATEIMAGEMASK = (61440),
-}
-const {
-    LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR)(-(1));
-    LPSTR  LPSTR_TEXTCALLBACKA = cast(LPSTR)(-(1));
-    version(Win32SansUnicode){
-        alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK;
-    }
-    else{
-        alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK;
-    }
-}
-enum : DWORD {
-    LVIF_TEXT = (1),
-    LVIF_IMAGE = (2),
-    LVIF_PARAM = (4),
-    LVIF_STATE = (8),
-    LVIF_DI_SETITEM = (4096),
-    LVNI_ABOVE = (256),
-    LVNI_ALL = (0),
-    LVNI_BELOW = (512),
-    LVNI_TOLEFT = (1024),
-    LVNI_TORIGHT = (2048),
-    LVNI_CUT = (4),
-    LVNI_DROPHILITED = (8),
-    LVNI_FOCUSED = (1),
-    LVNI_SELECTED = (2),
-    LVFI_PARAM = (1),
-    LVFI_PARTIAL = (8),
-    LVFI_STRING = (2),
-    LVFI_WRAP = (32),
-    LVFI_NEARESTXY = (64),
-    LVHT_ABOVE = (8),
-    LVHT_BELOW = (16),
-    LVHT_NOWHERE = (1),
-    LVHT_ONITEMICON = (2),
-    LVHT_ONITEMLABEL = (4),
-    LVHT_ONITEMSTATEICON = (8),
-    LVHT_TOLEFT = (64),
-    LVHT_TORIGHT = (32),
-    LVCF_FMT = (1),
-    LVCF_SUBITEM = (8),
-    LVCF_TEXT = (4),
-    LVCF_WIDTH = (2),
-    LVCFMT_CENTER = (2),
-    LVCFMT_LEFT = (0),
-    LVCFMT_RIGHT = (1),
-    LVIR_BOUNDS = (0),
-    LVIR_ICON = (1),
-    LVIR_LABEL = (2),
-    LVIR_SELECTBOUNDS = (3),
-    LVA_ALIGNLEFT = (1),
-    LVA_ALIGNTOP = (2),
-    LVA_DEFAULT = (0),
-    LVA_SNAPTOGRID = (5),
-    LVSCW_AUTOSIZE = -((1)),
-    LVSCW_AUTOSIZE_USEHEADER = -((2)),
-    TVS_DISABLEDRAGDROP = (16),
-    TVS_EDITLABELS = (8),
-    TVS_HASBUTTONS = (1),
-    TVS_HASLINES = (2),
-    TVS_LINESATROOT = (4),
-    TVS_SHOWSELALWAYS = (32),
-    TVIS_BOLD = (16),
-    TVIS_CUT = (4),
-    TVIS_DROPHILITED = (8),
-    TVIS_EXPANDED = (32),
-    TVIS_EXPANDEDONCE = (64),
-    TVIS_FOCUSED = (1),
-    TVIS_OVERLAYMASK = (3840),
-    TVIS_SELECTED = (2),
-    TVIS_STATEIMAGEMASK = (61440),
-    TVIS_USERMASK = (61440),
-    TVIF_CHILDREN = (64),
-    TVIF_HANDLE = (16),
-    TVIF_IMAGE = (2),
-    TVIF_PARAM = (4),
-    TVIF_SELECTEDIMAGE = (32),
-    TVIF_STATE = (8),
-    TVIF_TEXT = (1),
-    I_CHILDRENCALLBACK = -((1)),
-    I_IMAGECALLBACK = -((1)),
-}
-
-struct TREEITEM
-{
-}
-
-alias TREEITEM* HTREEITEM;
-alias TREEITEM TTREEITEM;
-alias TREEITEM* PTREEITEM;
-enum : DWORD {
-    TVI_ROOT = (0xFFFF0000),
-    TVI_FIRST = (0xFFFF0001),
-    TVI_LAST = (0xFFFF0002),
-    TVI_SORT = (0xFFFF0003),
-    TVHT_ABOVE = (256),
-    TVHT_BELOW = (512),
-    TVHT_NOWHERE = (1),
-    TVHT_ONITEM = (70),
-    TVHT_ONITEMBUTTON = (16),
-    TVHT_ONITEMICON = (2),
-    TVHT_ONITEMINDENT = (8),
-    TVHT_ONITEMLABEL = (4),
-    TVHT_ONITEMRIGHT = (32),
-    TVHT_ONITEMSTATEICON = (64),
-    TVHT_TOLEFT = (2048),
-    TVHT_TORIGHT = (1024),
-    TVE_COLLAPSE = (1),
-    TVE_COLLAPSERESET = (32768),
-    TVE_EXPAND = (2),
-    TVE_TOGGLE = (3),
-    TVSIL_NORMAL = (0),
-    TVSIL_STATE = (2),
-    TVGN_CARET = (9),
-    TVGN_CHILD = (4),
-    TVGN_DROPHILITE = (8),
-    TVGN_FIRSTVISIBLE = (5),
-    TVGN_NEXT = (1),
-    TVGN_NEXTVISIBLE = (6),
-    TVGN_PARENT = (3),
-    TVGN_PREVIOUS = (2),
-    TVGN_PREVIOUSVISIBLE = (7),
-    TVGN_ROOT = (0),
-    TVC_BYKEYBOARD = (2),
-    TVC_BYMOUSE = (1),
-    TVC_UNKNOWN = (0),
-    TCS_BUTTONS = (256),
-    TCS_FIXEDWIDTH = (1024),
-    TCS_FOCUSNEVER = (32768),
-    TCS_FOCUSONBUTTONDOWN = (4096),
-    TCS_FORCEICONLEFT = (16),
-    TCS_FORCELABELLEFT = (32),
-    TCS_MULTILINE = (512),
-    TCS_OWNERDRAWFIXED = (8192),
-    TCS_RAGGEDRIGHT = (2048),
-    TCS_RIGHTJUSTIFY = (0),
-    TCS_SINGLELINE = (0),
-    TCS_TABS = (0),
-    TCS_TOOLTIPS = (16384),
-    TCIF_TEXT = (1),
-    TCIF_IMAGE = (2),
-    TCIF_PARAM = (8),
-    TCIF_RTLREADING = (4),
-    TCHT_NOWHERE = (1),
-    TCHT_ONITEM = (6),
-    TCHT_ONITEMICON = (2),
-    TCHT_ONITEMLABEL = (4),
-    ACS_AUTOPLAY = (4),
-    ACS_CENTER = (1),
-    ACS_TRANSPARENT = (2),
-    DIALOPTION_BILLING = (64),
-    DIALOPTION_QUIET = (128),
-    DIALOPTION_DIALTONE = (256),
-    MDMVOLFLAG_LOW = (1),
-    MDMVOLFLAG_MEDIUM = (2),
-    MDMVOLFLAG_HIGH = (4),
-    MDMVOL_LOW = (0),
-    MDMVOL_MEDIUM = (1),
-    MDMVOL_HIGH = (2),
-    MDMSPKRFLAG_OFF = (1),
-    MDMSPKRFLAG_DIAL = (2),
-    MDMSPKRFLAG_ON = (4),
-    MDMSPKRFLAG_CALLSETUP = (8),
-    MDMSPKR_OFF = (0),
-    MDMSPKR_DIAL = (1),
-    MDMSPKR_ON = (2),
-    MDMSPKR_CALLSETUP = (3),
-    MDM_BLIND_DIAL = (512),
-    MDM_CCITT_OVERRIDE = (64),
-    MDM_CELLULAR = (8),
-    MDM_COMPRESSION = (1),
-    MDM_ERROR_CONTROL = (2),
-    MDM_FLOWCONTROL_HARD = (16),
-    MDM_FLOWCONTROL_SOFT = (32),
-    MDM_FORCED_EC = (4),
-    MDM_SPEED_ADJUST = (128),
-    MDM_TONE_DIAL = (256),
-    MDM_V23_OVERRIDE = (1024),
-    LANG_BULGARIAN = (2),
-    LANG_CHINESE = (4),
-    LANG_CROATIAN = (26),
-    LANG_CZECH = (5),
-    LANG_DANISH = (6),
-    LANG_DUTCH = (19),
-    LANG_ENGLISH = (9),
-    LANG_FINNISH = (11),
-    LANG_FRENCH = (12),
-    LANG_GERMAN = (7),
-    LANG_GREEK = (8),
-    LANG_HUNGARIAN = (14),
-    LANG_ICELANDIC = (15),
-    LANG_ITALIAN = (16),
-    LANG_JAPANESE = (17),
-    LANG_KOREAN = (18),
-    LANG_NEUTRAL = (0),
-    LANG_NORWEGIAN = (20),
-    LANG_POLISH = (21),
-    LANG_PORTUGUESE = (22),
-    LANG_ROMANIAN = (24),
-    LANG_RUSSIAN = (25),
-    LANG_SLOVAK = (27),
-    LANG_SLOVENIAN = (36),
-    LANG_SPANISH = (10),
-    LANG_SWEDISH = (29),
-    LANG_TURKISH = (31),
-    SUBLANG_CHINESE_SIMPLIFIED = (2),
-    SUBLANG_CHINESE_TRADITIONAL = (1),
-    SUBLANG_CHINESE_HONGKONG = (3),
-    SUBLANG_CHINESE_SINGAPORE = (4),
-    SUBLANG_DEFAULT = (1),
-    SUBLANG_DUTCH = (1),
-    SUBLANG_DUTCH_BELGIAN = (2),
-    SUBLANG_ENGLISH_AUS = (3),
-    SUBLANG_ENGLISH_CAN = (4),
-    SUBLANG_ENGLISH_EIRE = (6),
-    SUBLANG_ENGLISH_NZ = (5),
-    SUBLANG_ENGLISH_UK = (2),
-    SUBLANG_ENGLISH_US = (1),
-    SUBLANG_FRENCH = (1),
-    SUBLANG_FRENCH_BELGIAN = (2),
-    SUBLANG_FRENCH_CANADIAN = (3),
-    SUBLANG_FRENCH_SWISS = (4),
-    SUBLANG_GERMAN = (1),
-    SUBLANG_GERMAN_AUSTRIAN = (3),
-    SUBLANG_GERMAN_SWISS = (2),
-    SUBLANG_ITALIAN = (1),
-    SUBLANG_ITALIAN_SWISS = (2),
-    SUBLANG_NEUTRAL = (0),
-    SUBLANG_NORWEGIAN_BOKMAL = (1),
-    SUBLANG_NORWEGIAN_NYNORSK = (2),
-    SUBLANG_PORTUGUESE = (2),
-    SUBLANG_PORTUGUESE_BRAZILIAN = (1),
-    SUBLANG_SPANISH = (1),
-    SUBLANG_SPANISH_MEXICAN = (2),
-    SUBLANG_SPANISH_MODERN = (3),
-    SUBLANG_SYS_DEFAULT = (2),
-    NLS_VALID_LOCALE_MASK = (1048575),
-    SORT_DEFAULT = (0),
-    SORT_JAPANESE_XJIS = (0),
-    SORT_JAPANESE_UNICODE = (1),
-    SORT_CHINESE_BIG5 = (0),
-    SORT_CHINESE_UNICODE = (1),
-    SORT_KOREAN_KSC = (0),
-    SORT_KOREAN_UNICODE = (1),
-    PROCESSOR_INTEL_386 = (386),
-    PROCESSOR_INTEL_486 = (486),
-    PROCESSOR_INTEL_PENTIUM = (586),
-    PROCESSOR_MIPS_R4000 = (4000),
-    PROCESSOR_ALPHA_21064 = (21064),
-    COMPRESSION_FORMAT_NONE = (0),
-    COMPRESSION_FORMAT_DEFAULT = (1),
-    COMPRESSION_FORMAT_LZNT1 = (2),
-    TAPE_DRIVE_COMPRESSION = (131072),
-    TAPE_DRIVE_ECC = (65536),
-    TAPE_DRIVE_ERASE_BOP_ONLY = (64),
-    TAPE_DRIVE_ERASE_LONG = (32),
-    TAPE_DRIVE_ERASE_IMMEDIATE = (128),
-    TAPE_DRIVE_ERASE_SHORT = (16),
-    TAPE_DRIVE_FIXED = (1),
-    TAPE_DRIVE_FIXED_BLOCK = (1024),
-    TAPE_DRIVE_INITIATOR = (4),
-    TAPE_DRIVE_PADDING = (262144),
-    TAPE_DRIVE_GET_ABSOLUTE_BLK = (1048576),
-    TAPE_DRIVE_GET_LOGICAL_BLK = (2097152),
-    TAPE_DRIVE_REPORT_SMKS = (524288),
-    TAPE_DRIVE_SELECT = (2),
-    TAPE_DRIVE_SET_EOT_WZ_SIZE = (4194304),
-    TAPE_DRIVE_TAPE_CAPACITY = (256),
-    TAPE_DRIVE_TAPE_REMAINING = (512),
-    TAPE_DRIVE_VARIABLE_BLOCK = (2048),
-    TAPE_DRIVE_WRITE_PROTECT = (4096),
-    TAPE_DRIVE_ABS_BLK_IMMED = -((2147475456)),
-    TAPE_DRIVE_ABSOLUTE_BLK = -((2147479552)),
-    TAPE_DRIVE_END_OF_DATA = -((2147418112)),
-    TAPE_DRIVE_FILEMARKS = -((2147221504)),
-    TAPE_DRIVE_LOAD_UNLOAD = -((2147483647)),
-    TAPE_DRIVE_LOAD_UNLD_IMMED = -((2147483616)),
-    TAPE_DRIVE_LOCK_UNLOCK = -((2147483644)),
-    TAPE_DRIVE_LOCK_UNLK_IMMED = -((2147483520)),
-    TAPE_DRIVE_LOG_BLK_IMMED = -((2147450880)),
-    TAPE_DRIVE_LOGICAL_BLK = -((2147467264)),
-    TAPE_DRIVE_RELATIVE_BLKS = -((2147352576)),
-    TAPE_DRIVE_REVERSE_POSITION = -((2143289344)),
-    TAPE_DRIVE_REWIND_IMMEDIATE = -((2147483640)),
-    TAPE_DRIVE_SEQUENTIAL_FMKS = -((2146959360)),
-    TAPE_DRIVE_SEQUENTIAL_SMKS = -((2145386496)),
-    TAPE_DRIVE_SET_BLOCK_SIZE = -((2147483632)),
-    TAPE_DRIVE_SET_COMPRESSION = -((2147483136)),
-    TAPE_DRIVE_SET_ECC = -((2147483392)),
-    TAPE_DRIVE_SET_PADDING = -((2147482624)),
-    TAPE_DRIVE_SET_REPORT_SMKS = -((2147481600)),
-    TAPE_DRIVE_SETMARKS = -((2146435072)),
-    TAPE_DRIVE_SPACE_IMMEDIATE = -((2139095040)),
-    TAPE_DRIVE_TENSION = -((2147483646)),
-    TAPE_DRIVE_TENSION_IMMED = -((2147483584)),
-    TAPE_DRIVE_WRITE_FILEMARKS = -((2113929216)),
-    TAPE_DRIVE_WRITE_LONG_FMKS = -((2013265920)),
-    TAPE_DRIVE_WRITE_MARK_IMMED = -((1879048192)),
-    TAPE_DRIVE_WRITE_SETMARKS = -((2130706432)),
-    TAPE_DRIVE_WRITE_SHORT_FMKS = -((2080374784)),
-    STANDARD_RIGHTS_REQUIRED = (0xf0000),
-    STANDARD_RIGHTS_WRITE = (0x20000),
-    STANDARD_RIGHTS_READ = (0x20000),
-    STANDARD_RIGHTS_EXECUTE = (0x20000),
-    STANDARD_RIGHTS_ALL = (0x1f0000),
-    SPECIFIC_RIGHTS_ALL = (0xffff),
-    MAXIMUM_ALLOWED = (0x2000000),
-    GENERIC_ALL = (0x10000000),
-    SECURITY_NULL_RID = (0),
-    SECURITY_WORLD_RID = (0),
-    SECURITY_LOCAL_RID = (0),
-    SECURITY_CREATOR_OWNER_RID = (0),
-    SECURITY_CREATOR_GROUP_RID = (0x1),
-    SECURITY_DIALUP_RID = (0x1),
-    SECURITY_NETWORK_RID = (0x2),
-    SECURITY_BATCH_RID = (0x3),
-    SECURITY_INTERACTIVE_RID = (0x4),
-    SECURITY_LOGON_IDS_RID = (0x5),
-    SECURITY_LOGON_IDS_RID_COUNT = (0x3),
-    SECURITY_SERVICE_RID = (0x6),
-    SECURITY_LOCAL_SYSTEM_RID = (0x12),
-    SECURITY_BUILTIN_DOMAIN_RID = (0x20),
-    DOMAIN_USER_RID_ADMIN = (0x1f4),
-    DOMAIN_USER_RID_GUEST = (0x1f5),
-    DOMAIN_GROUP_RID_ADMINS = (0x200),
-    DOMAIN_GROUP_RID_USERS = (0x201),
-    DOMAIN_ALIAS_RID_ADMINS = (0x220),
-    DOMAIN_ALIAS_RID_USERS = (0x221),
-    DOMAIN_ALIAS_RID_GUESTS = (0x222),
-    DOMAIN_ALIAS_RID_POWER_USERS = (0x223),
-    DOMAIN_ALIAS_RID_ACCOUNT_OPS = (0x224),
-    DOMAIN_ALIAS_RID_SYSTEM_OPS = (0x225),
-    DOMAIN_ALIAS_RID_PRINT_OPS = (0x226),
-    DOMAIN_ALIAS_RID_BACKUP_OPS = (0x227),
-    DOMAIN_ALIAS_RID_REPLICATOR = (0x228),
-    SE_GROUP_MANDATORY = (0x1),
-    SE_GROUP_ENABLED_BY_DEFAULT = (0x2),
-    SE_GROUP_ENABLED = (0x4),
-    SE_GROUP_OWNER = (0x8),
-    SE_GROUP_LOGON_ID = (0xc0000000),
-    ACL_REVISION = (2),
-    ACCESS_ALLOWED_ACE_TYPE = (0x0),
-    ACCESS_DENIED_ACE_TYPE = (0x1),
-    SYSTEM_AUDIT_ACE_TYPE = (0x2),
-    SYSTEM_ALARM_ACE_TYPE = (0x3),
-    OBJECT_INHERIT_ACE = (0x1),
-    CONTAINER_INHERIT_ACE = (0x2),
-    NO_PROPAGATE_INHERIT_ACE = (0x4),
-    INHERIT_ONLY_ACE = (0x8),
-    SUCCESSFUL_ACCESS_ACE_FLAG = (0x40),
-    FAILED_ACCESS_ACE_FLAG = (0x80),
-    SECURITY_DESCRIPTOR_MIN_LENGTH = (20),
-    SE_OWNER_DEFAULTED = (1),
-    SE_GROUP_DEFAULTED = (2),
-    SE_DACL_PRESENT = (4),
-    SE_DACL_DEFAULTED = (8),
-    SE_SACL_PRESENT = (16),
-    SE_SACL_DEFAULTED = (32),
-    SE_SELF_RELATIVE = (32768),
-    SE_PRIVILEGE_ENABLED_BY_DEFAULT = (0x1),
-    SE_PRIVILEGE_ENABLED = (0x2),
-    SE_PRIVILEGE_USED_FOR_ACCESS = (0x80000000),
-    PRIVILEGE_SET_ALL_NECESSARY = (0x1),
-    OFN_ALLOWMULTISELECT = (0x200),
-    OFN_CREATEPROMPT = (0x2000),
-    OFN_ENABLEHOOK = (0x20),
-    OFN_ENABLETEMPLATE = (0x40),
-    OFN_ENABLETEMPLATEHANDLE = (0x80),
-    OFN_EXPLORER = (0x80000),
-    OFN_EXTENSIONDIFFERENT = (0x400),
-    OFN_FILEMUSTEXIST = (0x1000),
-    OFN_HIDEREADONLY = (0x4),
-    OFN_LONGNAMES = (0x200000),
-    OFN_NOCHANGEDIR = (0x8),
-    OFN_NODEREFERENCELINKS = (0x100000),
-    OFN_NOLONGNAMES = (0x40000),
-    OFN_NONETWORKBUTTON = (0x20000),
-    OFN_NOREADONLYRETURN = (0x8000),
-    OFN_NOTESTFILECREATE = (0x10000),
-    OFN_NOVALIDATE = (0x100),
-    OFN_OVERWRITEPROMPT = (0x2),
-    OFN_PATHMUSTEXIST = (0x800),
-    OFN_READONLY = (0x1),
-    OFN_SHAREAWARE = (0x4000),
-    OFN_SHOWHELP = (0x10),
-    OFN_SHAREFALLTHROUGH = (0x2),
-    OFN_SHARENOWARN = (0x1),
-    OFN_SHAREWARN = (0),
-    CDN_INITDONE = (0xfffffda7),
-    CDN_SELCHANGE = (0xfffffda6),
-    CDN_FOLDERCHANGE = (0xfffffda5),
-    CDN_SHAREVIOLATION = (0xfffffda4),
-    CDN_HELP = (0xfffffda3),
-    CDN_FILEOK = (0xfffffda2),
-    CDN_TYPECHANGE = (0xfffffda1),
-    CDM_GETFILEPATH = (0x465),
-    CDM_GETFOLDERIDLIST = (0x467),
-    CDM_GETFOLDERPATH = (0x466),
-    CDM_GETSPEC = (0x464),
-    CDM_HIDECONTROL = (0x469),
-    CDM_SETCONTROLTEXT = (0x468),
-    CDM_SETDEFEXT = (0x46a),
-    CC_ENABLEHOOK = (0x10),
-    CC_ENABLETEMPLATE = (0x20),
-    CC_ENABLETEMPLATEHANDLE = (0x40),
-    CC_FULLOPEN = (0x2),
-    CC_PREVENTFULLOPEN = (0x4),
-    CC_RGBINIT = (0x1),
-    CC_SHOWHELP = (0x8),
-    CC_SOLIDCOLOR = (0x80),
-    FR_DIALOGTERM = (0x40),
-    FR_DOWN = (0x1),
-    FR_ENABLEHOOK = (0x100),
-    FR_ENABLETEMPLATE = (0x200),
-    FR_ENABLETEMPLATEHANDLE = (0x2000),
-    FR_FINDNEXT = (0x8),
-    FR_HIDEUPDOWN = (0x4000),
-    FR_HIDEMATCHCASE = (0x8000),
-    FR_HIDEWHOLEWORD = (0x10000),
-    FR_MATCHCASE = (0x4),
-    FR_NOMATCHCASE = (0x800),
-    FR_NOUPDOWN = (0x400),
-    FR_NOWHOLEWORD = (0x1000),
-    FR_REPLACE = (0x10),
-    FR_REPLACEALL = (0x20),
-    FR_SHOWHELP = (0x80),
-    FR_WHOLEWORD = (0x2),
-    CF_APPLY = (0x200),
-    CF_ANSIONLY = (0x400),
-    CF_BOTH = (0x3),
-    CF_TTONLY = (0x40000),
-    CF_EFFECTS = (0x100),
-    CF_ENABLEHOOK = (0x8),
-    CF_ENABLETEMPLATE = (0x10),
-    CF_ENABLETEMPLATEHANDLE = (0x20),
-    CF_FIXEDPITCHONLY = (0x4000),
-    CF_FORCEFONTEXIST = (0x10000),
-    CF_INITTOLOGFONTSTRUCT = (0x40),
-    CF_LIMITSIZE = (0x2000),
-    CF_NOOEMFONTS = (0x800),
-    CF_NOFACESEL = (0x80000),
-    CF_NOSCRIPTSEL = (0x800000),
-    CF_NOSTYLESEL = (0x100000),
-    CF_NOSIZESEL = (0x200000),
-    CF_NOSIMULATIONS = (0x1000),
-    CF_NOVECTORFONTS = (0x800),
-    CF_NOVERTFONTS = (0x1000000),
-    CF_PRINTERFONTS = (0x2),
-    CF_SCALABLEONLY = (0x20000),
-    CF_SCREENFONTS = (0x1),
-    CF_SCRIPTSONLY = (0x400),
-    CF_SELECTSCRIPT = (0x400000),
-    CF_SHOWHELP = (0x4),
-    CF_USESTYLE = (0x80),
-    CF_WYSIWYG = (0x8000),
-    BOLD_FONTTYPE = (0x100),
-    ITALIC_FONTTYPE = (0x200),
-    PRINTER_FONTTYPE = (0x4000),
-    REGULAR_FONTTYPE = (0x400),
-    SCREEN_FONTTYPE = (0x2000),
-    SIMULATED_FONTTYPE = (0x8000),
-}
-const {
-char* COLOROKSTRINGW = ("commdlg_ColorOK");
-char* FILEOKSTRINGW = ("commdlg_FileNameOK");
-char* FINDMSGSTRINGW = ("commdlg_FindReplace");
-char* HELPMSGSTRINGW = ("commdlg_help");
-char* LBSELCHSTRINGW = ("commdlg_LBSelChangedNotify");
-char* SETRGBSTRINGW = ("commdlg_SetRGBColor");
-char* SHAREVISTRINGW = ("commdlg_ShareViolation");
-char* COLOROKSTRINGA = ("commdlg_ColorOK");
-char* FILEOKSTRINGA = ("commdlg_FileNameOK");
-char* FINDMSGSTRINGA = ("commdlg_FindReplace");
-char* HELPMSGSTRINGA = ("commdlg_help");
-char* LBSELCHSTRINGA = ("commdlg_LBSelChangedNotify");
-char* SETRGBSTRINGA = ("commdlg_SetRGBColor");
-char* SHAREVISTRINGA = ("commdlg_ShareViolation");
-char* COLOROKSTRING = (COLOROKSTRINGA);
-char* FILEOKSTRING = (FILEOKSTRINGA);
-char* FINDMSGSTRING = (FINDMSGSTRINGA);
-char* HELPMSGSTRING = (HELPMSGSTRINGA);
-char* LBSELCHSTRING = (LBSELCHSTRINGA);
-char* SETRGBSTRING = (SETRGBSTRINGA);
-char* SHAREVISTRING = (SHAREVISTRINGA);
-}
-
-const {
-HWND HWND_DESKTOP = cast(HWND) 0;
-HWND HWND_BOTTOM = cast(HWND) 1;
-HWND HWND_NOTOPMOST = cast(HWND) -2;
-HWND HWND_TOP = cast(HWND) 0;
-HWND HWND_TOPMOST = cast(HWND) -1;
-HWND HWND_BROADCAST = cast(HWND) 0xFFFF;
-}
-
-enum : DWORD {
-    CD_LBSELCHANGE = (0),
-    CD_LBSELADD = (2),
-    CD_LBSELSUB = (1),
-    CD_LBSELNOITEMS = -((1)),
-    DN_DEFAULTPRN = (1),
-    PD_ALLPAGES = (0),
-    PD_COLLATE = (16),
-    PD_DISABLEPRINTTOFILE = (524288),
-    PD_ENABLEPRINTHOOK = (4096),
-    PD_ENABLEPRINTTEMPLATE = (16384),
-    PD_ENABLEPRINTTEMPLATEHANDLE = (65536),
-    PD_ENABLESETUPHOOK = (8192),
-    PD_ENABLESETUPTEMPLATE = (32768),
-    PD_ENABLESETUPTEMPLATEHANDLE = (131072),
-    PD_HIDEPRINTTOFILE = (1048576),
-    PD_NOPAGENUMS = (8),
-    PD_NOSELECTION = (4),
-    PD_NOWARNING = (128),
-    PD_PAGENUMS = (2),
-    PD_PRINTSETUP = (64),
-    PD_PRINTTOFILE = (32),
-    PD_RETURNDC = (256),
-    PD_RETURNDEFAULT = (1024),
-    PD_RETURNIC = (512),
-    PD_SELECTION = (1),
-    PD_SHOWHELP = (2048),
-    PD_USEDEVMODECOPIES = (262144),
-    PD_USEDEVMODECOPIESANDCOLLATE = (262144),
-    PSD_DEFAULTMINMARGINS = (0),
-    PSD_DISABLEMARGINS = (16),
-    PSD_DISABLEORIENTATION = (256),
-    PSD_DISABLEPAGEPAINTING = (524288),
-    PSD_DISABLEPAPER = (512),
-    PSD_DISABLEPRINTER = (32),
-    PSD_ENABLEPAGEPAINTHOOK = (262144),
-    PSD_ENABLEPAGESETUPHOOK = (8192),
-    PSD_ENABLEPAGESETUPTEMPLATE = (32768),
-    PSD_ENABLEPAGESETUPTEMPLATEHANDLE = (131072),
-    PSD_INHUNDREDTHSOFMILLIMETERS = (8),
-    PSD_INTHOUSANDTHSOFINCHES = (4),
-    PSD_INWININIINTLMEASURE = (0),
-    PSD_MARGINS = (2),
-    PSD_MINMARGINS = (1),
-    PSD_NOWARNING = (128),
-    PSD_RETURNDEFAULT = (1024),
-    PSD_SHOWHELP = (2048),
-    SW_OTHERUNZOOM = (4),
-    SW_OTHERZOOM = (2),
-    SW_PARENTCLOSING = (1),
-    SW_PARENTOPENING = (3),
-    VK_LBUTTON = (1),
-    VK_RBUTTON = (2),
-    VK_CANCEL = (3),
-    VK_MBUTTON = (4),
-    VK_BACK = (8),
-    VK_TAB = (9),
-    VK_CLEAR = (12),
-    VK_RETURN = (13),
-    VK_SHIFT = (16),
-    VK_CONTROL = (17),
-    VK_MENU = (18),
-    VK_PAUSE = (19),
-    VK_CAPITAL = (20),
-    VK_ESCAPE = (27),
-    VK_SPACE = (32),
-    VK_PRIOR = (33),
-    VK_NEXT = (34),
-    VK_END = (35),
-    VK_HOME = (36),
-    VK_LEFT = (37),
-    VK_UP = (38),
-    VK_RIGHT = (39),
-    VK_DOWN = (40),
-    VK_SELECT = (41),
-    VK_PRINT = (42),
-    VK_EXECUTE = (43),
-    VK_SNAPSHOT = (44),
-    VK_INSERT = (45),
-    VK_DELETE = (46),
-    VK_HELP = (47),
-    VK_0 = (48),
-    VK_1 = (49),
-    VK_2 = (50),
-    VK_3 = (51),
-    VK_4 = (52),
-    VK_5 = (53),
-    VK_6 = (54),
-    VK_7 = (55),
-    VK_8 = (56),
-    VK_9 = (57),
-    VK_A = (65),
-    VK_B = (66),
-    VK_C = (67),
-    VK_D = (68),
-    VK_E = (69),
-    VK_F = (70),
-    VK_G = (71),
-    VK_H = (72),
-    VK_I = (73),
-    VK_J = (74),
-    VK_K = (75),
-    VK_L = (76),
-    VK_M = (77),
-    VK_N = (78),
-    VK_O = (79),
-    VK_P = (80),
-    VK_Q = (81),
-    VK_R = (82),
-    VK_S = (83),
-    VK_T = (84),
-    VK_U = (85),
-    VK_V = (86),
-    VK_W = (87),
-    VK_X = (88),
-    VK_Y = (89),
-    VK_Z = (90),
-    VK_NUMPAD0 = (96),
-    VK_NUMPAD1 = (97),
-    VK_NUMPAD2 = (98),
-    VK_NUMPAD3 = (99),
-    VK_NUMPAD4 = (100),
-    VK_NUMPAD5 = (101),
-    VK_NUMPAD6 = (102),
-    VK_NUMPAD7 = (103),
-    VK_NUMPAD8 = (104),
-    VK_NUMPAD9 = (105),
-    VK_MULTIPLY = (106),
-    VK_ADD = (107),
-    VK_SEPARATOR = (108),
-    VK_SUBTRACT = (109),
-    VK_DECIMAL = (110),
-    VK_DIVIDE = (111),
-    VK_F1 = (112),
-    VK_F2 = (113),
-    VK_F3 = (114),
-    VK_F4 = (115),
-    VK_F5 = (116),
-    VK_F6 = (117),
-    VK_F7 = (118),
-    VK_F8 = (119),
-    VK_F9 = (120),
-    VK_F10 = (121),
-    VK_F11 = (122),
-    VK_F12 = (123),
-    VK_F13 = (124),
-    VK_F14 = (125),
-    VK_F15 = (126),
-    VK_F16 = (127),
-    VK_F17 = (128),
-    VK_F18 = (129),
-    VK_F19 = (130),
-    VK_F20 = (131),
-    VK_F21 = (132),
-    VK_F22 = (133),
-    VK_F23 = (134),
-    VK_F24 = (135),
-    VK_NUMLOCK = (144),
-    VK_SCROLL = (145),
-    VK_LSHIFT = (160),
-    VK_LCONTROL = (162),
-    VK_LMENU = (164),
-    VK_RSHIFT = (161),
-    VK_RCONTROL = (163),
-    VK_RMENU = (165),
-    VK_PROCESSKEY = (229),
-    KF_ALTDOWN = (8192),
-    KF_DLGMODE = (2048),
-    KF_EXTENDED = (256),
-    KF_MENUMODE = (4096),
-    KF_REPEAT = (16384),
-    KF_UP = (32768),
-    KL_NAMELENGTH = (9),
-    WA_ACTIVE = (1),
-    WA_CLICKACTIVE = (2),
-    WA_INACTIVE = (0),
-    PWR_CRITICALRESUME = (3),
-    PWR_SUSPENDREQUEST = (1),
-    PWR_SUSPENDRESUME = (2),
-    PWR_FAIL = -((1)),
-    PWR_OK = (1),
-    NF_QUERY = (3),
-    NF_REQUERY = (4),
-    NFR_ANSI = (1),
-    NFR_UNICODE = (2),
-    WMSZ_BOTTOM = (6),
-    WMSZ_BOTTOMLEFT = (7),
-    WMSZ_BOTTOMRIGHT = (8),
-    WMSZ_LEFT = (1),
-    WMSZ_RIGHT = (2),
-    WMSZ_TOP = (3),
-    WMSZ_TOPLEFT = (4),
-    WMSZ_TOPRIGHT = (5),
-    MA_ACTIVATE = (1),
-    MA_ACTIVATEANDEAT = (2),
-    MA_NOACTIVATE = (3),
-    MA_NOACTIVATEANDEAT = (4),
-    SIZE_MAXHIDE = (4),
-    SIZE_MAXIMIZED = (2),
-    SIZE_MAXSHOW = (3),
-    SIZE_MINIMIZED = (1),
-    SIZE_RESTORED = (0),
-    WVR_ALIGNTOP = (16),
-    WVR_ALIGNLEFT = (32),
-    WVR_ALIGNBOTTOM = (64),
-    WVR_ALIGNRIGHT = (128),
-    WVR_HREDRAW = (256),
-    WVR_VREDRAW = (512),
-    WVR_REDRAW = (768),
-    WVR_VALIDRECTS = (1024),
-    HTBOTTOM = (15),
-    HTBOTTOMLEFT = (16),
-    HTBOTTOMRIGHT = (17),
-    HTCAPTION = (2),
-    HTCLIENT = (1),
-    HTERROR = -((2)),
-    HTGROWBOX = (4),
-    HTHSCROLL = (6),
-    HTLEFT = (10),
-    HTMENU = (5),
-    HTNOWHERE = (0),
-    HTREDUCE = (8),
-    HTRIGHT = (11),
-    HTSIZE = (4),
-    HTSYSMENU = (3),
-    HTTOP = (12),
-    HTTOPLEFT = (13),
-    HTTOPRIGHT = (14),
-    HTTRANSPARENT = -((1)),
-    HTVSCROLL = (7),
-    HTZOOM = (9),
-    MK_CONTROL = (8),
-    MK_LBUTTON = (1),
-    MK_MBUTTON = (16),
-    MK_RBUTTON = (2),
-    MK_SHIFT = (4),
-    CS_BYTEALIGNCLIENT = (4096),
-    CS_BYTEALIGNWINDOW = (8192),
-    CS_CLASSDC = (64),
-    CS_DBLCLKS = (8),
-    CS_GLOBALCLASS = (16384),
-    CS_HREDRAW = (2),
-    CS_KEYCVTWINDOW = (4),
-    CS_NOCLOSE = (512),
-    CS_NOKEYCVT = (256),
-    CS_OWNDC = (32),
-    CS_PARENTDC = (128),
-    CS_SAVEBITS = (2048),
-    CS_VREDRAW = (1),
-    DLGWINDOWEXTRA = (30),
-    FALT = (16),
-    FCONTROL = (8),
-    FNOINVERT = (2),
-    FSHIFT = (4),
-    FVIRTKEY = (1),
-    MIIM_CHECKMARKS = (8),
-    MIIM_DATA = (32),
-    MIIM_ID = (2),
-    MIIM_STATE = (1),
-    MIIM_SUBMENU = (4),
-    MIIM_TYPE = (16),
-    MFT_BITMAP = (0x4),
-    MFT_MENUBARBREAK = (0x20),
-    MFT_MENUBREAK = (0x40),
-    MFT_OWNERDRAW = (0x100),
-    MFT_RADIOCHECK = (0x200),
-    MFT_RIGHTJUSTIFY = (0x4000),
-    MFT_SEPARATOR = (0x800),
-    MFT_STRING = (0),
-    MFS_CHECKED = (0x8),
-    MFS_DEFAULT = (0x1000),
-    MFS_DISABLED = (0x3),
-    MFS_ENABLED = (0),
-    MFS_GRAYED = (0x3),
-    MFS_HILITE = (0x80),
-    MFS_UNCHECKED = (0),
-    MFS_UNHILITE = (0),
-    SERKF_AVAILABLE = (2),
-    SERKF_INDICATOR = (4),
-    SERKF_SERIALKEYSON = (1),
-    FKF_AVAILABLE = (2),
-    FKF_CLICKON = (64),
-    FKF_FILTERKEYSON = (1),
-    FKF_HOTKEYACTIVE = (4),
-    FKF_HOTKEYSOUND = (16),
-    FKF_CONFIRMHOTKEY = (8),
-    FKF_INDICATOR = (32),
-    HELPINFO_MENUITEM = (2),
-    HELPINFO_WINDOW = (1),
-    PRF_CHECKVISIBLE = (0x1),
-    PRF_CHILDREN = (0x10),
-    PRF_CLIENT = (0x4),
-    PRF_ERASEBKGND = (0x8),
-    PRF_NONCLIENT = (0x2),
-    PRF_OWNED = (0x20),
-    SC_CLOSE = (61536),
-    SC___FILE__HELP = (61824),
-    SC_DEFAULT = (61792),
-    SC_HOTKEY = (61776),
-    SC_HSCROLL = (61568),
-    SC_KEYMENU = (61696),
-    SC_MAXIMIZE = (61488),
-    SC_ZOOM = (61488),
-    SC_MINIMIZE = (61472),
-    SC_ICON = (61472),
-    SC_MONITORPOWER = (61808),
-    SC_MOUSEMENU = (61584),
-    SC_MOVE = (61456),
-    SC_NEXTWINDOW = (61504),
-    SC_PREVWINDOW = (61520),
-    SC_RESTORE = (61728),
-    SC_SCREENSAVE = (61760),
-    SC_SIZE = (61440),
-    SC_TASKLIST = (61744),
-    SC_VSCROLL = (61552),
-    DC_HASDEFID = (21323),
-    DLGC_BUTTON = (8192),
-    DLGC_DEFPUSHBUTTON = (16),
-    DLGC_HASSETSEL = (8),
-    DLGC_RADIOBUTTON = (64),
-    DLGC_STATIC = (256),
-    DLGC_UNDEFPUSHBUTTON = (32),
-    DLGC_WANTALLKEYS = (4),
-    DLGC_WANTARROWS = (1),
-    DLGC_WANTCHARS = (128),
-    DLGC_WANTMESSAGE = (4),
-    DLGC_WANTTAB = (2),
-    EC_LEFTMARGIN = (1),
-    EC_RIGHTMARGIN = (2),
-    EC_USEFONTINFO = (65535),
-    LB_ERR = -((1)),
-    LB_ERRSPACE = -((2)),
-    LB_OKAY = (0),
-    CB_ERR = -((1)),
-    CB_ERRSPACE = -((2)),
-    IMC_GETCANDIDATEPOS = (7),
-    IMC_GETCOMPOSITIONFONT = (9),
-    IMC_GETCOMPOSITIONWINDOW = (11),
-    IMC_GETSTATUSWINDOWPOS = (15),
-    IMC_CLOSESTATUSWINDOW = (33),
-    IMC_OPENSTATUSWINDOW = (34),
-    IMC_SETCANDIDATEPOS = (8),
-    IMC_SETCOMPOSITIONFONT = (10),
-    IMC_SETCOMPOSITIONWINDOW = (12),
-    IMC_SETSTATUSWINDOWPOS = (16),
-    IMN_CHANGECANDIDATE = (3),
-    IMN_CLOSECANDIDATE = (4),
-    IMN_CLOSESTATUSWINDOW = (1),
-    IMN_GUIDELINE = (13),
-    IMN_OPENCANDIDATE = (5),
-    IMN_OPENSTATUSWINDOW = (2),
-    IMN_SETCANDIDATEPOS = (9),
-    IMN_SETCOMPOSITIONFONT = (10),
-    IMN_SETCOMPOSITIONWINDOW = (11),
-    IMN_SETCONVERSIONMODE = (6),
-    IMN_SETOPENSTATUS = (8),
-    IMN_SETSENTENCEMODE = (7),
-    IMN_SETSTATUSWINDOWPOS = (12),
-    IMN_PRIVATE = (14),
-    SKF_AUDIBLEFEEDBACK = (64),
-    SKF_AVAILABLE = (2),
-    SKF_CONFIRMHOTKEY = (8),
-    SKF_HOTKEYACTIVE = (4),
-    SKF_HOTKEYSOUND = (16),
-    SKF_INDICATOR = (32),
-    SKF_STICKYKEYSON = (1),
-    SKF_TRISTATE = (128),
-    SKF_TWOKEYSOFF = (256),
-    MKF_AVAILABLE = (2),
-    MKF_CONFIRMHOTKEY = (8),
-    MKF_HOTKEYACTIVE = (4),
-    MKF_HOTKEYSOUND = (16),
-    MKF_INDICATOR = (32),
-    MKF_MOUSEKEYSON = (1),
-    MKF_MODIFIERS = (64),
-    MKF_REPLACENUMBERS = (128),
-    SSF_AVAILABLE = (2),
-    SSF_SOUNDSENTRYON = (1),
-    SSTF_BORDER = (2),
-    SSTF_CHARS = (1),
-    SSTF_DISPLAY = (3),
-    SSTF_NONE = (0),
-    SSGF_DISPLAY = (3),
-    SSGF_NONE = (0),
-    SSWF_CUSTOM = (4),
-    SSWF_DISPLAY = (3),
-    SSWF_NONE = (0),
-    SSWF_TITLE = (1),
-    SSWF_WINDOW = (2),
-    ATF_ONOFFFEEDBACK = (2),
-    ATF_TIMEOUTON = (1),
-    HCF_AVAILABLE = (2),
-    HCF_CONFIRMHOTKEY = (8),
-    HCF_HIGHCONTRASTON = (1),
-    HCF_HOTKEYACTIVE = (4),
-    HCF_HOTKEYAVAILABLE = (64),
-    HCF_HOTKEYSOUND = (16),
-    HCF_INDICATOR = (32),
-    TKF_AVAILABLE = (2),
-    TKF_CONFIRMHOTKEY = (8),
-    TKF_HOTKEYACTIVE = (4),
-    TKF_HOTKEYSOUND = (16),
-    TKF_TOGGLEKEYSON = (1),
-    PP_DISPLAYERRORS = (1),
-    RESOURCEDISPLAYTYPE_DOMAIN = (1),
-    RESOURCEDISPLAYTYPE_FILE = (4),
-    RESOURCEDISPLAYTYPE_GENERIC = (0),
-    RESOURCEDISPLAYTYPE_GROUP = (5),
-    RESOURCEDISPLAYTYPE_SERVER = (2),
-    RESOURCEDISPLAYTYPE_SHARE = (3),
-    CAPSLOCK_ON = (128),
-    ENHANCED_KEY = (256),
-    LEFT_ALT_PRESSED = (2),
-    LEFT_CTRL_PRESSED = (8),
-    NUMLOCK_ON = (32),
-    RIGHT_ALT_PRESSED = (1),
-    RIGHT_CTRL_PRESSED = (4),
-    SCROLLLOCK_ON = (64),
-    SHIFT_PRESSED = (16),
-    FROM_LEFT_1ST_BUTTON_PRESSED = (1),
-    RIGHTMOST_BUTTON_PRESSED = (2),
-    FROM_LEFT_2ND_BUTTON_PRESSED = (4),
-    FROM_LEFT_3RD_BUTTON_PRESSED = (8),
-    FROM_LEFT_4TH_BUTTON_PRESSED = (16),
-    DOUBLE_CLICK = (2),
-    MOUSE_MOVED = (1),
-    KEY_EVENT = (1),
-    _MOUSE_EVENT = (2),
-    cMOUSE_EVENT = (2),
-    WINDOW_BUFFER_SIZE_EVENT = (4),
-    MENU_EVENT = (8),
-    FOCUS_EVENT = (16),
-    BI_RGB = (0),
-    BI_RLE8 = (1),
-    BI_RLE4 = (2),
-    BI_BITFIELDS = (3),
-    PFD_DRAW_TO_WINDOW = (0x4),
-    PFD_DRAW_TO_BITMAP = (0x8),
-    PFD_SUPPORT_GDI = (0x10),
-    PFD_SUPPORT_OPENGL = (0x20),
-    PFD_DOUBLEBUFFER = (0x1),
-    PFD_STEREO = (0x2),
-    PFD_DOUBLEBUFFER_DONTCARE = (0x40000000),
-    PFD_STEREO_DONTCARE = (0x80000000),
-    PFD_TYPE_RGBA = (0),
-    PFD_TYPE_COLORINDEX = (1),
-    PFD_MAIN_PLANE = (0),
-    PFD_OVERLAY_PLANE = (1),
-    PFD_UNDERLAY_PLANE = -((1)),
-    WGL_FONT_LINES = (0),
-    WGL_FONT_POLYGONS = (1),
-    PFD_GENERIC_FORMAT = (0x40),
-    PFD_NEED_PALETTE = (0x80),
-    PFD_NEED_SYSTEM_PALETTE = (0x100),
-    PFD_SWAP_COPY = (0x400),
-    PFD_SWAP_EXCHANGE = (0x200),
-    TMPF_FIXED_PITCH = (0x1),
-    TMPF_VECTOR = (0x2),
-    TMPF_TRUETYPE = (0x4),
-    TMPF_DEVICE = (0x8),
-    SE_ERR_SHARE = (26),
-    SE_ERR_ASSOCINCOMPLETE = (27),
-    SE_ERR_DDETIMEOUT = (28),
-    SE_ERR_DDEFAIL = (29),
-    SE_ERR_DDEBUSY = (30),
-    SE_ERR_NOASSOC = (31),
-    XCLASS_BOOL = (0x1000),
-    XCLASS_DATA = (0x2000),
-    XCLASS_FLAGS = (0x4000),
-    XCLASS_MASK = (0xfc00),
-    XCLASS_NOTIFICATION = (0x8000),
-    XTYPF_NOBLOCK = (0x0002),
-    XTYP_ADVDATA = (0x4010),
-    XTYP_ADVREQ = (0x2022),
-    XTYP_ADVSTART = (0x1030),
-    XTYP_ADVSTOP = (0x8040),
-    XTYP_CONNECT = (0x1062),
-    XTYP_CONNECT_CONFIRM = (0x8072),
-    XTYP_DISCONNECT = (0x80c2),
-    XTYP_EXECUTE = (0x4050),
-    XTYP_POKE = (0x4090),
-    XTYP_REQUEST = (0x20b0),
-    XTYP_WILDCONNECT = (0x20E2),
-    XTYP_REGISTER = (0x80A2),
-    XTYP_ERROR = (0x8002),
-    XTYP_XACT_COMPLETE = (0x8080),
-    XTYP_UNREGISTER = (0x80D2),
-    DMLERR_DLL_USAGE = (0x4004),
-    DMLERR_INVALIDPARAMETER = (0x4006),
-    DMLERR_NOTPROCESSED = (0x4009),
-    DMLERR_POSTMSG_FAILED = (0x400c),
-    DMLERR_SERVER_DIED = (0x400e),
-    DMLERR_SYS_ERROR = (0x400f),
-    DMLERR_BUSY = (0x4001),
-    DMLERR_DATAACKTIMEOUT = (0x4002),
-    DMLERR_ADVACKTIMEOUT = (0x4000),
-    DMLERR_DLL_NOT_INITIALIZED = (0x4003),
-    DMLERR_LOW_MEMORY = (0x4007),
-    DMLERR_MEMORY_ERROR = (0x4008),
-    DMLERR_POKEACKTIMEOUT = (0x400b),
-    DMLERR_NO_CONV_ESTABLISHED = (0x400a),
-    DMLERR_REENTRANCY = (0x400d),
-    DMLERR_UNFOUND_QUEUE_ID = (0x4011),
-    DMLERR_UNADVACKTIMEOUT = (0x4010),
-    DMLERR_EXECACKTIMEOUT = (0x4005),
-    DDE_FACK = (0x8000),
-    DDE_FNOTPROCESSED = (0x0000),
-    DNS_REGISTER = (0x0001),
-    DNS_UNREGISTER = (0x0002),
-    CP_WINANSI = (1004),
-    CP_WINUNICODE = (1200),
-    APPCLASS_STANDARD = (0x00000000),
-    BKMODE_LAST = (2),
-    CTLCOLOR_MSGBOX = (0),
-    CTLCOLOR_EDIT = (1),
-    CTLCOLOR_LISTBOX = (2),
-    CTLCOLOR_BTN = (3),
-    CTLCOLOR_DLG = (4),
-    CTLCOLOR_SCROLLBAR = (5),
-    CTLCOLOR_STATIC = (6),
-    CTLCOLOR_MAX = (7),
-    META_SETMAPMODE = (0x0103),
-    META_SETWINDOWORG = (0x020B),
-    META_SETWINDOWEXT = (0x020C),
-    POLYFILL_LAST = (2),
-    STATUS_WAIT_0 = (0x00000000),
-    STATUS_ABANDONED_WAIT_0 = (0x00000080),
-    STATUS_USER_APC = (0x000000C0),
-    STATUS_TIMEOUT = (0x00000102),
-    STATUS_PENDING = (0x00000103),
-    STATUS_GUARD_PAGE_VIOLATION = (0x80000001),
-    STATUS_DATATYPE_MISALIGNMENT = (0x80000002),
-    STATUS_BREAKPOINT = (0x80000003),
-    STATUS_SINGLE_STEP = (0x80000004),
-    STATUS_IN_PAGE_ERROR = (0xC0000006),
-    STATUS_INVALID_HANDLE = (0xC0000008),
-    STATUS_ILLEGAL_INSTRUCTION = (0xC000001D),
-    STATUS_NONCONTINUABLE_EXCEPTION = (0xC0000025),
-    STATUS_INVALID_DISPOSITION = (0xC0000026),
-    STATUS_ARRAY_BOUNDS_EXCEEDED = (0xC000008C),
-    STATUS_FLOAT_DENORMAL_OPERAND = (0xC000008D),
-    STATUS_FLOAT_DIVIDE_BY_ZERO = (0xC000008E),
-    STATUS_FLOAT_INEXACT_RESULT = (0xC000008F),
-    STATUS_FLOAT_INVALID_OPERATION = (0xC0000090),
-    STATUS_FLOAT_OVERFLOW = (0xC0000091),
-    STATUS_FLOAT_STACK_CHECK = (0xC0000092),
-    STATUS_FLOAT_UNDERFLOW = (0xC0000093),
-    STATUS_INTEGER_DIVIDE_BY_ZERO = (0xC0000094),
-    STATUS_INTEGER_OVERFLOW = (0xC0000095),
-    STATUS_PRIVILEGED_INSTRUCTION = (0xC0000096),
-    STATUS_STACK_OVERFLOW = (0xC00000FD),
-    STATUS_CONTROL_C_EXIT = (0xC000013A),
-    PROCESSOR_ARCHITECTURE_INTEL = (0),
-    PROCESSOR_ARCHITECTURE_MIPS = (1),
-    PROCESSOR_ARCHITECTURE_ALPHA = (2),
-    PROCESSOR_ARCHITECTURE_PPC = (3),
-    SIZEFULLSCREEN = (SIZE_MAXIMIZED),
-    SIZENORMAL = (SIZE_RESTORED),
-    SIZEICONIC = (SIZE_MINIMIZED),
-    SIZE_OF_80387_REGISTERS = (80),
-    __FILE___i386 = (0x10000),
-    __FILE___CONTROL = (__FILE___i386) | (1),
-    __FILE___INTEGER = (__FILE___i386) | (2),
-    __FILE___SEGMENTS = (__FILE___i386) | (4),
-    __FILE___FLOATING_POINT = (__FILE___i386) | (8),
-    __FILE___DEBUG_REGISTERS = (__FILE___i386) | (0x10),
-    __FILE___FULL = ((__FILE___CONTROL) | (__FILE___INTEGER)) | (__FILE___SEGMENTS),
-    FLAG_TRACE_BIT = (0x100),
-    __FILE___DEBUGGER = (__FILE___FULL) | (__FILE___FLOATING_POINT),
-    FILTER_TEMP_DUPLICATE_ACCOUNT = (0x0001),
-    FILTER_NORMAL_ACCOUNT = (0x0002),
-    FILTER_INTERDOMAIN_TRUST_ACCOUNT = (0x0008),
-    FILTER_WORKSTATION_TRUST_ACCOUNT = (0x0010),
-    FILTER_SERVER_TRUST_ACCOUNT = (0x0020),
-    LOGON32_LOGON_INTERACTIVE = (0x02),
-    LOGON32_LOGON_BATCH = (0x04),
-    LOGON32_LOGON_SERVICE = (0x05),
-    LOGON32_PROVIDER_DEFAULT = (0x00),
-    LOGON32_PROVIDER_WINNT35 = (0x01),
-    QID_SYNC = (0xFFFFFFFF),
-    IMAGE_DOS_SIGNATURE = (0x5a4d),
-    IMAGE_NT_SIGNATURE = (0x4550),
-    SEVERITY_SUCCESS = (0),
-    SEVERITY_ERROR = (1),
-    VT_EMPTY = (0),
-    VT_NULL = (1),
-    VT_I2 = (2),
-    VT_I4 = (3),
-    VT_R4 = (4),
-    VT_R8 = (5),
-    VT_BSTR = (8),
-    VT_ERROR = (10),
-    VT_BOOL = (11),
-    VT_UI1 = (17),
-    VT_BYREF = (0x4000),
-    VT_RESERVED = (0x8000),
-    FACILITY_WINDOWS = (8),
-    FACILITY_STORAGE = (3),
-    FACILITY_RPC = (1),
-    FACILITY_SSPI = (9),
-    FACILITY_WIN32 = (7),
-    FACILITY_CONTROL = (10),
-    FACILITY_NULL = (0),
-    FACILITY_INTERNET = (12),
-    FACILITY_ITF = (4),
-    FACILITY_DISPATCH = (2),
-    FACILITY_CERT = (11),
-    ACM_OPENW = (1127),
-    ACM_OPENA = (1124),
-    ACM_OPEN = (ACM_OPENA),
-    ACM_PLAY = (1125),
-    ACM_STOP = (1126),
-    ACN_START = (1),
-    ACN_STOP = (2),
-    BM_CLICK = (245),
-    BM_GETCHECK = (240),
-    BM_GETIMAGE = (246),
-    BM_GETSTATE = (242),
-    BM_SETCHECK = (241),
-    BM_SETIMAGE = (247),
-    BM_SETSTATE = (243),
-    BM_SETSTYLE = (244),
-    BN_CLICKED = (0),
-    BN_DBLCLK = (5),
-    BN_DISABLE = (4),
-    BN_DOUBLECLICKED = (5),
-    BN_HILITE = (2),
-    BN_KILLFOCUS = (7),
-    BN_PAINT = (1),
-    BN_PUSHED = (2),
-    BN_SETFOCUS = (6),
-    BN_UNHILITE = (3),
-    BN_UNPUSHED = (3),
-    CB_ADDSTRING = (323),
-    CB_DELETESTRING = (324),
-    CB_DIR = (325),
-    CB_FINDSTRING = (332),
-    CB_FINDSTRINGEXACT = (344),
-    CB_GETCOUNT = (326),
-    CB_GETCURSEL = (327),
-    CB_GETDROPPEDCONTROLRECT = (338),
-    CB_GETDROPPEDSTATE = (343),
-    CB_GETDROPPEDWIDTH = (351),
-    CB_GETEDITSEL = (320),
-    CB_GETEXTENDEDUI = (342),
-    CB_GETHORIZONTALEXTENT = (349),
-    CB_GETITEMDATA = (336),
-    CB_GETITEMHEIGHT = (340),
-    CB_GETLBTEXT = (328),
-    CB_GETLBTEXTLEN = (329),
-    CB_GETLOCALE = (346),
-    CB_GETTOPINDEX = (347),
-    CB_INITSTORAGE = (353),
-    CB_INSERTSTRING = (330),
-    CB_LIMITTEXT = (321),
-    CB_RESETCONTENT = (331),
-    CB_SELECTSTRING = (333),
-    CB_SETCURSEL = (334),
-    CB_SETDROPPEDWIDTH = (352),
-    CB_SETEDITSEL = (322),
-    CB_SETEXTENDEDUI = (341),
-    CB_SETHORIZONTALEXTENT = (350),
-    CB_SETITEMDATA = (337),
-    CB_SETITEMHEIGHT = (339),
-    CB_SETLOCALE = (345),
-    CB_SETTOPINDEX = (348),
-    CB_SHOWDROPDOWN = (335),
-    CBN_CLOSEUP = (8),
-    CBN_DBLCLK = (2),
-    CBN_DROPDOWN = (7),
-    CBN_EDITCHANGE = (5),
-    CBN_EDITUPDATE = (6),
-    CBN_ERRSPACE = -((1)),
-    CBN_KILLFOCUS = (4),
-    CBN_SELCHANGE = (1),
-    CBN_SELENDCANCEL = (10),
-    CBN_SELENDOK = (9),
-    CBN_SETFOCUS = (3),
-    DL_BEGINDRAG = (1157),
-    DL_CANCELDRAG = (1160),
-    DL_DRAGGING = (1158),
-    DL_DROPPED = (1159),
-    DM_GETDEFID = (1024),
-    DM_REPOSITION = (1026),
-    DM_SETDEFID = (1025),
-    EM_CANPASTE = (1074),
-    EM_CANUNDO = (198),
-    EM_CHARFROMPOS = (215),
-    EM_DISPLAYBAND = (1075),
-    EM_EMPTYUNDOBUFFER = (205),
-    EM_EXGETSEL = (1076),
-    EM_EXLIMITTEXT = (1077),
-    EM_EXLINEFROMCHAR = (1078),
-    EM_EXSETSEL = (1079),
-    EM_FINDTEXT = (1080),
-    EM_FINDTEXTEX = (1103),
-    EM_FINDWORDBREAK = (1100),
-    EM_FMTLINES = (200),
-    EM_FORMATRANGE = (1081),
-    EM_GETCHARFORMAT = (1082),
-    EM_GETEVENTMASK = (1083),
-    EM_GETFIRSTVISIBLELINE = (206),
-    EM_GETHANDLE = (189),
-    EM_GETLIMITTEXT = (213),
-    EM_GETLINE = (196),
-    EM_GETLINECOUNT = (186),
-    EM_GETMARGINS = (212),
-    EM_GETMODIFY = (184),
-    EM_GETIMECOLOR = (1129),
-    EM_GETIMEOPTIONS = (1131),
-    EM_GETOPTIONS = (1102),
-    EM_GETOLEINTERFACE = (1084),
-    EM_GETPARAFORMAT = (1085),
-    EM_GETPASSWORDCHAR = (210),
-    EM_GETPUNCTUATION = (1125),
-    EM_GETRECT = (178),
-    EM_GETSEL = (176),
-    EM_GETSELTEXT = (1086),
-    EM_GETTEXTRANGE = (1099),
-    EM_GETTHUMB = (190),
-    EM_GETWORDBREAKPROC = (209),
-    EM_GETWORDBREAKPROCEX = (1104),
-    EM_GETWORDWRAPMODE = (1127),
-    EM_HIDESELECTION = (1087),
-    EM_LIMITTEXT = (197),
-    EM_LINEFROMCHAR = (201),
-    EM_LINEINDEX = (187),
-    EM_LINELENGTH = (193),
-    EM_LINESCROLL = (182),
-    EM_PASTESPECIAL = (1088),
-    EM_POSFROMCHAR = (214),
-    EM_REPLACESEL = (194),
-    EM_REQUESTRESIZE = (1089),
-    EM_SCROLL = (181),
-    EM_SCROLLCARET = (183),
-    EM_SELECTIONTYPE = (1090),
-    EM_SETBKGNDCOLOR = (1091),
-    EM_SETCHARFORMAT = (1092),
-    EM_SETEVENTMASK = (1093),
-    EM_SETHANDLE = (188),
-    EM_SETIMECOLOR = (1128),
-    EM_SETIMEOPTIONS = (1130),
-    EM_SETLIMITTEXT = (197),
-    EM_SETMARGINS = (211),
-    EM_SETMODIFY = (185),
-    EM_SETOLECALLBACK = (1094),
-    EM_SETOPTIONS = (1101),
-    EM_SETPARAFORMAT = (1095),
-    EM_SETPASSWORDCHAR = (204),
-    EM_SETPUNCTUATION = (1124),
-    EM_SETREADONLY = (207),
-    EM_SETRECT = (179),
-    EM_SETRECTNP = (180),
-    EM_SETSEL = (177),
-    EM_SETTABSTOPS = (203),
-    EM_SETTARGETDEVICE = (1096),
-    EM_SETWORDBREAKPROC = (208),
-    EM_SETWORDBREAKPROCEX = (1105),
-    EM_SETWORDWRAPMODE = (1126),
-    EM_STREAMIN = (1097),
-    EM_STREAMOUT = (1098),
-    EM_UNDO = (199),
-    EN_CHANGE = (768),
-    EN_CORRECTTEXT = (1797),
-    EN_DROPFILES = (1795),
-    EN_ERRSPACE = (1280),
-    EN_HSCROLL = (1537),
-    EN_IMECHANGE = (1799),
-    EN_KILLFOCUS = (512),
-    EN_MAXTEXT = (1281),
-    EN_MSGFILTER = (1792),
-    EN_OLEOPFAILED = (1801),
-    EN_PROTECTED = (1796),
-    EN_REQUESTRESIZE = (1793),
-    EN_SAVECLIPBOARD = (1800),
-    EN_SELCHANGE = (1794),
-    EN_SETFOCUS = (256),
-    EN_STOPNOUNDO = (1798),
-    EN_UPDATE = (1024),
-    EN_VSCROLL = (1538),
-    HDM_DELETEITEM = (4610),
-    HDM_GETITEMW = (4619),
-    HDM_INSERTITEMW = (4618),
-    HDM_SETITEMW = (4620),
-    HDM_GETITEMA = (4611),
-    HDM_INSERTITEMA = (4609),
-    HDM_SETITEMA = (4612),
-    HDM_GETITEM = (HDM_GETITEMA),
-    HDM_INSERTITEM = (HDM_INSERTITEMA),
-    HDM_SETITEM = (HDM_SETITEMA),
-    HDM_GETITEMCOUNT = (4608),
-    HDM_HITTEST = (4614),
-    HDM_LAYOUT = (4613),
-    HDN_BEGINTRACKW = -((326)),
-    HDN_DIVIDERDBLCLICKW = -((325)),
-    HDN_ENDTRACKW = -((327)),
-    HDN_ITEMCHANGEDW = -((321)),
-    HDN_ITEMCHANGINGW = -((320)),
-    HDN_ITEMCLICKW = -((322)),
-    HDN_ITEMDBLCLICKW = -((323)),
-    HDN_TRACKW = -((328)),
-    HDN_BEGINTRACKA = -((306)),
-    HDN_DIVIDERDBLCLICKA = -((305)),
-    HDN_ENDTRACKA = -((307)),
-    HDN_ITEMCHANGEDA = -((301)),
-    HDN_ITEMCHANGINGA = -((300)),
-    HDN_ITEMCLICKA = -((302)),
-    HDN_ITEMDBLCLICKA = -((303)),
-    HDN_TRACKA = -((308)),
-    HDN_BEGINTRACK = (HDN_BEGINTRACKA),
-    HDN_DIVIDERDBLCLICK = (HDN_DIVIDERDBLCLICKA),
-    HDN_ENDTRACK = (HDN_ENDTRACKA),
-    HDN_ITEMCHANGED = (HDN_ITEMCHANGEDA),
-    HDN_ITEMCHANGING = (HDN_ITEMCHANGINGA),
-    HDN_ITEMCLICK = (HDN_ITEMCLICKA),
-    HDN_ITEMDBLCLICK = (HDN_ITEMDBLCLICKA),
-    HDN_TRACK = (HDN_TRACKA),
-    HKM_GETHOTKEY = (1026),
-    HKM_SETHOTKEY = (1025),
-    HKM_SETRULES = (1027),
-    LB_ADDFILE = (406),
-    LB_ADDSTRING = (384),
-    LB_DELETESTRING = (386),
-    LB_DIR = (397),
-    LB_FINDSTRING = (399),
-    LB_FINDSTRINGEXACT = (418),
-    LB_GETANCHORINDEX = (413),
-    LB_GETCARETINDEX = (415),
-    LB_GETCOUNT = (395),
-    LB_GETCURSEL = (392),
-    LB_GETHORIZONTALEXTENT = (403),
-    LB_GETITEMDATA = (409),
-    LB_GETITEMHEIGHT = (417),
-    LB_GETITEMRECT = (408),
-    LB_GETLOCALE = (422),
-    LB_GETSEL = (391),
-    LB_GETSELCOUNT = (400),
-    LB_GETSELITEMS = (401),
-    LB_GETTEXT = (393),
-    LB_GETTEXTLEN = (394),
-    LB_GETTOPINDEX = (398),
-    LB_INITSTORAGE = (424),
-    LB_INSERTSTRING = (385),
-    LB_ITEMFROMPOINT = (425),
-    LB_RESETCONTENT = (388),
-    LB_SELECTSTRING = (396),
-    LB_SELITEMRANGE = (411),
-    LB_SELITEMRANGEEX = (387),
-    LB_SETANCHORINDEX = (412),
-    LB_SETCARETINDEX = (414),
-    LB_SETCOLUMNWIDTH = (405),
-    LB_SETCOUNT = (423),
-    LB_SETCURSEL = (390),
-    LB_SETHORIZONTALEXTENT = (404),
-    LB_SETITEMDATA = (410),
-    LB_SETITEMHEIGHT = (416),
-    LB_SETLOCALE = (421),
-    LB_SETSEL = (389),
-    LB_SETTABSTOPS = (402),
-    LB_SETTOPINDEX = (407),
-    LBN_DBLCLK = (2),
-    LBN_ERRSPACE = -((2)),
-    LBN_KILLFOCUS = (5),
-    LBN_SELCANCEL = (3),
-    LBN_SELCHANGE = (1),
-    LBN_SETFOCUS = (4),
-    LVM_ARRANGE = (4118),
-    LVM_CREATEDRAGIMAGE = (4129),
-    LVM_DELETEALLITEMS = (4105),
-    LVM_DELETECOLUMN = (4124),
-    LVM_DELETEITEM = (4104),
-    LVM_ENSUREVISIBLE = (4115),
-    LVM_GETBKCOLOR = (4096),
-    LVM_GETCALLBACKMASK = (4106),
-    LVM_GETCOLUMNWIDTH = (4125),
-    LVM_GETCOUNTPERPAGE = (4136),
-    LVM_GETEDITCONTROL = (4120),
-    LVM_GETIMAGELIST = (4098),
-    LVM_EDITLABELW = (4214),
-    LVM_FINDITEMW = (4179),
-    LVM_GETCOLUMNW = (4191),
-    LVM_GETISEARCHSTRINGW = (4213),
-    LVM_GETITEMW = (4171),
-    LVM_GETITEMTEXTW = (4211),
-    LVM_GETSTRINGWIDTHW = (4183),
-    LVM_INSERTCOLUMNW = (4193),
-    LVM_INSERTITEMW = (4173),
-    LVM_SETCOLUMNW = (4192),
-    LVM_SETITEMW = (4172),
-    LVM_SETITEMTEXTW = (4212),
-    LVM_EDITLABELA = (4119),
-    LVM_FINDITEMA = (4109),
-    LVM_GETCOLUMNA = (4121),
-    LVM_GETISEARCHSTRINGA = (4148),
-    LVM_GETITEMA = (4101),
-    LVM_GETITEMTEXTA = (4141),
-    LVM_GETSTRINGWIDTHA = (4113),
-    LVM_INSERTCOLUMNA = (4123),
-    LVM_INSERTITEMA = (4103),
-    LVM_SETCOLUMNA = (4122),
-    LVM_SETITEMA = (4102),
-    LVM_SETITEMTEXTA = (4142),
-    LVM_EDITLABEL = (LVM_EDITLABELA),
-    LVM_FINDITEM = (LVM_FINDITEMA),
-    LVM_GETCOLUMN = (LVM_GETCOLUMNA),
-    LVM_GETISEARCHSTRING = (LVM_GETISEARCHSTRINGA),
-    LVM_GETITEM = (LVM_GETITEMA),
-    LVM_GETITEMTEXT = (LVM_GETITEMTEXTA),
-    LVM_GETSTRINGWIDTH = (LVM_GETSTRINGWIDTHA),
-    LVM_INSERTCOLUMN = (LVM_INSERTCOLUMNA),
-    LVM_INSERTITEM = (LVM_INSERTITEMA),
-    LVM_SETCOLUMN = (LVM_SETCOLUMNA),
-    LVM_SETITEM = (LVM_SETITEMA),
-    LVM_SETITEMTEXT = (LVM_SETITEMTEXTA),
-    LVM_GETITEMCOUNT = (4100),
-    LVM_GETITEMPOSITION = (4112),
-    LVM_GETITEMRECT = (4110),
-    LVM_GETITEMSPACING = (4147),
-    LVM_GETITEMSTATE = (4140),
-    LVM_GETNEXTITEM = (4108),
-    LVM_GETORIGIN = (4137),
-    LVM_GETSELECTEDCOUNT = (4146),
-    LVM_GETTEXTBKCOLOR = (4133),
-    LVM_GETTEXTCOLOR = (4131),
-    LVM_GETTOPINDEX = (4135),
-    LVM_GETVIEWRECT = (4130),
-    LVM_HITTEST = (4114),
-    LVM_REDRAWITEMS = (4117),
-    LVM_SCROLL = (4116),
-    LVM_SETBKCOLOR = (4097),
-    LVM_SETCALLBACKMASK = (4107),
-    LVM_SETCOLUMNWIDTH = (4126),
-    LVM_SETIMAGELIST = (4099),
-    LVM_SETITEMCOUNT = (4143),
-    LVM_SETITEMPOSITION = (4111),
-    LVM_SETITEMPOSITION32 = (4145),
-    LVM_SETITEMSTATE = (4139),
-    LVM_SETTEXTBKCOLOR = (4134),
-    LVM_SETTEXTCOLOR = (4132),
-    LVM_SORTITEMS = (4144),
-    LVM_UPDATE = (4138),
-    LVN_BEGINDRAG = -((109)),
-    LVN_BEGINRDRAG = -((111)),
-    LVN_COLUMNCLICK = -((108)),
-    LVN_DELETEALLITEMS = -((104)),
-    LVN_DELETEITEM = -((103)),
-    LVN_BEGINLABELEDITW = -((175)),
-    LVN_ENDLABELEDITW = -((176)),
-    LVN_GETDISPINFOW = -((177)),
-    LVN_SETDISPINFOW = -((178)),
-    LVN_BEGINLABELEDITA = -((105)),
-    LVN_ENDLABELEDITA = -((106)),
-    LVN_GETDISPINFOA = -((150)),
-    LVN_SETDISPINFOA = -((151)),
-    LVN_BEGINLABELEDIT = (LVN_BEGINLABELEDITA),
-    LVN_ENDLABELEDIT = (LVN_ENDLABELEDITA),
-    LVN_GETDISPINFO = (LVN_GETDISPINFOA),
-    LVN_SETDISPINFO = (LVN_SETDISPINFOA),
-    LVN_INSERTITEM = -((102)),
-    LVN_ITEMCHANGED = -((101)),
-    LVN_ITEMCHANGING = -((100)),
-    LVN_KEYDOWN = -((155)),
-    NM_CLICK = -((2)),
-    NM_DBLCLK = -((3)),
-    NM_KILLFOCUS = -((8)),
-    NM_OUTOFMEMORY = -((1)),
-    NM_RCLICK = -((5)),
-    NM_RDBLCLK = -((6)),
-    NM_RETURN = -((4)),
-    NM_SETFOCUS = -((7)),
-    PBM_DELTAPOS = (1027),
-    PBM_SETPOS = (1026),
-    PBM_SETRANGE = (1025),
-    PBM_SETSTEP = (1028),
-    PBM_STEPIT = (1029),
-    PSM_ADDPAGE = (1127),
-    PSM_APPLY = (1134),
-    PSM_CANCELTOCLOSE = (1131),
-    PSM_CHANGED = (1128),
-    PSM_GETTABCONTROL = (1140),
-    PSM_GETCURRENTPAGEHWND = (1142),
-    PSM_ISDIALOGMESSAGE = (1141),
-    PSM_PRESSBUTTON = (1137),
-    PSM_QUERYSIBLINGS = (1132),
-    PSM_REBOOTSYSTEM = (1130),
-    PSM_REMOVEPAGE = (1126),
-    PSM_RESTARTWINDOWS = (1129),
-    PSM_SETCURSEL = (1125),
-    PSM_SETCURSELID = (1138),
-    PSM_SETFINISHTEXTW = (1145),
-    PSM_SETTITLEW = (1144),
-    PSM_SETFINISHTEXTA = (1139),
-    PSM_SETTITLEA = (1135),
-    PSM_SETFINISHTEXT = (PSM_SETFINISHTEXTA),
-    PSM_SETTITLE = (PSM_SETTITLEA),
-    PSM_SETWIZBUTTONS = (1136),
-    PSM_UNCHANGED = (1133),
-    PSN_APPLY = -((202)),
-    PSN_HELP = -((205)),
-    PSN_KILLACTIVE = -((201)),
-    PSN_QUERYCANCEL = -((209)),
-    PSN_RESET = -((203)),
-    PSN_SETACTIVE = -((200)),
-    PSN_WIZBACK = -((206)),
-    PSN_WIZFINISH = -((208)),
-    PSN_WIZNEXT = -((207)),
-    SB_GETBORDERS = (1031),
-    SB_GETPARTS = (1030),
-    SB_GETRECT = (1034),
-    SB_GETTEXTW = (1037),
-    SB_GETTEXTLENGTHW = (1036),
-    SB_SETTEXTW = (1035),
-    SB_GETTEXTA = (1026),
-    SB_GETTEXTLENGTHA = (1027),
-    SB_SETTEXTA = (1025),
-    SB_GETTEXT = (SB_GETTEXTA),
-    SB_GETTEXTLENGTH = (SB_GETTEXTLENGTHA),
-    SB_SETTEXT = (SB_SETTEXTA),
-    SB_SETMINHEIGHT = (1032),
-    SB_SETPARTS = (1028),
-    SB_SIMPLE = (1033),
-    SBM_ENABLE_ARROWS = (228),
-    SBM_GETPOS = (225),
-    SBM_GETRANGE = (227),
-    SBM_GETSCROLLINFO = (234),
-    SBM_SETPOS = (224),
-    SBM_SETRANGE = (226),
-    SBM_SETRANGEREDRAW = (230),
-    SBM_SETSCROLLINFO = (233),
-    STM_GETICON = (369),
-    STM_GETIMAGE = (371),
-    STM_SETICON = (368),
-    STM_SETIMAGE = (370),
-    STN_CLICKED = (0),
-    STN_DBLCLK = (1),
-    STN_DISABLE = (3),
-    STN_ENABLE = (2),
-    TB_ADDBITMAP = (1043),
-    TB_ADDBUTTONS = (1044),
-    TB_AUTOSIZE = (1057),
-    TB_BUTTONCOUNT = (1048),
-    TB_BUTTONSTRUCTSIZE = (1054),
-    TB_CHANGEBITMAP = (1067),
-    TB_CHECKBUTTON = (1026),
-    TB_COMMANDTOINDEX = (1049),
-    TB_CUSTOMIZE = (1051),
-    TB_DELETEBUTTON = (1046),
-    TB_ENABLEBUTTON = (1025),
-    TB_GETBITMAP = (1068),
-    TB_GETBITMAPFLAGS = (1065),
-    TB_GETBUTTON = (1047),
-    TB_ADDSTRINGW = (1101),
-    TB_GETBUTTONTEXTW = (1099),
-    TB_SAVERESTOREW = (1100),
-    TB_ADDSTRINGA = (1052),
-    TB_GETBUTTONTEXTA = (1069),
-    TB_SAVERESTOREA = (1050),
-    TB_ADDSTRING = (TB_ADDSTRINGA),
-    TB_GETBUTTONTEXT = (TB_GETBUTTONTEXTA),
-    TB_SAVERESTORE = (TB_SAVERESTOREA),
-    TB_GETITEMRECT = (1053),
-    TB_GETROWS = (1064),
-    TB_GETSTATE = (1042),
-    TB_GETTOOLTIPS = (1059),
-    TB_HIDEBUTTON = (1028),
-    TB_INDETERMINATE = (1029),
-    TB_INSERTBUTTON = (1045),
-    TB_ISBUTTONCHECKED = (1034),
-    TB_ISBUTTONENABLED = (1033),
-    TB_ISBUTTONHIDDEN = (1036),
-    TB_ISBUTTONINDETERMINATE = (1037),
-    TB_ISBUTTONPRESSED = (1035),
-    TB_PRESSBUTTON = (1027),
-    TB_SETBITMAPSIZE = (1056),
-    TB_SETBUTTONSIZE = (1055),
-    TB_SETCMDID = (1066),
-    TB_SETPARENT = (1061),
-    TB_SETROWS = (1063),
-    TB_SETSTATE = (1041),
-    TB_SETTOOLTIPS = (1060),
-    TBM_CLEARSEL = (1043),
-    TBM_CLEARTICS = (1033),
-    TBM_GETCHANNELRECT = (1050),
-    TBM_GETLINESIZE = (1048),
-    TBM_GETNUMTICS = (1040),
-    TBM_GETPAGESIZE = (1046),
-    TBM_GETPOS = (1024),
-    TBM_GETPTICS = (1038),
-    TBM_GETRANGEMAX = (1026),
-    TBM_GETRANGEMIN = (1025),
-    TBM_GETSELEND = (1042),
-    TBM_GETSELSTART = (1041),
-    TBM_GETTHUMBLENGTH = (1052),
-    TBM_GETTHUMBRECT = (1049),
-    TBM_GETTIC = (1027),
-    TBM_GETTICPOS = (1039),
-    TBM_SETLINESIZE = (1047),
-    TBM_SETPAGESIZE = (1045),
-    TBM_SETPOS = (1029),
-    TBM_SETRANGE = (1030),
-    TBM_SETRANGEMAX = (1032),
-    TBM_SETRANGEMIN = (1031),
-    TBM_SETSEL = (1034),
-    TBM_SETSELEND = (1036),
-    TBM_SETSELSTART = (1035),
-    TBM_SETTHUMBLENGTH = (1051),
-    TBM_SETTIC = (1028),
-    TBM_SETTICFREQ = (1044),
-    TBN_BEGINADJUST = -((703)),
-    TBN_BEGINDRAG = -((701)),
-    TBN_CUSTHELP = -((709)),
-    TBN_ENDADJUST = -((704)),
-    TBN_ENDDRAG = -((702)),
-    TBN_GETBUTTONINFOW = -((720)),
-    TBN_GETBUTTONINFOA = -((700)),
-    TBN_GETBUTTONINFO = (TBN_GETBUTTONINFOA),
-    TBN_QUERYDELETE = -((707)),
-    TBN_QUERYINSERT = -((706)),
-    TBN_RESET = -((705)),
-    TBN_TOOLBARCHANGE = -((708)),
-    TCM_ADJUSTRECT = (4904),
-    TCM_DELETEALLITEMS = (4873),
-    TCM_DELETEITEM = (4872),
-    TCM_GETCURFOCUS = (4911),
-    TCM_GETCURSEL = (4875),
-    TCM_GETIMAGELIST = (4866),
-    TCM_GETITEMW = (4924),
-    TCM_INSERTITEMW = (4926),
-    TCM_SETITEMW = (4925),
-    TCM_GETITEMA = (4869),
-    TCM_INSERTITEMA = (4871),
-    TCM_SETITEMA = (4870),
-    TCM_GETITEM = (TCM_GETITEMA),
-    TCM_INSERTITEM = (TCM_INSERTITEMA),
-    TCM_SETITEM = (TCM_SETITEMA),
-    TCM_GETITEMCOUNT = (4868),
-    TCM_GETITEMRECT = (4874),
-    TCM_GETROWCOUNT = (4908),
-    TCM_GETTOOLTIPS = (4909),
-    TCM_HITTEST = (4877),
-    TCM_REMOVEIMAGE = (4906),
-    TCM_SETCURFOCUS = (4912),
-    TCM_SETCURSEL = (4876),
-    TCM_SETIMAGELIST = (4867),
-    TCM_SETITEMEXTRA = (4878),
-    TCM_SETITEMSIZE = (4905),
-    TCM_SETPADDING = (4907),
-    TCM_SETTOOLTIPS = (4910),
-    TCN_KEYDOWN = -((550)),
-    TCN_SELCHANGE = -((551)),
-    TCN_SELCHANGING = -((552)),
-    TTM_ACTIVATE = (1025),
-    TTM_ADDTOOLW = (1074),
-    TTM_DELTOOLW = (1075),
-    TTM_ENUMTOOLSW = (1082),
-    TTM_GETCURRENTTOOLW = (1083),
-    TTM_GETTEXTW = (1080),
-    TTM_GETTOOLINFOW = (1077),
-    TTM_HITTESTW = (1079),
-    TTM_NEWTOOLRECTW = (1076),
-    TTM_SETTOOLINFOW = (1078),
-    TTM_UPDATETIPTEXTW = (1081),
-    TTM_ADDTOOLA = (1028),
-    TTM_DELTOOLA = (1029),
-    TTM_ENUMTOOLSA = (1038),
-    TTM_GETCURRENTTOOLA = (1039),
-    TTM_GETTEXTA = (1035),
-    TTM_GETTOOLINFOA = (1032),
-    TTM_HITTESTA = (1034),
-    TTM_NEWTOOLRECTA = (1030),
-    TTM_SETTOOLINFOA = (1033),
-    TTM_UPDATETIPTEXTA = (1036),
-    TTM_ADDTOOL = (TTM_ADDTOOLA),
-    TTM_DELTOOL = (TTM_DELTOOLA),
-    TTM_ENUMTOOLS = (TTM_ENUMTOOLSA),
-    TTM_GETCURRENTTOOL = (TTM_GETCURRENTTOOLA),
-    TTM_GETTEXT = (TTM_GETTEXTA),
-    TTM_GETTOOLINFO = (TTM_GETTOOLINFOA),
-    TTM_HITTEST = (TTM_HITTESTA),
-    TTM_NEWTOOLRECT = (TTM_NEWTOOLRECTA),
-    TTM_SETTOOLINFO = (TTM_SETTOOLINFOA),
-    TTM_UPDATETIPTEXT = (TTM_UPDATETIPTEXTA),
-    TTM_GETTOOLCOUNT = (1037),
-    TTM_RELAYEVENT = (1031),
-    TTM_SETDELAYTIME = (1027),
-    TTM_WINDOWFROMPOINT = (1040),
-    TTN_NEEDTEXTW = -((530)),
-    TTN_NEEDTEXTA = -((520)),
-    TTN_NEEDTEXT = (TTN_NEEDTEXTA),
-    TTN_POP = -((522)),
-    TTN_SHOW = -((521)),
-    TVM_CREATEDRAGIMAGE = (4370),
-    TVM_DELETEITEM = (4353),
-    TVM_ENDEDITLABELNOW = (4374),
-    TVM_ENSUREVISIBLE = (4372),
-    TVM_EXPAND = (4354),
-    TVM_GETCOUNT = (4357),
-    TVM_GETEDITCONTROL = (4367),
-    TVM_GETIMAGELIST = (4360),
-    TVM_GETINDENT = (4358),
-    TVM_GETITEMRECT = (4356),
-    TVM_GETNEXTITEM = (4362),
-    TVM_GETVISIBLECOUNT = (4368),
-    TVM_HITTEST = (4369),
-    TVM_EDITLABELW = (4417),
-    TVM_GETISEARCHSTRINGW = (4416),
-    TVM_GETITEMW = (4414),
-    TVM_INSERTITEMW = (4402),
-    TVM_SETITEMW = (4415),
-    TVM_EDITLABELA = (4366),
-    TVM_GETISEARCHSTRINGA = (4375),
-    TVM_GETITEMA = (4364),
-    TVM_INSERTITEMA = (4352),
-    TVM_SETITEMA = (4365),
-    TVM_EDITLABEL = (TVM_EDITLABELA),
-    TVM_GETISEARCHSTRING = (TVM_GETISEARCHSTRINGA),
-    TVM_GETITEM = (TVM_GETITEMA),
-    TVM_INSERTITEM = (TVM_INSERTITEMA),
-    TVM_SETITEM = (TVM_SETITEMA),
-    TVM_SELECTITEM = (4363),
-    TVM_SETIMAGELIST = (4361),
-    TVM_SETINDENT = (4359),
-    TVM_SORTCHILDREN = (4371),
-    TVM_SORTCHILDRENCB = (4373),
-    TVN_KEYDOWN = -((412)),
-    TVN_BEGINDRAGW = -((456)),
-    TVN_BEGINLABELEDITW = -((459)),
-    TVN_BEGINRDRAGW = -((457)),
-    TVN_DELETEITEMW = -((458)),
-    TVN_ENDLABELEDITW = -((460)),
-    TVN_GETDISPINFOW = -((452)),
-    TVN_ITEMEXPANDEDW = -((455)),
-    TVN_ITEMEXPANDINGW = -((454)),
-    TVN_SELCHANGEDW = -((451)),
-    TVN_SELCHANGINGW = -((450)),
-    TVN_SETDISPINFOW = -((453)),
-    TVN_BEGINDRAGA = -((407)),
-    TVN_BEGINLABELEDITA = -((410)),
-    TVN_BEGINRDRAGA = -((408)),
-    TVN_DELETEITEMA = -((409)),
-    TVN_ENDLABELEDITA = -((411)),
-    TVN_GETDISPINFOA = -((403)),
-    TVN_ITEMEXPANDEDA = -((406)),
-    TVN_ITEMEXPANDINGA = -((405)),
-    TVN_SELCHANGEDA = -((402)),
-    TVN_SELCHANGINGA = -((401)),
-    TVN_SETDISPINFOA = -((404)),
-    TVN_BEGINDRAG = (TVN_BEGINDRAGA),
-    TVN_BEGINLABELEDIT = (TVN_BEGINLABELEDITA),
-    TVN_BEGINRDRAG = (TVN_BEGINRDRAGA),
-    TVN_DELETEITEM = (TVN_DELETEITEMA),
-    TVN_ENDLABELEDIT = (TVN_ENDLABELEDITA),
-    TVN_GETDISPINFO = (TVN_GETDISPINFOA),
-    TVN_ITEMEXPANDED = (TVN_ITEMEXPANDEDA),
-    TVN_ITEMEXPANDING = (TVN_ITEMEXPANDINGA),
-    TVN_SELCHANGED = (TVN_SELCHANGEDA),
-    TVN_SELCHANGING = (TVN_SELCHANGINGA),
-    TVN_SETDISPINFO = (TVN_SETDISPINFOA),
-    UDM_GETACCEL = (1132),
-    UDM_GETBASE = (1134),
-    UDM_GETBUDDY = (1130),
-    UDM_GETPOS = (1128),
-    UDM_GETRANGE = (1126),
-    UDM_SETACCEL = (1131),
-    UDM_SETBASE = (1133),
-    UDM_SETBUDDY = (1129),
-    UDM_SETPOS = (1127),
-    UDM_SETRANGE = (1125),
-    UDN_DELTAPOS = -((722)),
-    WM_ACTIVATE = (6),
-    WM_ACTIVATEAPP = (28),
-    WM_ASKCBFORMATNAME = (780),
-    WM_CANCELJOURNAL = (75),
-    WM_CANCELMODE = (31),
-    WM_CAPTURECHANGED = (533),
-    WM_CHANGECBCHAIN = (781),
-    WM_CHAR = (258),
-    WM_CHARTOITEM = (47),
-    WM_CHILDACTIVATE = (34),
-    WM_CHOOSEFONT_GETLOGFONT = (1025),
-    WM_CHOOSEFONT_SETLOGFONT = (1125),
-    WM_CHOOSEFONT_SETFLAGS = (1126),
-    WM_CLEAR = (771),
-    WM_CLOSE = (16),
-    WM_COMMAND = (273),
-    WM_COMPACTING = (65),
-    WM_COMPAREITEM = (57),
-    WM___FILE__MENU = (123),
-    WM_COPY = (769),
-    WM_COPYDATA = (74),
-    WM_CREATE = (1),
-    WM_CTLCOLORBTN = (309),
-    WM_CTLCOLORDLG = (310),
-    WM_CTLCOLOREDIT = (307),
-    WM_CTLCOLORLISTBOX = (308),
-    WM_CTLCOLORMSGBOX = (306),
-    WM_CTLCOLORSCROLLBAR = (311),
-    WM_CTLCOLORSTATIC = (312),
-    WM_CUT = (768),
-    WM_DEADCHAR = (259),
-    WM_DELETEITEM = (45),
-    WM_DESTROY = (2),
-    WM_DESTROYCLIPBOARD = (775),
-    WM_DEVICECHANGE = (537),
-    WM_DEVMODECHANGE = (27),
-    WM_DISPLAYCHANGE = (126),
-    WM_DRAWCLIPBOARD = (776),
-    WM_DRAWITEM = (43),
-    WM_DROPFILES = (563),
-    WM_ENABLE = (10),
-    WM_ENDSESSION = (22),
-    WM_ENTERIDLE = (289),
-    WM_ENTERMENULOOP = (529),
-    WM_ENTERSIZEMOVE = (561),
-    WM_ERASEBKGND = (20),
-    WM_EXITMENULOOP = (530),
-    WM_EXITSIZEMOVE = (562),
-    WM_FONTCHANGE = (29),
-    WM_GETDLGCODE = (135),
-    WM_GETFONT = (49),
-    WM_GETHOTKEY = (51),
-    WM_GETICON = (127),
-    WM_GETMINMAXINFO = (36),
-    WM_GETTEXT = (13),
-    WM_GETTEXTLENGTH = (14),
-    WM_HELP = (83),
-    WM_HOTKEY = (786),
-    WM_HSCROLL = (276),
-    WM_HSCROLLCLIPBOARD = (782),
-    WM_ICONERASEBKGND = (39),
-    WM_IME_CHAR = (646),
-    WM_IME_COMPOSITION = (271),
-    WM_IME_COMPOSITIONFULL = (644),
-    WM_IME_CONTROL = (643),
-    WM_IME_ENDCOMPOSITION = (270),
-    WM_IME_KEYDOWN = (656),
-    WM_IME_KEYUP = (657),
-    WM_IME_NOTIFY = (642),
-    WM_IME_SELECT = (645),
-    WM_IME_SET__FILE__ = (641),
-    WM_IME_STARTCOMPOSITION = (269),
-    WM_INITDIALOG = (272),
-    WM_INITMENU = (278),
-    WM_INITMENUPOPUP = (279),
-    WM_INPUTLANGCHANGE = (81),
-    WM_INPUTLANGCHANGEREQUEST = (80),
-    WM_KEYDOWN = (256),
-    WM_KEYUP = (257),
-    WM_KILLFOCUS = (8),
-    WM_LBUTTONDBLCLK = (515),
-    WM_LBUTTONDOWN = (513),
-    WM_LBUTTONUP = (514),
-    WM_MBUTTONDBLCLK = (521),
-    WM_MBUTTONDOWN = (519),
-    WM_MBUTTONUP = (520),
-    WM_MDIACTIVATE = (546),
-    WM_MDICASCADE = (551),
-    WM_MDICREATE = (544),
-    WM_MDIDESTROY = (545),
-    WM_MDIGETACTIVE = (553),
-    WM_MDIICONARRANGE = (552),
-    WM_MDIMAXIMIZE = (549),
-    WM_MDINEXT = (548),
-    WM_MDIREFRESHMENU = (564),
-    WM_MDIRESTORE = (547),
-    WM_MDISETMENU = (560),
-    WM_MDITILE = (550),
-    WM_MEASUREITEM = (44),
-    WM_MENUCHAR = (288),
-    WM_MENUSELECT = (287),
-    WM_MOUSEACTIVATE = (33),
-    WM_MOUSEMOVE = (512),
-    WM_MOUSEWHEEL = 0x020A,
-    WM_MOVE = (3),
-    WM_MOVING = (534),
-    WM_NCACTIVATE = (134),
-    WM_NCCALCSIZE = (131),
-    WM_NCCREATE = (129),
-    WM_NCDESTROY = (130),
-    WM_NCHITTEST = (132),
-    WM_NCLBUTTONDBLCLK = (163),
-    WM_NCLBUTTONDOWN = (161),
-    WM_NCLBUTTONUP = (162),
-    WM_NCMBUTTONDBLCLK = (169),
-    WM_NCMBUTTONDOWN = (167),
-    WM_NCMBUTTONUP = (168),
-    WM_NCMOUSEMOVE = (160),
-    WM_NCPAINT = (133),
-    WM_NCRBUTTONDBLCLK = (166),
-    WM_NCRBUTTONDOWN = (164),
-    WM_NCRBUTTONUP = (165),
-    WM_NEXTDLGCTL = (40),
-    WM_NOTIFY = (78),
-    WM_NOTIFYFORMAT = (85),
-    WM_NULL = (0),
-    WM_PAINT = (15),
-    WM_PAINTCLIPBOARD = (777),
-    WM_PAINTICON = (38),
-    WM_PALETTECHANGED = (785),
-    WM_PALETTEISCHANGING = (784),
-    WM_PARENTNOTIFY = (528),
-    WM_PASTE = (770),
-    WM_PENWINFIRST = (896),
-    WM_PENWINLAST = (911),
-    WM_POWER = (72),
-    WM_POWERBROADCAST = (536),
-    WM_PRINT = (791),
-    WM_PRINTCLIENT = (792),
-    WM_PSD_ENVSTAMPRECT = (1029),
-    WM_PSD_FULLPAGERECT = (1025),
-    WM_PSD_GREEKTEXTRECT = (1028),
-    WM_PSD_MARGINRECT = (1027),
-    WM_PSD_MINMARGINRECT = (1026),
-    WM_PSD_PAGESETUPDLG = (1024),
-    WM_PSD_YAFULLPAGERECT = (1030),
-    WM_QUERYDRAGICON = (55),
-    WM_QUERYENDSESSION = (17),
-    WM_QUERYNEWPALETTE = (783),
-    WM_QUERYOPEN = (19),
-    WM_QUEUESYNC = (35),
-    WM_QUIT = (18),
-    WM_RBUTTONDBLCLK = (518),
-    WM_RBUTTONDOWN = (516),
-    WM_RBUTTONUP = (517),
-    WM_RENDERALLFORMATS = (774),
-    WM_RENDERFORMAT = (773),
-    WM_SETCURSOR = (32),
-    WM_SETFOCUS = (7),
-    WM_SETFONT = (48),
-    WM_SETHOTKEY = (50),
-    WM_SETICON = (128),
-    WM_SETREDRAW = (11),
-    WM_SETTEXT = (12),
-    WM_SETTINGCHANGE = (26),
-    WM_SHOWWINDOW = (24),
-    WM_SIZE = (5),
-    WM_SIZECLIPBOARD = (779),
-    WM_SIZING = (532),
-    WM_SPOOLERSTATUS = (42),
-    WM_STYLECHANGED = (125),
-    WM_STYLECHANGING = (124),
-    WM_SYSCHAR = (262),
-    WM_SYSCOLORCHANGE = (21),
-    WM_SYSCOMMAND = (274),
-    WM_SYSDEADCHAR = (263),
-    WM_SYSKEYDOWN = (260),
-    WM_SYSKEYUP = (261),
-    WM_TCARD = (82),
-    WM_TIMECHANGE = (30),
-    WM_TIMER = (275),
-    WM_UNDO = (772),
-    WM_USER = (1024),
-    WM_USERCHANGED = (84),
-    WM_VKEYTOITEM = (46),
-    WM_VSCROLL = (277),
-    WM_VSCROLLCLIPBOARD = (778),
-    WM_WINDOWPOSCHANGED = (71),
-    WM_WINDOWPOSCHANGING = (70),
-    WM_WININICHANGE = (26),
-    WM_KEYFIRST = (256),
-    WM_KEYLAST = (264),
-    WM_MOUSEFIRST = (512),
-    WM_MOUSELAST = (521),
-}
-struct VA_LIST
-{
-}
-
-
-struct ABC
-{
-    int abcA;
-    UINT abcB;
-    int abcC;
-}
-
-alias ABC* LPABC;
-alias ABC _ABC;
-alias ABC TABC;
-alias ABC* PABC;
-
-struct ABCFLOAT
-{
-    FLOAT abcfA;
-    FLOAT abcfB;
-    FLOAT abcfC;
-}
-
-alias ABCFLOAT* LPABCFLOAT;
-alias ABCFLOAT _ABCFLOAT;
-alias ABCFLOAT TABCFLOAT;
-alias ABCFLOAT* PABCFLOAT;
-
-struct ACCEL
-{
-    ubyte fVirt;
-    ushort key;
-    ushort cmd;
-}
-
-alias ACCEL* LPACCEL;
-alias ACCEL _ACCEL;
-alias ACCEL TACCEL;
-alias ACCEL* PACCEL;
-
-struct ACE_HEADER
-{
-    ubyte AceType;
-    ubyte AceFlags;
-    ushort AceSize;
-}
-
-alias ACE_HEADER _ACE_HEADER;
-alias ACE_HEADER TACE_HEADER;
-alias ACE_HEADER* PACE_HEADER;
-alias DWORD ACCESS_MASK;
-alias ACCESS_MASK REGSAM;
-
-struct ACCESS_ALLOWED_ACE
-{
-    ACE_HEADER Header;
-    ACCESS_MASK Mask;
-    DWORD SidStart;
-}
-
-alias ACCESS_ALLOWED_ACE _ACCESS_ALLOWED_ACE;
-alias ACCESS_ALLOWED_ACE TACCESS_ALLOWED_ACE;
-alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE;
-
-struct ACCESS_DENIED_ACE
-{
-    ACE_HEADER Header;
-    ACCESS_MASK Mask;
-    DWORD SidStart;
-}
-
-alias ACCESS_DENIED_ACE _ACCESS_DENIED_ACE;
-alias ACCESS_DENIED_ACE TACCESS_DENIED_ACE;
-
-struct ACCESSTIMEOUT
-{
-    UINT cbSize;
-    DWORD dwFlags;
-    DWORD iTimeOutMSec;
-}
-
-alias ACCESSTIMEOUT _ACCESSTIMEOUT;
-alias ACCESSTIMEOUT TACCESSTIMEOUT;
-alias ACCESSTIMEOUT* PACCESSTIMEOUT;
-
-struct ACL
-{
-    ubyte AclRevision;
-    ubyte Sbz1;
-    ushort AclSize;
-    ushort AceCount;
-    ushort Sbz2;
-}
-
-alias ACL* PACL;
-alias ACL _ACL;
-alias ACL TACL;
-
-struct ACL_REVISION_INFORMATION
-{
-    DWORD AclRevision;
-}
-
-alias ACL_REVISION_INFORMATION _ACL_REVISION_INFORMATION;
-alias ACL_REVISION_INFORMATION TACLREVISIONINFORMATION;
-alias ACL_REVISION_INFORMATION* PACLREVISIONINFORMATION;
-
-struct ACL_SIZE_INFORMATION
-{
-    DWORD AceCount;
-    DWORD AclBytesInUse;
-    DWORD AclBytesFree;
-}
-
-alias ACL_SIZE_INFORMATION _ACL_SIZE_INFORMATION;
-alias ACL_SIZE_INFORMATION TACLSIZEINFORMATION;
-alias ACL_SIZE_INFORMATION* PACLSIZEINFORMATION;
-
-struct ACTION_HEADER
-{
-    ULONG transport_id;
-    USHORT action_code;
-    USHORT reserved;
-}
-
-alias ACTION_HEADER _ACTION_HEADER;
-alias ACTION_HEADER TACTIONHEADER;
-alias ACTION_HEADER* PACTIONHEADER;
-
-struct ADAPTER_STATUS
-{
-    UCHAR[1 + 5] adapter_address;
-    UCHAR rev_major;
-    UCHAR reserved0;
-    UCHAR adapter_type;
-    UCHAR rev_minor;
-    ushort duration;
-    ushort frmr_recv;
-    ushort frmr_xmit;
-    ushort iframe_recv_err;
-    ushort xmit_aborts;
-    DWORD xmit_success;
-    DWORD recv_success;
-    ushort iframe_xmit_err;
-    ushort recv_buff_unavail;
-    ushort t1_timeouts;
-    ushort ti_timeouts;
-    DWORD reserved1;
-    ushort free_ncbs;
-    ushort max_cfg_ncbs;
-    ushort max_ncbs;
-    ushort xmit_buf_unavail;
-    ushort max_dgram_size;
-    ushort pending_sess;
-    ushort max_cfg_sess;
-    ushort max_sess;
-    ushort max_sess_pkt_size;
-    ushort name_count;
-}
-
-alias ADAPTER_STATUS _ADAPTER_STATUS;
-alias ADAPTER_STATUS TADAPTERSTATUS;
-alias ADAPTER_STATUS* PADAPTERSTATUS;
-
-struct ADDJOB_INFO_1
-{
-    LPTSTR Path;
-    DWORD JobId;
-}
-
-alias ADDJOB_INFO_1 _ADDJOB_INFO_1;
-alias ADDJOB_INFO_1 TADDJOB_INFO_1;
-alias ADDJOB_INFO_1* PADDJOB_INFO_1;
-
-struct ANIMATIONINFO
-{
-    UINT cbSize;
-    int iMinAnimate;
-}
-
-alias ANIMATIONINFO* LPANIMATIONINFO;
-alias ANIMATIONINFO _ANIMATIONINFO;
-alias ANIMATIONINFO TANIMATIONINFO;
-alias ANIMATIONINFO* PANIMATIONINFO;
-
-struct RECT
-{
-    LONG left;
-    LONG top;
-    LONG right;
-    LONG bottom;
-}
-
-alias RECT* LPCRECT;
-alias RECT* LPRECT;
-alias RECT _RECT;
-alias RECT TRECT;
-alias RECT* PRECT;
-
-struct RECTL
-{
-    LONG left;
-    LONG top;
-    LONG right;
-    LONG bottom;
-}
-
-alias RECTL _RECTL;
-alias RECTL TRECTL;
-alias RECTL* PRECTL;
-alias RECTL* LPRECTL;
-alias RECTL* LPCRECTL;
-
-struct APPBARDATA
-{
-    DWORD cbSize;
-    HWND hWnd;
-    UINT uCallbackMessage;
-    UINT uEdge;
-    RECT rc;
-    LPARAM lParam;
-}
-
-alias APPBARDATA _APPBARDATA;
-alias APPBARDATA TAPPBARDATA;
-alias APPBARDATA* PAPPBARDATA;
-
-struct BITMAP
-{
-    LONG bmType;
-    LONG bmWidth;
-    LONG bmHeight;
-    LONG bmWidthBytes;
-    ushort bmPlanes;
-    ushort bmBitsPixel;
-    LPVOID bmBits;
-}
-
-alias BITMAP* PBITMAP;
-alias BITMAP* NPBITMAP;
-alias BITMAP* LPBITMAP;
-alias BITMAP TAGBITMAP;
-alias BITMAP TBITMAP;
-
-struct BITMAPCOREHEADER
-{
-    DWORD bcSize;
-    ushort bcWidth;
-    ushort bcHeight;
-    ushort bcPlanes;
-    ushort bcBitCount;
-}
-
-alias BITMAPCOREHEADER TAGBITMAPCOREHEADER;
-alias BITMAPCOREHEADER TBITMAPCOREHEADER;
-alias BITMAPCOREHEADER* PBITMAPCOREHEADER;
-
-struct RGBTRIPLE
-{
-    ubyte rgbtBlue;
-    ubyte rgbtGreen;
-    ubyte rgbtRed;
-}
-
-alias RGBTRIPLE TAGRGBTRIPLE;
-alias RGBTRIPLE TRGBTRIPLE;
-alias RGBTRIPLE* PRGBTRIPLE;
-
-struct BITMAPCOREINFO
-{
-    BITMAPCOREHEADER bmciHeader;
-    RGBTRIPLE[1 + 0] bmciColors;
-}
-
-alias BITMAPCOREINFO* PBITMAPCOREINFO;
-alias BITMAPCOREINFO* LPBITMAPCOREINFO;
-alias BITMAPCOREINFO _BITMAPCOREINFO;
-alias BITMAPCOREINFO TBITMAPCOREINFO;
-
-struct BITMAPINFOHEADER
-{
-    DWORD biSize;
-    LONG biWidth;
-    LONG biHeight;
-    ushort biPlanes;
-    ushort biBitCount;
-    DWORD biCompression;
-    DWORD biSizeImage;
-    LONG biXPelsPerMeter;
-    LONG biYPelsPerMeter;
-    DWORD biClrUsed;
-    DWORD biClrImportant;
-}
-
-alias BITMAPINFOHEADER* LPBITMAPINFOHEADER;
-alias BITMAPINFOHEADER TBITMAPINFOHEADER;
-alias BITMAPINFOHEADER* PBITMAPINFOHEADER;
-
-struct RGBQUAD
-{
-    ubyte rgbBlue;
-    ubyte rgbGreen;
-    ubyte rgbRed;
-    ubyte rgbReserved;
-}
-
-alias RGBQUAD TAGRGBQUAD;
-alias RGBQUAD TRGBQUAD;
-alias RGBQUAD* PRGBQUAD;
-
-struct BITMAPINFO
-{
-    BITMAPINFOHEADER bmiHeader;
-    RGBQUAD[1 + 0] bmiColors;
-}
-
-alias BITMAPINFO* LPBITMAPINFO;
-alias BITMAPINFO* PBITMAPINFO;
-alias BITMAPINFO TBITMAPINFO;
-alias int FXPT2DOT30;
-alias FXPT2DOT30* LPFXPT2DOT30;
-alias FXPT2DOT30 TPFXPT2DOT30;
-alias FXPT2DOT30* PPFXPT2DOT30;
-
-struct CIEXYZ
-{
-    FXPT2DOT30 ciexyzX;
-    FXPT2DOT30 ciexyzY;
-    FXPT2DOT30 ciexyzZ;
-}
-
-alias CIEXYZ TAGCIEXYZ;
-alias CIEXYZ* LPCIEXYZ;
-alias CIEXYZ TPCIEXYZ;
-alias CIEXYZ* PCIEXYZ;
-
-struct CIEXYZTRIPLE
-{
-    CIEXYZ ciexyzRed;
-    CIEXYZ ciexyzGreen;
-    CIEXYZ ciexyzBlue;
-}
-
-alias CIEXYZTRIPLE TAGCIEXYZTRIPLE;
-alias CIEXYZTRIPLE* LPCIEXYZTRIPLE;
-alias CIEXYZTRIPLE TCIEXYZTRIPLE;
-alias CIEXYZTRIPLE* PCIEXYZTRIPLE;
-
-struct BITMAPV4HEADER
-{
-    DWORD bV4Size;
-    LONG bV4Width;
-    LONG bV4Height;
-    ushort bV4Planes;
-    ushort bV4BitCount;
-    DWORD bV4V4Compression;
-    DWORD bV4SizeImage;
-    LONG bV4XPelsPerMeter;
-    LONG bV4YPelsPerMeter;
-    DWORD bV4ClrUsed;
-    DWORD bV4ClrImportant;
-    DWORD bV4RedMask;
-    DWORD bV4GreenMask;
-    DWORD bV4BlueMask;
-    DWORD bV4AlphaMask;
-    DWORD bV4CSType;
-    CIEXYZTRIPLE bV4Endpoints;
-    DWORD bV4GammaRed;
-    DWORD bV4GammaGreen;
-    DWORD bV4GammaBlue;
-}
-
-alias BITMAPV4HEADER* LPBITMAPV4HEADER;
-alias BITMAPV4HEADER TBITMAPV4HEADER;
-alias BITMAPV4HEADER* PBITMAPV4HEADER;
-
-align(1) struct BITMAPFILEHEADER
-{
-    ushort bfType;
-    DWORD bfSize;
-    ushort bfReserved1;
-    ushort bfReserved2;
-    DWORD bfOffBits;
-}
-
-
-struct BLOB
-{
-    ULONG cbSize;
-    ubyte* pBlobData;
-}
-
-alias BLOB _BLOB;
-alias BLOB TBLOB;
-alias BLOB* PBLOB;
-
-struct SHITEMID
-{
-    USHORT cb;
-    ubyte[1 + 0] abID;
-}
-
-alias SHITEMID* LPSHITEMID;
-alias SHITEMID* LPCSHITEMID;
-alias SHITEMID _SHITEMID;
-alias SHITEMID TSHITEMID;
-alias SHITEMID* PSHITEMID;
-
-struct ITEMIDLIST
-{
-    SHITEMID mkid;
-}
-
-alias ITEMIDLIST* LPITEMIDLIST;
-alias ITEMIDLIST* LPCITEMIDLIST;
-alias ITEMIDLIST _ITEMIDLIST;
-alias ITEMIDLIST TITEMIDLIST;
-alias ITEMIDLIST* PITEMIDLIST;
-
-struct BROWSEINFOA
-{
-    HWND hwndOwner;
-    LPCITEMIDLIST pidlRoot;
-    LPSTR pszDisplayName;
-    LPCSTR lpszTitle;
-    UINT ulFlags;
-    BFFCALLBACK lpfn;
-    LPARAM lParam;
-    int iImage;
-}
-struct BROWSEINFOW
-{
-    HWND hwndOwner;
-    LPCITEMIDLIST pidlRoot;
-    LPWSTR pszDisplayName;
-    LPCWSTR lpszTitle;
-    UINT ulFlags;
-    BFFCALLBACK lpfn;
-    LPARAM lParam;
-    int iImage;
-}
-version( Win32SansUnicode )
-{
-    alias BROWSEINFOA BROWSEINFO;
-}
-else
-{
-    alias BROWSEINFOW BROWSEINFO;
-}
-alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO;
-
-struct FILETIME
-{
-    DWORD dwLowDateTime;
-    DWORD dwHighDateTime;
-}
-
-alias FILETIME* LPFILETIME;
-alias FILETIME _FILETIME;
-alias FILETIME TFILETIME;
-alias FILETIME* PFILETIME;
-
-struct BY_HANDLE_FILE_INFORMATION
-{
-    DWORD dwFileAttributes;
-    FILETIME ftCreationTime;
-    FILETIME ftLastAccessTime;
-    FILETIME ftLastWriteTime;
-    DWORD dwVolumeSerialNumber;
-    DWORD nFileSizeHigh;
-    DWORD nFileSizeLow;
-    DWORD nNumberOfLinks;
-    DWORD nFileIndexHigh;
-    DWORD nFileIndexLow;
-}
-
-alias BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION;
-alias BY_HANDLE_FILE_INFORMATION _BY_HANDLE_FILE_INFORMATION;
-alias BY_HANDLE_FILE_INFORMATION TBYHANDLEFILEINFORMATION;
-alias BY_HANDLE_FILE_INFORMATION* PBYHANDLEFILEINFORMATION;
-
-struct FIXED
-{
-    ushort fract;
-    int value;
-}
-
-alias FIXED _FIXED;
-alias FIXED TFIXED;
-alias FIXED* PFIXED;
-
-struct POINT
-{
-    LONG x;
-    LONG y;
-}
-
-alias POINT* LPPOINT;
-alias POINT TAGPOINT;
-alias POINT TPOINT;
-alias POINT* PPOINT;
-
-struct POINTFX
-{
-    FIXED x;
-    FIXED y;
-}
-
-alias POINTFX TAGPOINTFX;
-alias POINTFX TPOINTFX;
-alias POINTFX* PPOINTFX;
-
-struct POINTL
-{
-    LONG x;
-    LONG y;
-}
-
-alias POINTL _POINTL;
-alias POINTL TPOINTL;
-alias POINTL* PPOINTL;
-
-struct TSMALLPOINT
-{
-    byte X, Y;
-}
-
-
-struct POINTS
-{
-    SHORT x;
-    SHORT y;
-}
-
-alias POINTS TAGPOINTS;
-alias POINTS TPOINTS;
-alias POINTS* PPOINTS;
-
-struct CANDIDATEFORM
-{
-    DWORD dwIndex;
-    DWORD dwStyle;
-    POINT ptCurrentPos;
-    RECT rcArea;
-}
-
-alias CANDIDATEFORM* LPCANDIDATEFORM;
-alias CANDIDATEFORM _TAGCANDIDATEFORM;
-alias CANDIDATEFORM TCANDIDATEFORM;
-alias CANDIDATEFORM* PCANDIDATEFORM;
-
-struct CANDIDATELIST
-{
-    DWORD dwSize;
-    DWORD dwStyle;
-    DWORD dwCount;
-    DWORD dwSelection;
-    DWORD dwPageStart;
-    DWORD dwPageSize;
-    DWORD[1 + 0] dwOffset;
-}
-
-alias CANDIDATELIST* LPCANDIDATELIST;
-alias CANDIDATELIST _TAGCANDIDATELIST;
-alias CANDIDATELIST TCANDIDATELIST;
-alias CANDIDATELIST* PCANDIDATELIST;
-
-struct CREATESTRUCT
-{
-    LPVOID lpCreateParams;
-    HINST hInstance;
-    HMENU hMenu;
-    HWND hwndParent;
-    int cy;
-    int cx;
-    int y;
-    int x;
-    LONG style;
-    LPCTSTR lpszName;
-    LPCTSTR lpszClass;
-    DWORD dwExStyle;
-}
-
-alias CREATESTRUCT* LPCREATESTRUCT;
-alias CREATESTRUCT TAGCREATESTRUCT;
-alias CREATESTRUCT TCREATESTRUCT;
-alias CREATESTRUCT* PCREATESTRUCT;
-
-struct CBT_CREATEWND
-{
-    LPCREATESTRUCT lpcs;
-    HWND hwndInsertAfter;
-}
-
-alias CBT_CREATEWND TAGCBT_CREATEWND;
-alias CBT_CREATEWND TCBT_CREATEWND;
-alias CBT_CREATEWND* PCBT_CREATEWND;
-
-struct CBTACTIVATESTRUCT
-{
-    WINBOOL fMouse;
-    HWND hWndActive;
-}
-
-alias CBTACTIVATESTRUCT TAGCBTACTIVATESTRUCT;
-alias CBTACTIVATESTRUCT TCBTACTIVATESTRUCT;
-alias CBTACTIVATESTRUCT* PCBTACTIVATESTRUCT;
-
-struct CHAR_INFO
-{
-
-    union
-    {
-        struct
-        {
-            WCHAR UnicodeChar;
-            ushort Attributes;
-        }
-        struct
-        {
-            char AsciiChar;
-        }
-    }
-}
-
-alias CHAR_INFO _CHAR_INFO;
-alias CHAR_INFO TCHAR_INFO;
-alias CHAR_INFO* PCHAR_INFO;
-
-struct CHARFORMAT
-{
-    UINT cbSize;
-    DWORD dwMask;
-    DWORD dwEffects;
-    LONG yHeight;
-    LONG yOffset;
-    COLORREF crTextColor;
-    ubyte bCharSet;
-    ubyte bPitchAndFamily;
-    TCHAR[1 + LF_FACESIZE-1] szFaceName;
-}
-
-alias CHARFORMAT _CHARFORMAT;
-alias CHARFORMAT TCHARFORMAT;
-alias CHARFORMAT* PCHARFORMAT;
-
-struct CHARRANGE
-{
-    LONG cpMin;
-    LONG cpMax;
-}
-
-alias CHARRANGE _CHARRANGE;
-alias CHARRANGE TCHARRANGE;
-alias CHARRANGE* PCHARRANGE;
-
-struct CHARSET
-{
-    DWORD[1 + 2] aflBlock;
-    DWORD flLang;
-}
-
-alias CHARSET TAGCHARSET;
-alias CHARSET TCHARSET;
-alias CHARSET* PCHARSET;
-
-struct FONTSIGNATURE
-{
-    DWORD[1 + 3] fsUsb;
-    DWORD[1 + 1] fsCsb;
-}
-
-alias FONTSIGNATURE* LPFONTSIGNATURE;
-alias FONTSIGNATURE TAGFONTSIGNATURE;
-alias FONTSIGNATURE TFONTSIGNATURE;
-alias FONTSIGNATURE* PFONTSIGNATURE;
-
-struct CHARSETINFO
-{
-    UINT ciCharset;
-    UINT ciACP;
-    FONTSIGNATURE fs;
-}
-
-alias CHARSETINFO* LPCHARSETINFO;
-alias CHARSETINFO TCHARSETINFO;
-alias CHARSETINFO* PCHARSETINFO;
-
-struct CHOOSECOLORA {
-    DWORD        lStructSize;
-    HWND         hwndOwner;
-    HWND         hInstance;
-    COLORREF     rgbResult;
-    COLORREF*    lpCustColors;
-    DWORD        Flags;
-    LPARAM       lCustData;
-    LPCCHOOKPROC lpfnHook;
-    LPCSTR      lpTemplateName;
-}
-alias CHOOSECOLORA* PCHOOSECOLORA, LPCHOOSECOLORA;
-struct CHOOSECOLORW {
-    DWORD        lStructSize;
-    HWND         hwndOwner;
-    HWND         hInstance;
-    COLORREF     rgbResult;
-    COLORREF*    lpCustColors;
-    DWORD        Flags;
-    LPARAM       lCustData;
-    LPCCHOOKPROC lpfnHook;
-    LPCWSTR      lpTemplateName;
-}
-alias CHOOSECOLORW* PCHOOSECOLORW, LPCHOOSECOLORW;
-version(Win32SansUnicode)
-{
-    alias CHOOSECOLORA CHOOSECOLOR;
-}
-else
-{
-    alias CHOOSECOLORW CHOOSECOLOR;
-}
-alias CHOOSECOLOR* PCHOOSECOLOR, LPCHOOSECOLOR;
-
-struct LOGFONTA
-{
-    LONG lfHeight;
-    LONG lfWidth;
-    LONG lfEscapement;
-    LONG lfOrientation;
-    LONG lfWeight;
-    ubyte lfItalic;
-    ubyte lfUnderline;
-    ubyte lfStrikeOut;
-    ubyte lfCharSet;
-    ubyte lfOutPrecision;
-    ubyte lfClipPrecision;
-    ubyte lfQuality;
-    ubyte lfPitchAndFamily;
-    ubyte[1 + LF_FACESIZE-1] lfFaceName;
-}
-
-alias LOGFONTA  TLOGFONTA;
-alias LOGFONTA* PLOGFONTA;
-alias LOGFONTA* LPLOGFONTA;
-
-struct LOGFONTW
-{
-    LONG lfHeight;
-    LONG lfWidth;
-    LONG lfEscapement;
-    LONG lfOrientation;
-    LONG lfWeight;
-    ubyte lfItalic;
-    ubyte lfUnderline;
-    ubyte lfStrikeOut;
-    ubyte lfCharSet;
-    ubyte lfOutPrecision;
-    ubyte lfClipPrecision;
-    ubyte lfQuality;
-    ubyte lfPitchAndFamily;
-    WCHAR lfFaceName[LF_FACESIZE];
-};
-
-alias LOGFONTW  TLOGFONTW;
-alias LOGFONTW* LPLOGFONTW;
-alias LOGFONTW* PLOGFONTW;
-
-version( Win32SansUnicode ){
-    alias LOGFONTA  LOGFONT;
-    alias LOGFONTA  TLOGFONT;
-    alias LOGFONTA* PLOGFONT;
-    alias LOGFONTA* LPLOGFONT;
-}
-else{
-    alias LOGFONTW  LOGFONT;
-    alias LOGFONTW  TLOGFONT;
-    alias LOGFONTW* PLOGFONT;
-    alias LOGFONTW* LPLOGFONT;
-}
-
-struct TCHOOSEFONT
-{
-    DWORD lStructSize;
-    HWND hwndOwner;
-    HDC hDC;
-    LPLOGFONT lpLogFont;
-    INT iPointSize;
-    DWORD Flags;
-    DWORD rgbColors;
-    LPARAM lCustData;
-    LPCFHOOKPROC lpfnHook;
-    LPCTSTR lpTemplateName;
-    HINST hInstance;
-    LPTSTR lpszStyle;
-    ushort nFontType;
-    ushort ___MISSING_ALIGNMENT__;
-    INT nSizeMin;
-    INT nSizeMax;
-}
-
-alias TCHOOSEFONT* LPCHOOSEFONT;
-alias TCHOOSEFONT* PCHOOSEFONT;
-
-struct CIDA
-{
-    UINT cidl;
-    UINT[1 + 0] aoffset;
-}
-
-alias CIDA* LPIDA;
-alias CIDA _IDA;
-alias CIDA TIDA;
-alias CIDA* PIDA;
-
-struct CLIENTCREATESTRUCT
-{
-    HANDLE hWindowMenu;
-    UINT idFirstChild;
-}
-
-alias CLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT;
-alias CLIENTCREATESTRUCT TAGCLIENTCREATESTRUCT;
-alias CLIENTCREATESTRUCT TCLIENTCREATESTRUCT;
-alias CLIENTCREATESTRUCT* PCLIENTCREATESTRUCT;
-
-struct CMINVOKECOMMANDINFO
-{
-    DWORD cbSize;
-    DWORD fMask;
-    HWND hwnd;
-    LPCSTR lpVerb;
-    LPCSTR lpParameters;
-    LPCSTR lpDirectory;
-    int nShow;
-    DWORD dwHotKey;
-    HANDLE hIcon;
-}
-
-alias CMINVOKECOMMANDINFO* LPCMINVOKECOMMANDINFO;
-alias CMINVOKECOMMANDINFO _CMINVOKECOMMANDINFO;
-alias CMINVOKECOMMANDINFO TCMINVOKECOMMANDINFO;
-alias CMINVOKECOMMANDINFO* PCMINVOKECOMMANDINFO;
-
-struct COLORADJUSTMENT
-{
-    ushort caSize;
-    ushort caFlags;
-    ushort caIlluminantIndex;
-    ushort caRedGamma;
-    ushort caGreenGamma;
-    ushort caBlueGamma;
-    ushort caReferenceBlack;
-    ushort caReferenceWhite;
-    SHORT caContrast;
-    SHORT caBrightness;
-    SHORT caColorfulness;
-    SHORT caRedGreenTint;
-}
-
-alias COLORADJUSTMENT* LPCOLORADJUSTMENT;
-alias COLORADJUSTMENT TAGCOLORADJUSTMENT;
-alias COLORADJUSTMENT TCOLORADJUSTMENT;
-alias COLORADJUSTMENT* PCOLORADJUSTMENT;
-
-struct COLORMAP
-{
-    COLORREF from;
-    COLORREF _to;
-}
-
-alias COLORMAP* LPCOLORMAP;
-alias COLORMAP _COLORMAP;
-alias COLORMAP TCOLORMAP;
-alias COLORMAP* PCOLORMAP;
-
-struct DCB
-{
-    DWORD DCBlength;
-    DWORD BaudRate;
-    int flag0;
-    ushort wReserved;
-    ushort XonLim;
-    ushort XoffLim;
-    ubyte ByteSize;
-    ubyte Parity;
-    ubyte StopBits;
-    char XonChar;
-    char XoffChar;
-    char ErrorChar;
-    char EofChar;
-    char EvtChar;
-    ushort wReserved1;
-}
-
-alias DCB* LPDCB;
-alias DCB _DCB;
-alias DCB TDCB;
-alias DCB* PDCB;
-enum : DWORD {
-    bm_DCB_fBinary = (0x1),
-    bp_DCB_fBinary = (0),
-    bm_DCB_fParity = (0x2),
-    bp_DCB_fParity = (1),
-    bm_DCB_fOutxCtsFlow = (0x4),
-    bp_DCB_fOutxCtsFlow = (2),
-    bm_DCB_fOutxDsrFlow = (0x8),
-    bp_DCB_fOutxDsrFlow = (3),
-    bm_DCB_fDtrControl = (0x30),
-    bp_DCB_fDtrControl = (4),
-    bm_DCB_fDsrSensitivity = (0x40),
-    bp_DCB_fDsrSensitivity = (6),
-    bm_DCB_fTXContinueOnXoff = (0x80),
-    bp_DCB_fTXContinueOnXoff = (7),
-    bm_DCB_fOutX = (0x100),
-    bp_DCB_fOutX = (8),
-    bm_DCB_fInX = (0x200),
-    bp_DCB_fInX = (9),
-    bm_DCB_fErrorChar = (0x400),
-    bp_DCB_fErrorChar = (10),
-    bm_DCB_fNull = (0x800),
-    bp_DCB_fNull = (11),
-    bm_DCB_fRtsControl = (0x3000),
-    bp_DCB_fRtsControl = (12),
-    bm_DCB_fAbortOnError = (0x4000),
-    bp_DCB_fAbortOnError = (14),
-    bm_DCB_fDummy2 = (0xFFFF8000),
-    bp_DCB_fDummy2 = (15),
-}
-
-struct COMMCONFIG
-{
-    DWORD dwSize;
-    ushort wVersion;
-    ushort wReserved;
-    DCB dcb;
-    DWORD dwProviderSubType;
-    DWORD dwProviderOffset;
-    DWORD dwProviderSize;
-    WCHAR[1 + 0] wcProviderData;
-}
-
-alias COMMCONFIG* LPCOMMCONFIG;
-alias COMMCONFIG _COMM_CONFIG;
-alias COMMCONFIG TCOMMCONFIG;
-alias COMMCONFIG* PCOMMCONFIG;
-
-struct COMMPROP
-{
-    ushort wPacketLength;
-    ushort wPacketVersion;
-    DWORD dwServiceMask;
-    DWORD dwReserved1;
-    DWORD dwMaxTxQueue;
-    DWORD dwMaxRxQueue;
-    DWORD dwMaxBaud;
-    DWORD dwProvSubType;
-    DWORD dwProvCapabilities;
-    DWORD dwSettableParams;
-    DWORD dwSettableBaud;
-    ushort wSettableData;
-    ushort wSettableStopParity;
-    DWORD dwCurrentTxQueue;
-    DWORD dwCurrentRxQueue;
-    DWORD dwProvSpec1;
-    DWORD dwProvSpec2;
-    WCHAR[1 + 0] wcProvChar;
-}
-
-alias COMMPROP* LPCOMMPROP;
-alias COMMPROP _COMMPROP;
-alias COMMPROP TCOMMPROP;
-alias COMMPROP* PCOMMPROP;
-
-struct COMMTIMEOUTS
-{
-    DWORD ReadIntervalTimeout;
-    DWORD ReadTotalTimeoutMultiplier;
-    DWORD ReadTotalTimeoutConstant;
-    DWORD WriteTotalTimeoutMultiplier;
-    DWORD WriteTotalTimeoutConstant;
-}
-
-alias COMMTIMEOUTS* LPCOMMTIMEOUTS;
-alias COMMTIMEOUTS _COMMTIMEOUTS;
-alias COMMTIMEOUTS TCOMMTIMEOUTS;
-alias COMMTIMEOUTS* PCOMMTIMEOUTS;
-
-struct COMPAREITEMSTRUCT
-{
-    UINT CtlType;
-    UINT CtlID;
-    HWND hwndItem;
-    UINT itemID1;
-    DWORD itemData1;
-    UINT itemID2;
-    DWORD itemData2;
-}
-
-alias COMPAREITEMSTRUCT TAGCOMPAREITEMSTRUCT;
-alias COMPAREITEMSTRUCT TCOMPAREITEMSTRUCT;
-alias COMPAREITEMSTRUCT* PCOMPAREITEMSTRUCT;
-
-struct COMPCOLOR
-{
-    COLORREF crText;
-    COLORREF crBackground;
-    DWORD dwEffects;
-}
-
-alias COMPCOLOR TCOMPCOLOR;
-alias COMPCOLOR* PCOMPCOLOR;
-
-struct COMPOSITIONFORM
-{
-    DWORD dwStyle;
-    POINT ptCurrentPos;
-    RECT rcArea;
-}
-
-alias COMPOSITIONFORM* LPCOMPOSITIONFORM;
-alias COMPOSITIONFORM _TAGCOMPOSITIONFORM;
-alias COMPOSITIONFORM TCOMPOSITIONFORM;
-alias COMPOSITIONFORM* PCOMPOSITIONFORM;
-
-struct COMSTAT
-{
-    int flag0;
-    DWORD cbInQue;
-    DWORD cbOutQue;
-}
-
-alias COMSTAT* LPCOMSTAT;
-alias COMSTAT _COMSTAT;
-alias COMSTAT TCOMSTAT;
-alias COMSTAT* PCOMSTAT;
-enum : DWORD {
-    bm_COMSTAT_fCtsHold = (0x1),
-    bp_COMSTAT_fCtsHold = (0),
-    bm_COMSTAT_fDsrHold = (0x2),
-    bp_COMSTAT_fDsrHold = (1),
-    bm_COMSTAT_fRlsdHold = (0x4),
-    bp_COMSTAT_fRlsdHold = (2),
-    bm_COMSTAT_fXoffHold = (0x8),
-    bp_COMSTAT_fXoffHold = (3),
-    bm_COMSTAT_fXoffSent = (0x10),
-    bp_COMSTAT_fXoffSent = (4),
-    bm_COMSTAT_fEof = (0x20),
-    bp_COMSTAT_fEof = (5),
-    bm_COMSTAT_fTxim = (0x40),
-    bp_COMSTAT_fTxim = (6),
-    bm_COMSTAT_fReserved = (0xFFFFFF80),
-    bp_COMSTAT_fReserved = (7),
-}
-struct CONSOLE_CURSOR_INFO
-{
-    DWORD dwSize;
-    WINBOOL bVisible;
-}
-
-alias CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO;
-alias CONSOLE_CURSOR_INFO _CONSOLE_CURSOR_INFO;
-alias CONSOLE_CURSOR_INFO TCONSOLECURSORINFO;
-alias CONSOLE_CURSOR_INFO* PCONSOLECURSORINFO;
-alias CONSOLE_CURSOR_INFO TCURSORINFO;
-
-struct COORD
-{
-    SHORT X;
-    SHORT Y;
-}
-
-alias COORD _COORD;
-alias COORD TCOORD;
-alias COORD* PCOORD;
-
-struct SMALL_RECT
-{
-    SHORT Left;
-    SHORT Top;
-    SHORT Right;
-    SHORT Bottom;
-}
-
-alias SMALL_RECT _SMALL_RECT;
-alias SMALL_RECT TSMALL_RECT;
-alias SMALL_RECT* PSMALL_RECT;
-
-align(1) struct CONSOLE_SCREEN_BUFFER_INFO
-{
-    COORD dwSize;
-    COORD dwCursorPosition;
-    ushort wAttributes;
-    SMALL_RECT srWindow;
-    COORD dwMaximumWindowSize;
-}
-
-alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO;
-alias CONSOLE_SCREEN_BUFFER_INFO _CONSOLE_SCREEN_BUFFER_INFO;
-alias CONSOLE_SCREEN_BUFFER_INFO TCONSOLESCREENBUFFERINFO;
-alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLESCREENBUFFERINFO;
-
-struct FLOATING_SAVE_AREA
-{
-    DWORD ControlWord;
-    DWORD StatusWord;
-    DWORD TagWord;
-    DWORD ErrorOffset;
-    DWORD ErrorSelector;
-    DWORD DataOffset;
-    DWORD DataSelector;
-    ubyte[1 + 79] RegisterArea;
-    DWORD Cr0NpxState;
-}
-
-alias FLOATING_SAVE_AREA _FLOATING_SAVE_AREA;
-alias FLOATING_SAVE_AREA TFLOATINGSAVEAREA;
-alias FLOATING_SAVE_AREA* PFLOATINGSAVEAREA;
-
-enum : DWORD
-{
-//
-// The following flags control the contents of the CONTEXT structure.
-//
-    CONTEXT_i386 = 0x00010000,    // this assumes that i386 and
-    CONTEXT_i486 = 0x00010000,    // i486 have identical context records
-
-    CONTEXT_CONTROL =         (CONTEXT_i386 | 0x00000001), // SS:SP, CS:IP, FLAGS, BP
-    CONTEXT_INTEGER =         (CONTEXT_i386 | 0x00000002), // AX, BX, CX, DX, SI, DI
-    CONTEXT_SEGMENTS =        (CONTEXT_i386 | 0x00000004), // DS, ES, FS, GS
-    CONTEXT_FLOATING_POINT =  (CONTEXT_i386 | 0x00000008), // 387 state
-    CONTEXT_DEBUG_REGISTERS = (CONTEXT_i386 | 0x00000010), // DB 0-3,6,7
-
-    CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS),
-}
-
-struct CONTEXT
-{
-    DWORD ContextFlags;
-    DWORD Dr0;
-    DWORD Dr1;
-    DWORD Dr2;
-    DWORD Dr3;
-    DWORD Dr6;
-    DWORD Dr7;
-    FLOATING_SAVE_AREA FloatSave;
-    DWORD SegGs;
-    DWORD SegFs;
-    DWORD SegEs;
-    DWORD SegDs;
-    DWORD Edi;
-    DWORD Esi;
-    DWORD Ebx;
-    DWORD Edx;
-    DWORD Ecx;
-    DWORD Eax;
-    DWORD Ebp;
-    DWORD Eip;
-    DWORD SegCs;
-    DWORD EFlags;
-    DWORD Esp;
-    DWORD SegSs;
-}
-
-alias CONTEXT* LPCONTEXT;
-alias CONTEXT _CONTEXT;
-alias CONTEXT TCONTEXT;
-alias CONTEXT* PCONTEXT;
-
-struct LIST_ENTRY
-{
-    _LIST_ENTRY* Flink;
-    _LIST_ENTRY* Blink;
-}
-
-alias LIST_ENTRY _LIST_ENTRY;
-alias LIST_ENTRY TLISTENTRY;
-alias LIST_ENTRY* PLISTENTRY;
-
-struct CRITICAL_SECTION_DEBUG
-{
-    ushort _Type;
-    ushort CreatorBackTraceIndex;
-    _CRITICAL_SECTION* CriticalSection;
-    LIST_ENTRY ProcessLocksList;
-    DWORD EntryCount;
-    DWORD ContentionCount;
-    DWORD Depth;
-    PVOID[1 + 4] OwnerBackTrace;
-}
-
-alias CRITICAL_SECTION_DEBUG* LPCRITICAL_SECTION_DEBUG;
-alias CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
-alias CRITICAL_SECTION_DEBUG _CRITICAL_SECTION_DEBUG;
-alias CRITICAL_SECTION_DEBUG TCRITICALSECTIONDEBUG;
-alias CRITICAL_SECTION_DEBUG* PCRITICALSECTIONDEBUG;
-
-struct CRITICAL_SECTION
-{
-    PCRITICAL_SECTION_DEBUG DebugInfo;
-    LONG LockCount;
-    LONG RecursionCount;
-    HANDLE OwningThread;
-    HANDLE LockSemaphore;
-    DWORD Reserved;
-}
-
-alias CRITICAL_SECTION* LPCRITICAL_SECTION;
-alias CRITICAL_SECTION* PCRITICAL_SECTION;
-alias CRITICAL_SECTION _CRITICAL_SECTION;
-alias CRITICAL_SECTION TCRITICALSECTION;
-alias CRITICAL_SECTION* PCRITICALSECTION;
-
-struct SECURITY_QUALITY_OF_SERVICE
-{
-    DWORD Length;
-    SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
-    WINBOOL ContextTrackingMode;
-    ubyte EffectiveOnly;
-}
-
-alias SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE;
-alias SECURITY_QUALITY_OF_SERVICE _SECURITY_QUALITY_OF_SERVICE;
-alias SECURITY_QUALITY_OF_SERVICE TSECURITYQUALITYOFSERVICE;
-alias SECURITY_QUALITY_OF_SERVICE* PSECURITYQUALITYOFSERVICE;
-
-struct CONVCONTEXT
-{
-    UINT cb;
-    UINT wFlags;
-    UINT wCountryID;
-    int iCodePage;
-    DWORD dwLangID;
-    DWORD dwSecurity;
-    SECURITY_QUALITY_OF_SERVICE qos;
-}
-
-alias CONVCONTEXT TAGCONVCONTEXT;
-alias CONVCONTEXT TCONVCONTEXT;
-alias CONVCONTEXT* PCONVCONTEXT;
-
-struct CONVINFO
-{
-    DWORD cb;
-    DWORD hUser;
-    HCONV hConvPartner;
-    HSZ hszSvcPartner;
-    HSZ hszServiceReq;
-    HSZ hszTopic;
-    HSZ hszItem;
-    UINT wFmt;
-    UINT wType;
-    UINT wStatus;
-    UINT wConvst;
-    UINT wLastError;
-    HCONVLIST hConvList;
-    CONVCONTEXT ConvCtxt;
-    HWND _hwnd;
-    HWND hwndPartner;
-}
-
-alias CONVINFO TAGCONVINFO;
-alias CONVINFO TCONVINFO;
-alias CONVINFO* PCONVINFO;
-
-struct COPYDATASTRUCT
-{
-    DWORD dwData;
-    DWORD cbData;
-    PVOID lpData;
-}
-
-alias COPYDATASTRUCT TAGCOPYDATASTRUCT;
-alias COPYDATASTRUCT TCOPYDATASTRUCT;
-alias COPYDATASTRUCT* PCOPYDATASTRUCT;
-
-struct CPINFO
-{
-    UINT MaxCharSize;
-    ubyte[1 + MAX_DEFAULTCHAR-1] DefaultChar;
-    ubyte[1 + MAX_LEADBYTES-1] LeadByte;
-}
-
-alias CPINFO* LPCPINFO;
-alias CPINFO _CPINFO;
-alias CPINFO TCPINFO;
-alias CPINFO* PCPINFO;
-
-struct CPLINFO
-{
-    int idIcon;
-    int idName;
-    int idInfo;
-    LONG lData;
-}
-
-alias CPLINFO TAGCPLINFO;
-alias CPLINFO TCPLINFO;
-alias CPLINFO* PCPLINFO;
-
-struct CREATE_PROCESS_DEBUG_INFO
-{
-    HANDLE hFile;
-    HANDLE hProcess;
-    HANDLE hThread;
-    LPVOID lpBaseOfImage;
-    DWORD dwDebugInfoFileOffset;
-    DWORD nDebugInfoSize;
-    LPVOID lpThreadLocalBase;
-    LPTHREAD_START_ROUTINE lpStartAddress;
-    LPVOID lpImageName;
-    ushort fUnicode;
-}
-
-alias CREATE_PROCESS_DEBUG_INFO _CREATE_PROCESS_DEBUG_INFO;
-alias CREATE_PROCESS_DEBUG_INFO TCREATEPROCESSDEBUGINFO;
-alias CREATE_PROCESS_DEBUG_INFO* PCREATEPROCESSDEBUGINFO;
-
-struct CREATE_THREAD_DEBUG_INFO
-{
-    HANDLE hThread;
-    LPVOID lpThreadLocalBase;
-    LPTHREAD_START_ROUTINE lpStartAddress;
-}
-
-alias CREATE_THREAD_DEBUG_INFO _CREATE_THREAD_DEBUG_INFO;
-alias CREATE_THREAD_DEBUG_INFO TCREATETHREADDEBUGINFO;
-alias CREATE_THREAD_DEBUG_INFO* PCREATETHREADDEBUGINFO;
-
-struct CURRENCYFMT
-{
-    UINT NumDigits;
-    UINT LeadingZero;
-    UINT Grouping;
-    LPTSTR lpDecimalSep;
-    LPTSTR lpThousandSep;
-    UINT NegativeOrder;
-    UINT PositiveOrder;
-    LPTSTR lpCurrencySymbol;
-}
-
-alias CURRENCYFMT _CURRENCYFMT;
-alias CURRENCYFMT TCURRENCYFMT;
-alias CURRENCYFMT* PCURRENCYFMT;
-
-struct CURSORSHAPE
-{
-    int xHotSpot;
-    int yHotSpot;
-    int cx;
-    int cy;
-    int cbWidth;
-    ubyte Planes;
-    ubyte BitsPixel;
-}
-
-alias CURSORSHAPE* LPCURSORSHAPE;
-alias CURSORSHAPE TAGCURSORSHAPE;
-alias CURSORSHAPE TCURSORSHAPE;
-alias CURSORSHAPE* PCURSORSHAPE;
-
-struct CWPRETSTRUCT
-{
-    LRESULT lResult;
-    LPARAM lParam;
-    WPARAM wParam;
-    DWORD message;
-    HWND hwnd;
-}
-
-alias CWPRETSTRUCT TAGCWPRETSTRUCT;
-alias CWPRETSTRUCT TCWPRETSTRUCT;
-alias CWPRETSTRUCT* PCWPRETSTRUCT;
-
-struct CWPSTRUCT
-{
-    LPARAM lParam;
-    WPARAM wParam;
-    UINT message;
-    HWND hwnd;
-}
-
-alias CWPSTRUCT TAGCWPSTRUCT;
-alias CWPSTRUCT TCWPSTRUCT;
-alias CWPSTRUCT* PCWPSTRUCT;
-
-struct DATATYPES_INFO_1
-{
-    LPTSTR pName;
-}
-
-alias DATATYPES_INFO_1 _DATATYPES_INFO_1;
-alias DATATYPES_INFO_1 TDATATYPESINFO1;
-alias DATATYPES_INFO_1* PDATATYPESINFO1;
-
-struct DDEACK
-{
-    ushort flag0;
-}
-
-alias DDEACK TDDEACK;
-alias DDEACK* PDDEACK;
-enum : DWORD {
-    bm_DDEACK_bAppReturnCode = (0xFF),
-    bp_DDEACK_bAppReturnCode = (0),
-    bm_DDEACK_reserved = (0x3F00),
-    bp_DDEACK_reserved = (8),
-    bm_DDEACK_fBusy = (0x4000),
-    bp_DDEACK_fBusy = (14),
-    bm_DDEACK_fAck = (0x8000),
-    bp_DDEACK_fAck = (15),
-}
-
-struct DDEADVISE
-{
-    ushort flag0;
-    int cfFormat;
-}
-
-alias DDEADVISE TDDEADVISE;
-alias DDEADVISE* PDDEADVISE;
-enum : DWORD {
-    bm_DDEADVISE_reserved = (0x3FFF),
-    bp_DDEADVISE_reserved = (0),
-    bm_DDEADVISE_fDeferUpd = (0x4000),
-    bp_DDEADVISE_fDeferUpd = (14),
-    bm_DDEADVISE_fAckReq = (0x8000),
-    bp_DDEADVISE_fAckReq = (15),
-}
-
-struct DDEDATA
-{
-    ushort flag0;
-    int cfFormat;
-    ubyte[1 + 0] Value;
-}
-
-alias DDEDATA* PDDEDATA;
-enum : DWORD {
-    bm_DDEDATA_unused = (0xFFF),
-    bp_DDEDATA_unused = (0),
-    bm_DDEDATA_fResponse = (0x1000),
-    bp_DDEDATA_fResponse = (12),
-    bm_DDEDATA_fRelease = (0x2000),
-    bp_DDEDATA_fRelease = (13),
-    bm_DDEDATA_reserved = (0x4000),
-    bp_DDEDATA_reserved = (14),
-    bm_DDEDATA_fAckReq = (0x8000),
-    bp_DDEDATA_fAckReq = (15),
-}
-
-struct DDELN
-{
-    ushort flag0;
-    int cfFormat;
-}
-
-alias DDELN TDDELN;
-alias DDELN* PDDELN;
-enum : DWORD {
-    bm_DDELN_unused = (0x1FFF),
-    bp_DDELN_unused = (0),
-    bm_DDELN_fRelease = (0x2000),
-    bp_DDELN_fRelease = (13),
-    bm_DDELN_fDeferUpd = (0x4000),
-    bp_DDELN_fDeferUpd = (14),
-    bm_DDELN_fAckReq = (0x8000),
-    bp_DDELN_fAckReq = (15),
-}
-
-struct DDEML_MSG_HOOK_DATA
-{
-    UINT uiLo;
-    UINT uiHi;
-    DWORD cbData;
-    DWORD[1 + 7] Data;
-}
-
-alias DDEML_MSG_HOOK_DATA TAGDDEML_MSG_HOOK_DATA;
-alias DDEML_MSG_HOOK_DATA TDDEMLMSGHOOKDATA;
-alias DDEML_MSG_HOOK_DATA* PDDEMLMSGHOOKDATA;
-
-struct DDEPOKE
-{
-    ushort flag0;
-    int cfFormat;
-    ubyte[1 + 0] Value;
-}
-
-alias DDEPOKE TDDEPOKE;
-alias DDEPOKE* PDDEPOKE;
-enum : DWORD {
-    bm_DDEPOKE_unused = (0x1FFF),
-    bp_DDEPOKE_unused = (0),
-    bm_DDEPOKE_fRelease = (0x2000),
-    bp_DDEPOKE_fRelease = (13),
-    bm_DDEPOKE_fReserved = (0xC000),
-    bp_DDEPOKE_fReserved = (14),
-}
-struct DDEUP
-{
-    ushort flag0;
-    int cfFormat;
-    ubyte[1 + 0] rgb;
-}
-
-alias DDEUP TDDEUP;
-alias DDEUP* PDDEUP;
-
-enum : DWORD {
-    bm_DDEUP_unused = (0xFFF),
-    bp_DDEUP_unused = (0),
-    bm_DDEUP_fAck = (0x1000),
-    bp_DDEUP_fAck = (12),
-    bm_DDEUP_fRelease = (0x2000),
-    bp_DDEUP_fRelease = (13),
-    bm_DDEUP_fReserved = (0x4000),
-    bp_DDEUP_fReserved = (14),
-    bm_DDEUP_fAckReq = (0x8000),
-    bp_DDEUP_fAckReq = (15),
-}
-
-struct EXCEPTION_RECORD
-{
-    DWORD ExceptionCode;
-    DWORD ExceptionFlags;
-    _EXCEPTION_RECORD* ExceptionRecord;
-    PVOID ExceptionAddress;
-    DWORD NumberParameters;
-    DWORD[1 + EXCEPTION_MAXIMUM_PARAMETERS-1] ExceptionInformation;
-}
-
-alias EXCEPTION_RECORD* PEXCEPTION_RECORD;
-alias EXCEPTION_RECORD _EXCEPTION_RECORD;
-alias EXCEPTION_RECORD TEXCEPTIONRECORD;
-alias EXCEPTION_RECORD* PEXCEPTIONRECORD;
-
-struct EXCEPTION_DEBUG_INFO
-{
-    EXCEPTION_RECORD ExceptionRecord;
-    DWORD dwFirstChance;
-}
-
-alias EXCEPTION_DEBUG_INFO* PEXCEPTION_DEBUG_INFO;
-alias EXCEPTION_DEBUG_INFO _EXCEPTION_DEBUG_INFO;
-alias EXCEPTION_DEBUG_INFO TEXCEPTIONDEBUGINFO;
-alias EXCEPTION_DEBUG_INFO* PEXCEPTIONDEBUGINFO;
-
-struct EXIT_PROCESS_DEBUG_INFO
-{
-    DWORD dwExitCode;
-}
-
-alias EXIT_PROCESS_DEBUG_INFO _EXIT_PROCESS_DEBUG_INFO;
-alias EXIT_PROCESS_DEBUG_INFO TEXITPROCESSDEBUGINFO;
-alias EXIT_PROCESS_DEBUG_INFO* PEXITPROCESSDEBUGINFO;
-
-struct EXIT_THREAD_DEBUG_INFO
-{
-    DWORD dwExitCode;
-}
-
-alias EXIT_THREAD_DEBUG_INFO _EXIT_THREAD_DEBUG_INFO;
-alias EXIT_THREAD_DEBUG_INFO TEXITTHREADDEBUGINFO;
-alias EXIT_THREAD_DEBUG_INFO* PEXITTHREADDEBUGINFO;
-
-struct LOAD_DLL_DEBUG_INFO
-{
-    HANDLE hFile;
-    LPVOID lpBaseOfDll;
-    DWORD dwDebugInfoFileOffset;
-    DWORD nDebugInfoSize;
-    LPVOID lpImageName;
-    ushort fUnicode;
-}
-
-alias LOAD_DLL_DEBUG_INFO _LOAD_DLL_DEBUG_INFO;
-alias LOAD_DLL_DEBUG_INFO TLOADDLLDEBUGINFO;
-alias LOAD_DLL_DEBUG_INFO* PLOADDLLDEBUGINFO;
-
-struct UNLOAD_DLL_DEBUG_INFO
-{
-    LPVOID lpBaseOfDll;
-}
-
-alias UNLOAD_DLL_DEBUG_INFO _UNLOAD_DLL_DEBUG_INFO;
-alias UNLOAD_DLL_DEBUG_INFO TUNLOADDLLDEBUGINFO;
-alias UNLOAD_DLL_DEBUG_INFO* PUNLOADDLLDEBUGINFO;
-
-struct OUTPUT_DEBUG_STRING_INFO
-{
-    LPSTR lpDebugStringData;
-    ushort fUnicode;
-    ushort nDebugStringLength;
-}
-
-alias OUTPUT_DEBUG_STRING_INFO _OUTPUT_DEBUG_STRING_INFO;
-alias OUTPUT_DEBUG_STRING_INFO TOUTPUTDEBUGSTRINGINFO;
-alias OUTPUT_DEBUG_STRING_INFO* POUTPUTDEBUGSTRINGINFO;
-
-struct RIP_INFO
-{
-    DWORD dwError;
-    DWORD dwType;
-}
-
-alias RIP_INFO _RIP_INFO;
-alias RIP_INFO TRIPINFO;
-alias RIP_INFO* PRIPINFO;
-
-struct DEBUG_EVENT
-{
-    DWORD dwDebugEventCode;
-    DWORD dwProcessId;
-    DWORD dwThreadId;
-
-    union
-    {
-        struct
-        {
-            EXCEPTION_DEBUG_INFO Exception;
-        }
-        struct
-        {
-            CREATE_THREAD_DEBUG_INFO CreateThread;
-        }
-        struct
-        {
-            CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
-        }
-        struct
-        {
-            EXIT_THREAD_DEBUG_INFO ExitThread;
-        }
-        struct
-        {
-            EXIT_PROCESS_DEBUG_INFO ExitProcess;
-        }
-        struct
-        {
-            LOAD_DLL_DEBUG_INFO LoadDll;
-        }
-        struct
-        {
-            UNLOAD_DLL_DEBUG_INFO UnloadDll;
-        }
-        struct
-        {
-            OUTPUT_DEBUG_STRING_INFO DebugString;
-        }
-        struct
-        {
-            RIP_INFO RipInfo;
-        }
-    }
-}
-
-alias DEBUG_EVENT* LPDEBUG_EVENT;
-alias DEBUG_EVENT _DEBUG_EVENT;
-alias DEBUG_EVENT TDEBUGEVENT;
-alias DEBUG_EVENT* PDEBUGEVENT;
-
-struct DEBUGHOOKINFO
-{
-    DWORD idThread;
-    DWORD idThreadInstaller;
-    LPARAM lParam;
-    WPARAM wParam;
-    int code;
-}
-
-alias DEBUGHOOKINFO TAGDEBUGHOOKINFO;
-alias DEBUGHOOKINFO TDEBUGHOOKINFO;
-alias DEBUGHOOKINFO* PDEBUGHOOKINFO;
-
-struct DELETEITEMSTRUCT
-{
-    UINT CtlType;
-    UINT CtlID;
-    UINT itemID;
-    HWND hwndItem;
-    UINT itemData;
-}
-
-alias DELETEITEMSTRUCT TAGDELETEITEMSTRUCT;
-alias DELETEITEMSTRUCT TDELETEITEMSTRUCT;
-alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT;
-
-struct DEV_BROADCAST_HDR
-{
-    ULONG dbch_size;
-    ULONG dbch_devicetype;
-    ULONG dbch_reserved;
-}
-
-alias DEV_BROADCAST_HDR* PDEV_BROADCAST_HDR;
-alias DEV_BROADCAST_HDR _DEV_BROADCAST_HDR;
-alias DEV_BROADCAST_HDR TDEVBROADCASTHDR;
-alias DEV_BROADCAST_HDR* PDEVBROADCASTHDR;
-
-struct DEV_BROADCAST_OEM
-{
-    ULONG dbco_size;
-    ULONG dbco_devicetype;
-    ULONG dbco_reserved;
-    ULONG dbco_identifier;
-    ULONG dbco_suppfunc;
-}
-
-alias DEV_BROADCAST_OEM* PDEV_BROADCAST_OEM;
-alias DEV_BROADCAST_OEM _DEV_BROADCAST_OEM;
-alias DEV_BROADCAST_OEM TDEVBROADCASTOEM;
-alias DEV_BROADCAST_OEM* PDEVBROADCASTOEM;
-
-struct DEV_BROADCAST_PORT
-{
-    ULONG dbcp_size;
-    ULONG dbcp_devicetype;
-    ULONG dbcp_reserved;
-    char[1 + 0] dbcp_name;
-}
-
-alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT;
-alias DEV_BROADCAST_PORT _DEV_BROADCAST_PORT;
-alias DEV_BROADCAST_PORT TDEVBROADCASTPORT;
-alias DEV_BROADCAST_PORT* PDEVBROADCASTPORT;
-
-struct _DEV_BROADCAST_USERDEFINED
-{
-    _DEV_BROADCAST_HDR dbud_dbh;
-    char[1 + 0] dbud_szName;
-    ubyte[1 + 0] dbud_rgbUserDefined;
-}
-
-alias _DEV_BROADCAST_USERDEFINED TDEVBROADCASTUSERDEFINED;
-alias _DEV_BROADCAST_USERDEFINED* PDEVBROADCASTUSERDEFINED;
-
-struct DEV_BROADCAST_VOLUME
-{
-    ULONG dbcv_size;
-    ULONG dbcv_devicetype;
-    ULONG dbcv_reserved;
-    ULONG dbcv_unitmask;
-    USHORT dbcv_flags;
-}
-
-alias DEV_BROADCAST_VOLUME* PDEV_BROADCAST_VOLUME;
-alias DEV_BROADCAST_VOLUME _DEV_BROADCAST_VOLUME;
-alias DEV_BROADCAST_VOLUME TDEVBROADCASTVOLUME;
-alias DEV_BROADCAST_VOLUME* PDEVBROADCASTVOLUME;
-
-struct DEVMODE
-{
-    BCHAR[1 + CCHDEVICENAME-1] dmDeviceName;
-    ushort dmSpecVersion;
-    ushort dmDriverVersion;
-    ushort dmSize;
-    ushort dmDriverExtra;
-    DWORD dmFields;
-    int dmOrientation;
-    int dmPaperSize;
-    int dmPaperLength;
-    int dmPaperWidth;
-    int dmScale;
-    int dmCopies;
-    int dmDefaultSource;
-    int dmPrintQuality;
-    int dmColor;
-    int dmDuplex;
-    int dmYResolution;
-    int dmTTOption;
-    int dmCollate;
-    BCHAR[1 + CCHFORMNAME-1] dmFormName;
-    ushort dmLogPixels;
-    DWORD dmBitsPerPel;
-    DWORD dmPelsWidth;
-    DWORD dmPelsHeight;
-    DWORD dmDisplayFlags;
-    DWORD dmDisplayFrequency;
-    DWORD dmICMMethod;
-    DWORD dmICMIntent;
-    DWORD dmMediaType;
-    DWORD dmDitherType;
-    DWORD dmICCManufacturer;
-    DWORD dmICCModel;
-}
-
-alias DEVMODE* LPDEVMODE;
-alias DEVMODE _DEVICEMODE;
-alias DEVMODE DEVICEMODE;
-alias DEVMODE TDEVICEMODE;
-alias DEVMODE TDEVICEMODEA;
-alias DEVMODE TDEVMODE;
-alias DEVMODE* PDEVMODE;
-
-struct DEVNAMES
-{
-    ushort wDriverOffset;
-    ushort wDeviceOffset;
-    ushort wOutputOffset;
-    ushort wDefault;
-}
-
-alias DEVNAMES* LPDEVNAMES;
-alias DEVNAMES TAGDEVNAMES;
-alias DEVNAMES TDEVNAMES;
-alias DEVNAMES* PDEVNAMES;
-
-struct DIBSECTION
-{
-    BITMAP dsBm;
-    BITMAPINFOHEADER dsBmih;
-    DWORD[1 + 2] dsBitfields;
-    HANDLE dshSection;
-    DWORD dsOffset;
-}
-
-alias DIBSECTION TAGDIBSECTION;
-alias DIBSECTION TDIBSECTION;
-alias DIBSECTION* PDIBSECTION;
-
-union LARGE_INTEGER
-{
-    struct
-    {
-        DWORD LowPart;
-        LONG HighPart;
-    };
-    struct u
-    {
-        DWORD LowPart;
-        LONG HighPart;
-    };
-    LONGLONG QuadPart;
-}
-
-alias LARGE_INTEGER* PLARGE_INTEGER;
-alias LARGE_INTEGER _LARGE_INTEGER;
-alias LARGE_INTEGER TLARGEINTEGER;
-alias LARGE_INTEGER* PLARGEINTEGER;
-
-struct DISK_GEOMETRY
-{
-    LARGE_INTEGER Cylinders;
-    MEDIA_TYPE MediaType;
-    DWORD TracksPerCylinder;
-    DWORD SectorsPerTrack;
-    DWORD BytesPerSector;
-}
-
-alias DISK_GEOMETRY _DISK_GEOMETRY;
-alias DISK_GEOMETRY TDISKGEOMETRY;
-alias DISK_GEOMETRY* PDISKGEOMETRY;
-
-struct DISK_PERFORMANCE
-{
-    LARGE_INTEGER BytesRead;
-    LARGE_INTEGER BytesWritten;
-    LARGE_INTEGER ReadTime;
-    LARGE_INTEGER WriteTime;
-    DWORD ReadCount;
-    DWORD WriteCount;
-    DWORD QueueDepth;
-}
-
-alias DISK_PERFORMANCE _DISK_PERFORMANCE;
-alias DISK_PERFORMANCE TDISKPERFORMANCE;
-alias DISK_PERFORMANCE* PDISKPERFORMANCE;
-
-align(1) struct DLGITEMTEMPLATE
-{
-    DWORD style;
-    DWORD dwExtendedStyle;
-    int x;
-    int y;
-    int cx;
-    int cy;
-    ushort id;
-}
-
-alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATE;
-alias DLGITEMTEMPLATE TDLGITEMTEMPLATE;
-alias DLGITEMTEMPLATE* PDLGITEMTEMPLATE;
-
-align(1) struct DLGTEMPLATE
-{
-    DWORD style;
-    DWORD dwExtendedStyle;
-    ushort cdit;
-    int x;
-    int y;
-    int cx;
-    int cy;
-}
-
-alias DLGTEMPLATE* LPDLGTEMPLATE;
-alias DLGTEMPLATE* LPCDLGTEMPLATE;
-alias DLGTEMPLATE TDLGTEMPLATE;
-alias DLGTEMPLATE* PDLGTEMPLATE;
-
-struct DOC_INFO_1
-{
-    LPTSTR pDocName;
-    LPTSTR pOutputFile;
-    LPTSTR pDatatype;
-}
-
-alias DOC_INFO_1 _DOC_INFO_1;
-alias DOC_INFO_1 TDOCINFO1;
-alias DOC_INFO_1* PDOCINFO1;
-
-struct DOC_INFO_2
-{
-    LPTSTR pDocName;
-    LPTSTR pOutputFile;
-    LPTSTR pDatatype;
-    DWORD dwMode;
-    DWORD JobId;
-}
-
-alias DOC_INFO_2 _DOC_INFO_2;
-alias DOC_INFO_2 TDOCINFO2;
-alias DOC_INFO_2* PDOCINFO2;
-
-struct DOCINFOA
-{
-    int     cbSize;
-    LPCSTR   lpszDocName;
-    LPCSTR   lpszOutput;
-    LPCSTR   lpszDatatype;
-    DWORD    fwType;
-}
-alias DOCINFOA TDOCINFOA;
-
-struct DOCINFOW
-{
-    int     cbSize;
-    LPCWSTR  lpszDocName;
-    LPCWSTR  lpszOutput;
-    LPCWSTR  lpszDatatype;
-    DWORD    fwType;
-}
-alias DOCINFOW TDOCINFOW;
-
-version(Win32SansUnicode)
-{
-    alias DOCINFOA DOCINFO;
-}
-else
-{
-    alias DOCINFOW DOCINFO;
-}
-alias DOCINFO TDOCINFO;
-alias DOCINFO* LPDOCINFO;
-alias DOCINFO* PDOCINFO;
-
-struct DRAGLISTINFO
-{
-    UINT uNotification;
-    HWND hWnd;
-    POINT ptCursor;
-}
-
-alias DRAGLISTINFO* LPDRAGLISTINFO;
-alias DRAGLISTINFO TDRAGLISTINFO;
-alias DRAGLISTINFO* PDRAGLISTINFO;
-
-struct DRAWITEMSTRUCT
-{
-    UINT CtlType;
-    UINT CtlID;
-    UINT itemID;
-    UINT itemAction;
-    UINT itemState;
-    HWND hwndItem;
-    HDC hDC;
-    RECT rcItem;
-    DWORD itemData;
-}
-
-alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT;
-alias DRAWITEMSTRUCT TAGDRAWITEMSTRUCT;
-alias DRAWITEMSTRUCT TDRAWITEMSTRUCT;
-alias DRAWITEMSTRUCT* PDRAWITEMSTRUCT;
-
-struct DRAWTEXTPARAMS
-{
-    UINT cbSize;
-    int iTabLength;
-    int iLeftMargin;
-    int iRightMargin;
-    UINT uiLengthDrawn;
-}
-
-alias DRAWTEXTPARAMS* LPDRAWTEXTPARAMS;
-alias DRAWTEXTPARAMS TDRAWTEXTPARAMS;
-alias DRAWTEXTPARAMS* PDRAWTEXTPARAMS;
-
-struct PARTITION_INFORMATION
-{
-    ubyte PartitionType;
-    ubyte BootIndicator;
-    ubyte RecognizedPartition;
-    ubyte RewritePartition;
-    LARGE_INTEGER StartingOffset;
-    LARGE_INTEGER PartitionLength;
-    LARGE_INTEGER HiddenSectors;
-}
-
-alias PARTITION_INFORMATION _PARTITION_INFORMATION;
-alias PARTITION_INFORMATION TPARTITIONINFORMATION;
-alias PARTITION_INFORMATION* PPARTITIONINFORMATION;
-
-struct DRIVE_LAYOUT_INFORMATION
-{
-    DWORD PartitionCount;
-    DWORD Signature;
-    PARTITION_INFORMATION[1 + 0] PartitionEntry;
-}
-
-alias DRIVE_LAYOUT_INFORMATION _DRIVE_LAYOUT_INFORMATION;
-alias DRIVE_LAYOUT_INFORMATION TDRIVELAYOUTINFORMATION;
-alias DRIVE_LAYOUT_INFORMATION* PDRIVELAYOUTINFORMATION;
-
-struct DRIVER_INFO_1
-{
-    LPTSTR pName;
-}
-
-alias DRIVER_INFO_1 _DRIVER_INFO_1;
-alias DRIVER_INFO_1 TDRIVERINFO1;
-alias DRIVER_INFO_1* PDRIVERINFO1;
-
-struct DRIVER_INFO_2
-{
-    DWORD cVersion;
-    LPTSTR pName;
-    LPTSTR pEnvironment;
-    LPTSTR pDriverPath;
-    LPTSTR pDataFile;
-    LPTSTR pConfigFile;
-}
-
-alias DRIVER_INFO_2 _DRIVER_INFO_2;
-alias DRIVER_INFO_2 TDRIVERINFO2;
-alias DRIVER_INFO_2* PDRIVERINFO2;
-
-struct DRIVER_INFO_3
-{
-    DWORD cVersion;
-    LPTSTR pName;
-    LPTSTR pEnvironment;
-    LPTSTR pDriverPath;
-    LPTSTR pDataFile;
-    LPTSTR pConfigFile;
-    LPTSTR pHelpFile;
-    LPTSTR pDependentFiles;
-    LPTSTR pMonitorName;
-    LPTSTR pDefaultDataType;
-}
-
-alias DRIVER_INFO_3 _DRIVER_INFO_3;
-alias DRIVER_INFO_3 TDRIVERINFO3;
-alias DRIVER_INFO_3* PDRIVERINFO3;
-
-struct EDITSTREAM
-{
-    DWORD dwCookie;
-    DWORD dwError;
-    EDITSTREAMCALLBACK pfnCallback;
-}
-
-alias EDITSTREAM _EDITSTREAM;
-alias EDITSTREAM TEDITSTREAM;
-alias EDITSTREAM* PEDITSTREAM;
-
-struct EMR
-{
-    DWORD iType;
-    DWORD nSize;
-}
-
-alias EMR TAGEMR;
-alias EMR TEMR;
-alias EMR* PEMR;
-
-struct EMRANGLEARC
-{
-    EMR emr;
-    POINTL ptlCenter;
-    DWORD nRadius;
-    FLOAT eStartAngle;
-    FLOAT eSweepAngle;
-}
-
-alias EMRANGLEARC TAGEMRANGLEARC;
-alias EMRANGLEARC TEMRANGLEARC;
-alias EMRANGLEARC* PEMRANGLEARC;
-
-struct EMRARC
-{
-    EMR emr;
-    RECTL rclBox;
-    POINTL ptlStart;
-    POINTL ptlEnd;
-}
-
-alias EMRARC TAGEMRARC;
-alias EMRARC TEMRARC;
-alias EMRARC* PEMRARC;
-alias EMRARC EMRARCTO;
-alias EMRARC TEMRARCTO;
-alias EMRARC* PEMRARCTO;
-alias EMRARC EMRCHORD;
-alias EMRARC TEMRCHORD;
-alias EMRARC* PEMRCHORD;
-alias EMRARC EMRPIE;
-alias EMRARC TEMRPIE;
-alias EMRARC* PEMRPIE;
-
-struct XFORM
-{
-    FLOAT eM11;
-    FLOAT eM12;
-    FLOAT eM21;
-    FLOAT eM22;
-    FLOAT eDx;
-    FLOAT eDy;
-}
-
-alias XFORM* LPXFORM;
-alias XFORM _XFORM;
-alias XFORM TXFORM;
-alias XFORM* PXFORM;
-
-struct EMRBITBLT
-{
-    EMR emr;
-    RECTL rclBounds;
-    LONG xDest;
-    LONG yDest;
-    LONG cxDest;
-    LONG cyDest;
-    DWORD dwRop;
-    LONG xSrc;
-    LONG ySrc;
-    XFORM xformSrc;
-    COLORREF crBkColorSrc;
-    DWORD iUsageSrc;
-    DWORD offBmiSrc;
-    DWORD offBitsSrc;
-    DWORD cbBitsSrc;
-}
-
-alias EMRBITBLT TAGEMRBITBLT;
-alias EMRBITBLT TEMRBITBLT;
-alias EMRBITBLT* PEMRBITBLT;
-
-struct LOGBRUSH
-{
-    UINT lbStyle;
-    COLORREF lbColor;
-    LONG lbHatch;
-}
-
-alias LOGBRUSH TAGLOGBRUSH;
-alias LOGBRUSH TLOGBRUSH;
-alias LOGBRUSH* PLOGBRUSH;
-
-struct EMRCREATEBRUSHINDIRECT
-{
-    EMR emr;
-    DWORD ihBrush;
-    LOGBRUSH lb;
-}
-
-alias EMRCREATEBRUSHINDIRECT TAGEMRCREATEBRUSHINDIRECT;
-alias EMRCREATEBRUSHINDIRECT TEMRCREATEBRUSHINDIRECT;
-alias EMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT;
-alias LONG LCSCSTYPE;
-alias LONG LCSGAMUTMATCH;
-
-struct LOGCOLORSPACE
-{
-    DWORD lcsSignature;
-    DWORD lcsVersion;
-    DWORD lcsSize;
-    LCSCSTYPE lcsCSType;
-    LCSGAMUTMATCH lcsIntent;
-    CIEXYZTRIPLE lcsEndpoints;
-    DWORD lcsGammaRed;
-    DWORD lcsGammaGreen;
-    DWORD lcsGammaBlue;
-    TCHAR[1 + MAX_PATH-1] lcsFilename;
-}
-
-alias LOGCOLORSPACE* LPLOGCOLORSPACE;
-alias LOGCOLORSPACE TAGLOGCOLORSPACE;
-alias LOGCOLORSPACE TLOGCOLORSPACE;
-alias LOGCOLORSPACE TLOGCOLORSPACEA;
-alias LOGCOLORSPACE* PLOGCOLORSPACE;
-
-struct EMRCREATECOLORSPACE
-{
-    EMR emr;
-    DWORD ihCS;
-    LOGCOLORSPACE lcs;
-}
-
-alias EMRCREATECOLORSPACE TAGEMRCREATECOLORSPACE;
-alias EMRCREATECOLORSPACE TEMRCREATECOLORSPACE;
-alias EMRCREATECOLORSPACE* PEMRCREATECOLORSPACE;
-
-struct EMRCREATEDIBPATTERNBRUSHPT
-{
-    EMR emr;
-    DWORD ihBrush;
-    DWORD iUsage;
-    DWORD offBmi;
-    DWORD cbBmi;
-    DWORD offBits;
-    DWORD cbBits;
-}
-
-alias EMRCREATEDIBPATTERNBRUSHPT TAGEMRCREATEDIBPATTERNBRUSHPT;
-alias EMRCREATEDIBPATTERNBRUSHPT TEMRCREATEDIBPATTERNBRUSHPT;
-alias EMRCREATEDIBPATTERNBRUSHPT PEMRCREATEDIBPATTERNBRUSHPT;
-
-struct EMRCREATEMONOBRUSH
-{
-    EMR emr;
-    DWORD ihBrush;
-    DWORD iUsage;
-    DWORD offBmi;
-    DWORD cbBmi;
-    DWORD offBits;
-    DWORD cbBits;
-}
-
-alias EMRCREATEMONOBRUSH TAGEMRCREATEMONOBRUSH;
-alias EMRCREATEMONOBRUSH TEMRCREATEMONOBRUSH;
-alias EMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH;
-
-struct PALETTEENTRY
-{
-    ubyte peRed;
-    ubyte peGreen;
-    ubyte peBlue;
-    ubyte peFlags;
-}
-
-alias PALETTEENTRY* LPPALETTEENTRY;
-alias PALETTEENTRY TAGPALETTEENTRY;
-alias PALETTEENTRY TPALETTEENTRY;
-alias PALETTEENTRY* PPALETTEENTRY;
-
-struct LOGPALETTE
-{
-    ushort palVersion;
-    ushort palNumEntries;
-    PALETTEENTRY[1 + 0] palPalEntry;
-}
-
-alias LOGPALETTE* LPLOGPALETTE;
-alias LOGPALETTE TAGLOGPALETTE;
-alias LOGPALETTE TLOGPALETTE;
-alias LOGPALETTE* PLOGPALETTE;
-
-struct EMRCREATEPALETTE
-{
-    EMR emr;
-    DWORD ihPal;
-    LOGPALETTE lgpl;
-}
-
-alias EMRCREATEPALETTE TAGEMRCREATEPALETTE;
-alias EMRCREATEPALETTE TEMRCREATEPALETTE;
-alias EMRCREATEPALETTE* PEMRCREATEPALETTE;
-
-struct LOGPEN
-{
-    UINT lopnStyle;
-    POINT lopnWidth;
-    COLORREF lopnColor;
-}
-
-alias LOGPEN TAGLOGPEN;
-alias LOGPEN TLOGPEN;
-alias LOGPEN* PLOGPEN;
-
-struct EMRCREATEPEN
-{
-    EMR emr;
-    DWORD ihPen;
-    LOGPEN lopn;
-}
-
-alias EMRCREATEPEN TAGEMRCREATEPEN;
-alias EMRCREATEPEN TEMRCREATEPEN;
-alias EMRCREATEPEN* PEMRCREATEPEN;
-
-struct EMRELLIPSE
-{
-    EMR emr;
-    RECTL rclBox;
-}
-
-alias EMRELLIPSE TAGEMRELLIPSE;
-alias EMRELLIPSE TEMRELLIPSE;
-alias EMRELLIPSE* PEMRELLIPSE;
-alias EMRELLIPSE EMRRECTANGLE;
-alias EMRELLIPSE TEMRRECTANGLE;
-alias EMRELLIPSE* PEMRRECTANGLE;
-
-struct EMREOF
-{
-    EMR emr;
-    DWORD nPalEntries;
-    DWORD offPalEntries;
-    DWORD nSizeLast;
-}
-
-alias EMREOF TAGEMREOF;
-alias EMREOF TEMREOF;
-alias EMREOF* PEMREOF;
-
-struct EMREXCLUDECLIPRECT
-{
-    EMR emr;
-    RECTL rclClip;
-}
-
-alias EMREXCLUDECLIPRECT TAGEMREXCLUDECLIPRECT;
-alias EMREXCLUDECLIPRECT TEMREXCLUDECLIPRECT;
-alias EMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT;
-alias EMREXCLUDECLIPRECT EMRINTERSECTCLIPRECT;
-alias EMREXCLUDECLIPRECT TEMRINTERSECTCLIPRECT;
-alias EMREXCLUDECLIPRECT* PEMRINTERSECTCLIPRECT;
-
-struct PANOSE
-{
-    ubyte bFamilyType;
-    ubyte bSerifStyle;
-    ubyte bWeight;
-    ubyte bProportion;
-    ubyte bContrast;
-    ubyte bStrokeVariation;
-    ubyte bArmStyle;
-    ubyte bLetterform;
-    ubyte bMidline;
-    ubyte bXHeight;
-}
-
-alias PANOSE TAGPANOSE;
-alias PANOSE TPANOSE;
-alias PANOSE* PPANOSE;
-
-struct EXTLOGFONT
-{
-    LOGFONT elfLogFont;
-    BCHAR[1 + LF_FULLFACESIZE-1] elfFullName;
-    BCHAR[1 + LF_FACESIZE-1] elfStyle;
-    DWORD elfVersion;
-    DWORD elfStyleSize;
-    DWORD elfMatch;
-    DWORD elfReserved;
-    ubyte[1 + ELF_VENDOR_SIZE-1] elfVendorId;
-    DWORD elfCulture;
-    PANOSE elfPanose;
-}
-
-alias EXTLOGFONT TAGEXTLOGFONT;
-alias EXTLOGFONT TEXTLOGFONT;
-alias EXTLOGFONT* PEXTLOGFONT;
-
-struct EMREXTCREATEFONTINDIRECTW
-{
-    EMR emr;
-    DWORD ihFont;
-    EXTLOGFONT elfw;
-}
-
-alias EMREXTCREATEFONTINDIRECTW TAGEMREXTCREATEFONTINDIRECTW;
-alias EMREXTCREATEFONTINDIRECTW TEMREXTCREATEFONTINDIRECTW;
-alias EMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW;
-
-struct EXTLOGPEN
-{
-    UINT elpPenStyle;
-    UINT elpWidth;
-    UINT elpBrushStyle;
-    COLORREF elpColor;
-    LONG elpHatch;
-    DWORD elpNumEntries;
-    DWORD[1 + 0] elpStyleEntry;
-}
-
-alias EXTLOGPEN TAGEXTLOGPEN;
-alias EXTLOGPEN TEXTLOGPEN;
-alias EXTLOGPEN* PEXTLOGPEN;
-
-struct EMREXTCREATEPEN
-{
-    EMR emr;
-    DWORD ihPen;
-    DWORD offBmi;
-    DWORD cbBmi;
-    DWORD offBits;
-    DWORD cbBits;
-    EXTLOGPEN elp;
-}
-
-alias EMREXTCREATEPEN TAGEMREXTCREATEPEN;
-alias EMREXTCREATEPEN TEMREXTCREATEPEN;
-alias EMREXTCREATEPEN* PEMREXTCREATEPEN;
-
-struct EMREXTFLOODFILL
-{
-    EMR emr;
-    POINTL ptlStart;
-    COLORREF crColor;
-    DWORD iMode;
-}
-
-alias EMREXTFLOODFILL TAGEMREXTFLOODFILL;
-alias EMREXTFLOODFILL TEMREXTFLOODFILL;
-alias EMREXTFLOODFILL* PEMREXTFLOODFILL;
-
-struct EMREXTSELECTCLIPRGN
-{
-    EMR emr;
-    DWORD cbRgnData;
-    DWORD iMode;
-    ubyte[1 + 0] RgnData;
-}
-
-alias EMREXTSELECTCLIPRGN TAGEMREXTSELECTCLIPRGN;
-alias EMREXTSELECTCLIPRGN TEMREXTSELECTCLIPRGN;
-alias EMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN;
-
-struct EMRTEXT
-{
-    POINTL ptlReference;
-    DWORD nChars;
-    DWORD offString;
-    DWORD fOptions;
-    RECTL rcl;
-    DWORD offDx;
-}
-
-alias EMRTEXT TAGEMRTEXT;
-alias EMRTEXT TEMRTEXT;
-alias EMRTEXT* PEMRTEXT;
-
-struct EMREXTTEXTOUTA
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD iGraphicsMode;
-    FLOAT exScale;
-    FLOAT eyScale;
-    EMRTEXT emrtext;
-}
-
-alias EMREXTTEXTOUTA TAGEMREXTTEXTOUTA;
-alias EMREXTTEXTOUTA TEMREXTTEXTOUTA;
-alias EMREXTTEXTOUTA* PEMREXTTEXTOUTA;
-alias EMREXTTEXTOUTA EMREXTTEXTOUTW;
-alias EMREXTTEXTOUTA TEMREXTTEXTOUTW;
-alias EMREXTTEXTOUTA* PEMREXTTEXTOUTW;
-
-struct EMRFILLPATH
-{
-    EMR emr;
-    RECTL rclBounds;
-}
-
-alias EMRFILLPATH TAGEMRFILLPATH;
-alias EMRFILLPATH TEMRFILLPATH;
-alias EMRFILLPATH* PEMRFILLPATH;
-alias EMRFILLPATH EMRSTROKEANDFILLPATH;
-alias EMRFILLPATH TEMRSTROKEANDFILLPATH;
-alias EMRFILLPATH* PEMRSTROKEANDFILLPATH;
-alias EMRFILLPATH EMRSTROKEPATH;
-alias EMRFILLPATH TEMRSTROKEPATH;
-alias EMRFILLPATH* PEMRSTROKEPATH;
-
-struct EMRFILLRGN
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD cbRgnData;
-    DWORD ihBrush;
-    ubyte[1 + 0] RgnData;
-}
-
-alias EMRFILLRGN TAGEMRFILLRGN;
-alias EMRFILLRGN TEMRFILLRGN;
-alias EMRFILLRGN* PEMRFILLRGN;
-
-struct EMRFORMAT
-{
-    DWORD dSignature;
-    DWORD nVersion;
-    DWORD cbData;
-    DWORD offData;
-}
-
-alias EMRFORMAT TAGEMRFORMAT;
-alias EMRFORMAT TEMRFORMAT;
-alias EMRFORMAT* PEMRFORMAT;
-
-struct SIZE
-{
-    LONG cx;
-    LONG cy;
-}
-
-alias SIZE* LPSIZE;
-alias SIZE TAGSIZE;
-alias SIZE TSIZE;
-alias SIZE* PSIZE;
-alias SIZE SIZEL;
-alias SIZE TSIZEL;
-alias SIZE* PSIZEL;
-alias SIZE* LPSIZEL;
-
-struct EMRFRAMERGN
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD cbRgnData;
-    DWORD ihBrush;
-    SIZEL szlStroke;
-    ubyte[1 + 0] RgnData;
-}
-
-alias EMRFRAMERGN TAGEMRFRAMERGN;
-alias EMRFRAMERGN TEMRFRAMERGN;
-alias EMRFRAMERGN* PEMRFRAMERGN;
-
-struct EMRGDICOMMENT
-{
-    EMR emr;
-    DWORD cbData;
-    ubyte[1 + 0] Data;
-}
-
-alias EMRGDICOMMENT TAGEMRGDICOMMENT;
-alias EMRGDICOMMENT TEMRGDICOMMENT;
-alias EMRGDICOMMENT* PEMRGDICOMMENT;
-
-struct EMRINVERTRGN
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD cbRgnData;
-    ubyte[1 + 0] RgnData;
-}
-
-alias EMRINVERTRGN TAGEMRINVERTRGN;
-alias EMRINVERTRGN TEMRINVERTRGN;
-alias EMRINVERTRGN* PEMRINVERTRGN;
-alias EMRINVERTRGN EMRPAINTRGN;
-alias EMRINVERTRGN TEMRPAINTRGN;
-alias EMRINVERTRGN* PEMRPAINTRGN;
-
-struct EMRLINETO
-{
-    EMR emr;
-    POINTL ptl;
-}
-
-alias EMRLINETO TAGEMRLINETO;
-alias EMRLINETO TEMRLINETO;
-alias EMRLINETO* PEMRLINETO;
-alias EMRLINETO EMRMOVETOEX;
-alias EMRLINETO TEMRMOVETOEX;
-alias EMRLINETO* PEMRMOVETOEX;
-
-struct EMRMASKBLT
-{
-    EMR emr;
-    RECTL rclBounds;
-    LONG xDest;
-    LONG yDest;
-    LONG cxDest;
-    LONG cyDest;
-    DWORD dwRop;
-    LONG xSrc;
-    LONG ySrc;
-    XFORM xformSrc;
-    COLORREF crBkColorSrc;
-    DWORD iUsageSrc;
-    DWORD offBmiSrc;
-    DWORD cbBmiSrc;
-    DWORD offBitsSrc;
-    DWORD cbBitsSrc;
-    LONG xMask;
-    LONG yMask;
-    DWORD iUsageMask;
-    DWORD offBmiMask;
-    DWORD cbBmiMask;
-    DWORD offBitsMask;
-    DWORD cbBitsMask;
-}
-
-alias EMRMASKBLT TAGEMRMASKBLT;
-alias EMRMASKBLT TEMRMASKBLT;
-alias EMRMASKBLT* PEMRMASKBLT;
-
-struct EMRMODIFYWORLDTRANSFORM
-{
-    EMR emr;
-    XFORM xform;
-    DWORD iMode;
-}
-
-alias EMRMODIFYWORLDTRANSFORM TAGEMRMODIFYWORLDTRANSFORM;
-alias EMRMODIFYWORLDTRANSFORM TEMRMODIFYWORLDTRANSFORM;
-alias EMRMODIFYWORLDTRANSFORM PEMRMODIFYWORLDTRANSFORM;
-
-struct EMROFFSETCLIPRGN
-{
-    EMR emr;
-    POINTL ptlOffset;
-}
-
-alias EMROFFSETCLIPRGN TAGEMROFFSETCLIPRGN;
-alias EMROFFSETCLIPRGN TEMROFFSETCLIPRGN;
-alias EMROFFSETCLIPRGN* PEMROFFSETCLIPRGN;
-
-struct EMRPLGBLT
-{
-    EMR emr;
-    RECTL rclBounds;
-    POINTL[1 + 2] aptlDest;
-    LONG xSrc;
-    LONG ySrc;
-    LONG cxSrc;
-    LONG cySrc;
-    XFORM xformSrc;
-    COLORREF crBkColorSrc;
-    DWORD iUsageSrc;
-    DWORD offBmiSrc;
-    DWORD cbBmiSrc;
-    DWORD offBitsSrc;
-    DWORD cbBitsSrc;
-    LONG xMask;
-    LONG yMask;
-    DWORD iUsageMask;
-    DWORD offBmiMask;
-    DWORD cbBmiMask;
-    DWORD offBitsMask;
-    DWORD cbBitsMask;
-}
-
-alias EMRPLGBLT TAGEMRPLGBLT;
-alias EMRPLGBLT TEMRPLGBLT;
-alias EMRPLGBLT* PEMRPLGBLT;
-
-struct EMRPOLYDRAW
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD cptl;
-    POINTL[1 + 0] aptl;
-    ubyte[1 + 0] abTypes;
-}
-
-alias EMRPOLYDRAW TAGEMRPOLYDRAW;
-alias EMRPOLYDRAW TEMRPOLYDRAW;
-alias EMRPOLYDRAW* PEMRPOLYDRAW;
-
-struct EMRPOLYDRAW16
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD cpts;
-    POINTS[1 + 0] apts;
-    ubyte[1 + 0] abTypes;
-}
-
-alias EMRPOLYDRAW16 TAGEMRPOLYDRAW16;
-alias EMRPOLYDRAW16 TEMRPOLYDRAW16;
-alias EMRPOLYDRAW16* PEMRPOLYDRAW16;
-
-struct EMRPOLYLINE
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD cptl;
-    POINTL[1 + 0] aptl;
-}
-
-alias EMRPOLYLINE TAGEMRPOLYLINE;
-alias EMRPOLYLINE TEMRPOLYLINE;
-alias EMRPOLYLINE* PEMRPOLYLINE;
-alias EMRPOLYLINE EMRPOLYBEZIER;
-alias EMRPOLYLINE TEMRPOLYBEZIER;
-alias EMRPOLYLINE* PEMRPOLYBEZIER;
-alias EMRPOLYLINE EMRPOLYGON;
-alias EMRPOLYLINE TEMRPOLYGON;
-alias EMRPOLYLINE* PEMRPOLYGON;
-alias EMRPOLYLINE EMRPOLYBEZIERTO;
-alias EMRPOLYLINE TEMRPOLYBEZIERTO;
-alias EMRPOLYLINE* PEMRPOLYBEZIERTO;
-alias EMRPOLYLINE EMRPOLYLINETO;
-alias EMRPOLYLINE TEMRPOLYLINETO;
-alias EMRPOLYLINE* PEMRPOLYLINETO;
-
-struct EMRPOLYLINE16
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD cpts;
-    POINTL[1 + 0] apts;
-}
-
-alias EMRPOLYLINE16 TAGEMRPOLYLINE16;
-alias EMRPOLYLINE16 TEMRPOLYLINE16;
-alias EMRPOLYLINE16* PEMRPOLYLINE16;
-alias EMRPOLYLINE16 EMRPOLYBEZIER16;
-alias EMRPOLYLINE16 TEMRPOLYBEZIER16;
-alias EMRPOLYLINE16* PEMRPOLYBEZIER16;
-alias EMRPOLYLINE16 EMRPOLYGON16;
-alias EMRPOLYLINE16 TEMRPOLYGON16;
-alias EMRPOLYLINE16* PEMRPOLYGON16;
-alias EMRPOLYLINE16 EMRPOLYBEZIERTO16;
-alias EMRPOLYLINE16 TEMRPOLYBEZIERTO16;
-alias EMRPOLYLINE16* PEMRPOLYBEZIERTO16;
-alias EMRPOLYLINE16 EMRPOLYLINETO16;
-alias EMRPOLYLINE16 TEMRPOLYLINETO16;
-alias EMRPOLYLINE16* PEMRPOLYLINETO16;
-
-struct EMRPOLYPOLYLINE
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD nPolys;
-    DWORD cptl;
-    DWORD[1 + 0] aPolyCounts;
-    POINTL[1 + 0] aptl;
-}
-
-alias EMRPOLYPOLYLINE TAGEMRPOLYPOLYLINE;
-alias EMRPOLYPOLYLINE TEMRPOLYPOLYLINE;
-alias EMRPOLYPOLYLINE* PEMRPOLYPOLYLINE;
-alias EMRPOLYPOLYLINE EMRPOLYPOLYGON;
-alias EMRPOLYPOLYLINE TEMRPOLYPOLYGON;
-alias EMRPOLYPOLYLINE* PEMRPOLYPOLYGON;
-
-struct EMRPOLYPOLYLINE16
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD nPolys;
-    DWORD cpts;
-    DWORD[1 + 0] aPolyCounts;
-    POINTS[1 + 0] apts;
-}
-
-alias EMRPOLYPOLYLINE16 TAGEMRPOLYPOLYLINE16;
-alias EMRPOLYPOLYLINE16 TEMRPOLYPOLYLINE16;
-alias EMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16;
-alias EMRPOLYPOLYLINE16 EMRPOLYPOLYGON16;
-alias EMRPOLYPOLYLINE16 TEMRPOLYPOLYGON16;
-alias EMRPOLYPOLYLINE16* PEMRPOLYPOLYGON16;
-
-struct EMRPOLYTEXTOUTA
-{
-    EMR emr;
-    RECTL rclBounds;
-    DWORD iGraphicsMode;
-    FLOAT exScale;
-    FLOAT eyScale;
-    LONG cStrings;
-    EMRTEXT[1 + 0] aemrtext;
-}
-
-alias EMRPOLYTEXTOUTA TAGEMRPOLYTEXTOUTA;
-alias EMRPOLYTEXTOUTA TEMRPOLYTEXTOUTA;
-alias EMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA;
-alias EMRPOLYTEXTOUTA EMRPOLYTEXTOUTW;
-alias EMRPOLYTEXTOUTA TEMRPOLYTEXTOUTW;
-alias EMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTW;
-
-struct EMRRESIZEPALETTE
-{
-    EMR emr;
-    DWORD ihPal;
-    DWORD cEntries;
-}
-
-alias EMRRESIZEPALETTE TAGEMRRESIZEPALETTE;
-alias EMRRESIZEPALETTE TEMRRESIZEPALETTE;
-alias EMRRESIZEPALETTE* PEMRRESIZEPALETTE;
-
-struct EMRRESTOREDC
-{
-    EMR emr;
-    LONG iRelative;
-}
-
-alias EMRRESTOREDC TAGEMRRESTOREDC;
-alias EMRRESTOREDC TEMRRESTOREDC;
-alias EMRRESTOREDC* PEMRRESTOREDC;
-
-struct EMRROUNDRECT
-{
-    EMR emr;
-    RECTL rclBox;
-    SIZEL szlCorner;
-}
-
-alias EMRROUNDRECT TAGEMRROUNDRECT;
-alias EMRROUNDRECT TEMRROUNDRECT;
-alias EMRROUNDRECT* PEMRROUNDRECT;
-
-struct EMRSCALEVIEWPORTEXTEX
-{
-    EMR emr;
-    LONG xNum;
-    LONG xDenom;
-    LONG yNum;
-    LONG yDenom;
-}
-
-alias EMRSCALEVIEWPORTEXTEX TAGEMRSCALEVIEWPORTEXTEX;
-alias EMRSCALEVIEWPORTEXTEX TEMRSCALEVIEWPORTEXTEX;
-alias EMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX;
-alias EMRSCALEVIEWPORTEXTEX EMRSCALEWINDOWEXTEX;
-alias EMRSCALEVIEWPORTEXTEX TEMRSCALEWINDOWEXTEX;
-alias EMRSCALEVIEWPORTEXTEX* PEMRSCALEWINDOWEXTEX;
-
-struct EMRSELECTCOLORSPACE
-{
-    EMR emr;
-    DWORD ihCS;
-}
-
-alias EMRSELECTCOLORSPACE TAGEMRSELECTCOLORSPACE;
-alias EMRSELECTCOLORSPACE TEMRSELECTCOLORSPACE;
-alias EMRSELECTCOLORSPACE* PEMRSELECTCOLORSPACE;
-alias EMRSELECTCOLORSPACE EMRDELETECOLORSPACE;
-alias EMRSELECTCOLORSPACE TEMRDELETECOLORSPACE;
-alias EMRSELECTCOLORSPACE* PEMRDELETECOLORSPACE;
-
-struct EMRSELECTOBJECT
-{
-    EMR emr;
-    DWORD ihObject;
-}
-
-alias EMRSELECTOBJECT TAGEMRSELECTOBJECT;
-alias EMRSELECTOBJECT TEMRSELECTOBJECT;
-alias EMRSELECTOBJECT* PEMRSELECTOBJECT;
-alias EMRSELECTOBJECT EMRDELETEOBJECT;
-alias EMRSELECTOBJECT TEMRDELETEOBJECT;
-alias EMRSELECTOBJECT* PEMRDELETEOBJECT;
-
-struct EMRSELECTPALETTE
-{
-    EMR emr;
-    DWORD ihPal;
-}
-
-alias EMRSELECTPALETTE TAGEMRSELECTPALETTE;
-alias EMRSELECTPALETTE TEMRSELECTPALETTE;
-alias EMRSELECTPALETTE* PEMRSELECTPALETTE;
-
-struct EMRSETARCDIRECTION
-{
-    EMR emr;
-    DWORD iArcDirection;
-}
-
-alias EMRSETARCDIRECTION TAGEMRSETARCDIRECTION;
-alias EMRSETARCDIRECTION TEMRSETARCDIRECTION;
-alias EMRSETARCDIRECTION* PEMRSETARCDIRECTION;
-
-struct EMRSETBKCOLOR
-{
-    EMR emr;
-    COLORREF crColor;
-}
-
-alias EMRSETBKCOLOR TAGEMRSETTEXTCOLOR;
-alias EMRSETBKCOLOR TEMRSETBKCOLOR;
-alias EMRSETBKCOLOR* PEMRSETBKCOLOR;
-alias EMRSETBKCOLOR EMRSETTEXTCOLOR;
-alias EMRSETBKCOLOR TEMRSETTEXTCOLOR;
-alias EMRSETBKCOLOR* PEMRSETTEXTCOLOR;
-
-struct EMRSETCOLORADJUSTMENT
-{
-    EMR emr;
-    COLORADJUSTMENT ColorAdjustment;
-}
-
-alias EMRSETCOLORADJUSTMENT TAGEMRSETCOLORADJUSTMENT;
-alias EMRSETCOLORADJUSTMENT TEMRSETCOLORADJUSTMENT;
-alias EMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT;
-
-struct EMRSETDIBITSTODEVICE
-{
-    EMR emr;
-    RECTL rclBounds;
-    LONG xDest;
-    LONG yDest;
-    LONG xSrc;
-    LONG ySrc;
-    LONG cxSrc;
-    LONG cySrc;
-    DWORD offBmiSrc;
-    DWORD cbBmiSrc;
-    DWORD offBitsSrc;
-    DWORD cbBitsSrc;
-    DWORD iUsageSrc;
-    DWORD iStartScan;
-    DWORD cScans;
-}
-
-alias EMRSETDIBITSTODEVICE TAGEMRSETDIBITSTODEVICE;
-alias EMRSETDIBITSTODEVICE TEMRSETDIBITSTODEVICE;
-alias EMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE;
-
-struct EMRSETMAPPERFLAGS
-{
-    EMR emr;
-    DWORD dwFlags;
-}
-
-alias EMRSETMAPPERFLAGS TAGEMRSETMAPPERFLAGS;
-alias EMRSETMAPPERFLAGS TEMRSETMAPPERFLAGS;
-alias EMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS;
-
-struct EMRSETMITERLIMIT
-{
-    EMR emr;
-    FLOAT eMiterLimit;
-}
-
-alias EMRSETMITERLIMIT TAGEMRSETMITERLIMIT;
-alias EMRSETMITERLIMIT TEMRSETMITERLIMIT;
-alias EMRSETMITERLIMIT* PEMRSETMITERLIMIT;
-
-struct EMRSETPALETTEENTRIES
-{
-    EMR emr;
-    DWORD ihPal;
-    DWORD iStart;
-    DWORD cEntries;
-    PALETTEENTRY[1 + 0] aPalEntries;
-}
-
-alias EMRSETPALETTEENTRIES TAGEMRSETPALETTEENTRIES;
-alias EMRSETPALETTEENTRIES TEMRSETPALETTEENTRIES;
-alias EMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES;
-
-struct EMRSETPIXELV
-{
-    EMR emr;
-    POINTL ptlPixel;
-    COLORREF crColor;
-}
-
-alias EMRSETPIXELV TAGEMRSETPIXELV;
-alias EMRSETPIXELV TEMRSETPIXELV;
-alias EMRSETPIXELV* PEMRSETPIXELV;
-
-struct EMRSETVIEWPORTEXTEX
-{
-    EMR emr;
-    SIZEL szlExtent;
-}
-
-alias EMRSETVIEWPORTEXTEX TAGEMRSETVIEWPORTEXTEX;
-alias EMRSETVIEWPORTEXTEX TEMRSETVIEWPORTEXTEX;
-alias EMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX;
-alias EMRSETVIEWPORTEXTEX EMRSETWINDOWEXTEX;
-alias EMRSETVIEWPORTEXTEX TEMRSETWINDOWEXTEX;
-alias EMRSETVIEWPORTEXTEX* PEMRSETWINDOWEXTEX;
-
-struct EMRSETVIEWPORTORGEX
-{
-    EMR emr;
-    POINTL ptlOrigin;
-}
-
-alias EMRSETVIEWPORTORGEX TAGEMRSETVIEWPORTORGEX;
-alias EMRSETVIEWPORTORGEX TEMRSETVIEWPORTORGEX;
-alias EMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX;
-alias EMRSETVIEWPORTORGEX EMRSETWINDOWORGEX;
-alias EMRSETVIEWPORTORGEX TEMRSETWINDOWORGEX;
-alias EMRSETVIEWPORTORGEX* PEMRSETWINDOWORGEX;
-alias EMRSETVIEWPORTORGEX EMRSETBRUSHORGEX;
-alias EMRSETVIEWPORTORGEX TEMRSETBRUSHORGEX;
-alias EMRSETVIEWPORTORGEX* PEMRSETBRUSHORGEX;
-
-struct EMRSETWORLDTRANSFORM
-{
-    EMR emr;
-    XFORM xform;
-}
-
-alias EMRSETWORLDTRANSFORM TAGEMRSETWORLDTRANSFORM;
-alias EMRSETWORLDTRANSFORM TEMRSETWORLDTRANSFORM;
-alias EMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM;
-
-struct EMRSTRETCHBLT
-{
-    EMR emr;
-    RECTL rclBounds;
-    LONG xDest;
-    LONG yDest;
-    LONG cxDest;
-    LONG cyDest;
-    DWORD dwRop;
-    LONG xSrc;
-    LONG ySrc;
-    XFORM xformSrc;
-    COLORREF crBkColorSrc;
-    DWORD iUsageSrc;
-    DWORD offBmiSrc;
-    DWORD cbBmiSrc;
-    DWORD offBitsSrc;
-    DWORD cbBitsSrc;
-    LONG cxSrc;
-    LONG cySrc;
-}
-
-alias EMRSTRETCHBLT TAGEMRSTRETCHBLT;
-alias EMRSTRETCHBLT TEMRSTRETCHBLT;
-alias EMRSTRETCHBLT* PEMRSTRETCHBLT;
-
-struct EMRSTRETCHDIBITS
-{
-    EMR emr;
-    RECTL rclBounds;
-    LONG xDest;
-    LONG yDest;
-    LONG xSrc;
-    LONG ySrc;
-    LONG cxSrc;
-    LONG cySrc;
-    DWORD offBmiSrc;
-    DWORD cbBmiSrc;
-    DWORD offBitsSrc;
-    DWORD cbBitsSrc;
-    DWORD iUsageSrc;
-    DWORD dwRop;
-    LONG cxDest;
-    LONG cyDest;
-}
-
-alias EMRSTRETCHDIBITS TAGEMRSTRETCHDIBITS;
-alias EMRSTRETCHDIBITS TEMRSTRETCHDIBITS;
-alias EMRSTRETCHDIBITS* PEMRSTRETCHDIBITS;
-
-struct EMRABORTPATH
-{
-    EMR emr;
-}
-
-alias EMRABORTPATH TEMRABORTPATH;
-alias EMRABORTPATH* PEMRABORTPATH;
-alias EMRABORTPATH TAGABORTPATH;
-alias EMRABORTPATH TABORTPATH;
-alias EMRABORTPATH EMRBEGINPATH;
-alias EMRABORTPATH TEMRBEGINPATH;
-alias EMRABORTPATH* PEMRBEGINPATH;
-alias EMRABORTPATH EMRENDPATH;
-alias EMRABORTPATH TEMRENDPATH;
-alias EMRABORTPATH* PEMRENDPATH;
-alias EMRABORTPATH EMRCLOSEFIGURE;
-alias EMRABORTPATH TEMRCLOSEFIGURE;
-alias EMRABORTPATH* PEMRCLOSEFIGURE;
-alias EMRABORTPATH EMRFLATTENPATH;
-alias EMRABORTPATH TEMRFLATTENPATH;
-alias EMRABORTPATH* PEMRFLATTENPATH;
-alias EMRABORTPATH EMRWIDENPATH;
-alias EMRABORTPATH TEMRWIDENPATH;
-alias EMRABORTPATH* PEMRWIDENPATH;
-alias EMRABORTPATH EMRSETMETARGN;
-alias EMRABORTPATH TEMRSETMETARGN;
-alias EMRABORTPATH* PEMRSETMETARGN;
-alias EMRABORTPATH EMRSAVEDC;
-alias EMRABORTPATH TEMRSAVEDC;
-alias EMRABORTPATH* PEMRSAVEDC;
-alias EMRABORTPATH EMRREALIZEPALETTE;
-alias EMRABORTPATH TEMRREALIZEPALETTE;
-alias EMRABORTPATH* PEMRREALIZEPALETTE;
-
-struct EMRSELECTCLIPPATH
-{
-    EMR emr;
-    DWORD iMode;
-}
-
-alias EMRSELECTCLIPPATH TAGEMRSELECTCLIPPATH;
-alias EMRSELECTCLIPPATH TEMRSELECTCLIPPATH;
-alias EMRSELECTCLIPPATH* PEMRSELECTCLIPPATH;
-alias EMRSELECTCLIPPATH EMRSETBKMODE;
-alias EMRSELECTCLIPPATH TEMRSETBKMODE;
-alias EMRSELECTCLIPPATH* PEMRSETBKMODE;
-alias EMRSELECTCLIPPATH EMRSETMAPMODE;
-alias EMRSELECTCLIPPATH TEMRSETMAPMODE;
-alias EMRSELECTCLIPPATH* PEMRSETMAPMODE;
-alias EMRSELECTCLIPPATH EMRSETPOLYFILLMODE;
-alias EMRSELECTCLIPPATH TEMRSETPOLYFILLMODE;
-alias EMRSELECTCLIPPATH* PEMRSETPOLYFILLMODE;
-alias EMRSELECTCLIPPATH EMRSETROP2;
-alias EMRSELECTCLIPPATH TEMRSETROP2;
-alias EMRSELECTCLIPPATH* PEMRSETROP2;
-alias EMRSELECTCLIPPATH EMRSETSTRETCHBLTMODE;
-alias EMRSELECTCLIPPATH TEMRSETSTRETCHBLTMODE;
-alias EMRSELECTCLIPPATH* PEMRSETSTRETCHBLTMODE;
-alias EMRSELECTCLIPPATH EMRSETTEXTALIGN;
-alias EMRSELECTCLIPPATH TEMRSETTEXTALIGN;
-alias EMRSELECTCLIPPATH* PEMRSETTEXTALIGN;
-alias EMRSELECTCLIPPATH EMRENABLEICM;
-alias EMRSELECTCLIPPATH TEMRENABLEICM;
-alias EMRSELECTCLIPPATH* PEMRENABLEICM;
-
-struct NMHDR
-{
-    HWND hwndFrom;
-    UINT idFrom;
-    UINT code;
-}
-
-alias NMHDR TAGNMHDR;
-alias NMHDR TNMHDR;
-alias NMHDR* PNMHDR;
-
-struct ENCORRECTTEXT
-{
-    NMHDR nmhdr;
-    CHARRANGE chrg;
-    ushort seltyp;
-}
-
-alias ENCORRECTTEXT _ENCORRECTTEXT;
-alias ENCORRECTTEXT TENCORRECTTEXT;
-alias ENCORRECTTEXT* PENCORRECTTEXT;
-
-struct ENDROPFILES
-{
-    NMHDR nmhdr;
-    HANDLE hDrop;
-    LONG cp;
-    WINBOOL fProtected;
-}
-
-alias ENDROPFILES _ENDROPFILES;
-alias ENDROPFILES TENDROPFILES;
-alias ENDROPFILES* PENDROPFILES;
-
-struct ENSAVECLIPBOARD
-{
-    NMHDR nmhdr;
-    LONG cObjectCount;
-    LONG cch;
-}
-
-alias ENSAVECLIPBOARD TENSAVECLIPBOARD;
-alias ENSAVECLIPBOARD* PENSAVECLIPBOARD;
-
-struct ENOLEOPFAILED
-{
-    NMHDR nmhdr;
-    LONG iob;
-    LONG lOper;
-    HRESULT hr;
-}
-
-alias ENOLEOPFAILED TENOLEOPFAILED;
-alias ENOLEOPFAILED* PENOLEOPFAILED;
-
-struct ENHMETAHEADER
-{
-    DWORD iType;
-    DWORD nSize;
-    RECTL rclBounds;
-    RECTL rclFrame;
-    DWORD dSignature;
-    DWORD nVersion;
-    DWORD nBytes;
-    DWORD nRecords;
-    ushort nHandles;
-    ushort sReserved;
-    DWORD nDescription;
-    DWORD offDescription;
-    DWORD nPalEntries;
-    SIZEL szlDevice;
-    SIZEL szlMillimeters;
-}
-
-alias ENHMETAHEADER* LPENHMETAHEADER;
-alias ENHMETAHEADER TAGENHMETAHEADER;
-alias ENHMETAHEADER TENHMETAHEADER;
-alias ENHMETAHEADER* PENHMETAHEADER;
-
-struct ENHMETARECORD
-{
-    DWORD iType;
-    DWORD nSize;
-    DWORD[1 + 0] dParm;
-}
-
-alias ENHMETARECORD* LPENHMETARECORD;
-alias ENHMETARECORD TAGENHMETARECORD;
-alias ENHMETARECORD TENHMETARECORD;
-alias ENHMETARECORD* PENHMETARECORD;
-
-struct ENPROTECTED
-{
-    NMHDR nmhdr;
-    UINT msg;
-    WPARAM wParam;
-    LPARAM lParam;
-    CHARRANGE chrg;
-}
-
-alias ENPROTECTED _ENPROTECTED;
-alias ENPROTECTED TENPROTECTED;
-alias ENPROTECTED* PENPROTECTED;
-
-struct SERVICE_STATUS
-{
-    DWORD dwServiceType;
-    DWORD dwCurrentState;
-    DWORD dwControlsAccepted;
-    DWORD dwWin32ExitCode;
-    DWORD dwServiceSpecificExitCode;
-    DWORD dwCheckPoint;
-    DWORD dwWaitHint;
-}
-
-alias SERVICE_STATUS* LPSERVICE_STATUS;
-alias SERVICE_STATUS _SERVICE_STATUS;
-alias SERVICE_STATUS TSERVICESTATUS;
-alias SERVICE_STATUS* PSERVICESTATUS;
-
-struct ENUM_SERVICE_STATUS
-{
-    LPTSTR lpServiceName;
-    LPTSTR lpDisplayName;
-    SERVICE_STATUS ServiceStatus;
-}
-
-alias ENUM_SERVICE_STATUS* LPENUM_SERVICE_STATUS;
-alias ENUM_SERVICE_STATUS _ENUM_SERVICE_STATUS;
-alias ENUM_SERVICE_STATUS TENUMSERVICESTATUS;
-alias ENUM_SERVICE_STATUS* PENUMSERVICESTATUS;
-
-struct ENUMLOGFONTA {
-  LOGFONTA elfLogFont;
-  BYTE     elfFullName[LF_FULLFACESIZE];
-  BYTE     elfStyle[LF_FACESIZE];
-}
-struct ENUMLOGFONTW {
-  LOGFONTW elfLogFont;
-  WCHAR    elfFullName[LF_FULLFACESIZE];
-  WCHAR    elfStyle[LF_FACESIZE];
-}
-struct ENUMLOGFONTEXA {
-    LOGFONTA  elfLogFont;
-    BYTE      elfFullName[LF_FULLFACESIZE];
-    BYTE      elfStyle[LF_FACESIZE];
-    BYTE      elfScript[LF_FACESIZE];
-}
-struct ENUMLOGFONTEXW {
-    LOGFONTW  elfLogFont;
-    WCHAR     elfFullName[LF_FULLFACESIZE];
-    WCHAR     elfStyle[LF_FACESIZE];
-    WCHAR     elfScript[LF_FACESIZE];
-}
-version(Win32SansUnicode){
-    alias ENUMLOGFONTA ENUMLOGFONT;
-    alias ENUMLOGFONTEXA ENUMLOGFONTEX;
-}else {
-    alias ENUMLOGFONTW ENUMLOGFONT;
-    alias ENUMLOGFONTEXW ENUMLOGFONTEX;
-}
-alias ENUMLOGFONT TAGENUMLOGFONT;
-alias ENUMLOGFONT TENUMLOGFONT;
-alias ENUMLOGFONT* PENUMLOGFONT;
-alias ENUMLOGFONTEX TAGENUMLOGFONTEX;
-alias ENUMLOGFONTEX TENUMLOGFONTEX;
-alias ENUMLOGFONTEX* PENUMLOGFONTEX;
-
-struct EVENTLOGRECORD
-{
-    DWORD Length;
-    DWORD Reserved;
-    DWORD RecordNumber;
-    DWORD TimeGenerated;
-    DWORD TimeWritten;
-    DWORD EventID;
-    ushort EventType;
-    ushort NumStrings;
-    ushort EventCategory;
-    ushort ReservedFlags;
-    DWORD ClosingRecordNumber;
-    DWORD StringOffset;
-    DWORD UserSidLength;
-    DWORD UserSidOffset;
-    DWORD DataLength;
-    DWORD DataOffset;
-}
-
-alias EVENTLOGRECORD _EVENTLOGRECORD;
-alias EVENTLOGRECORD TEVENTLOGRECORD;
-alias EVENTLOGRECORD* PEVENTLOGRECORD;
-
-struct EVENTMSG
-{
-    UINT message;
-    UINT paramL;
-    UINT paramH;
-    DWORD time;
-    HWND hwnd;
-}
-
-alias EVENTMSG TAGEVENTMSG;
-alias EVENTMSG TEVENTMSG;
-alias EVENTMSG* PEVENTMSG;
-
-struct EXCEPTION_POINTERS
-{
-    PEXCEPTION_RECORD ExceptionRecord;
-    PCONTEXT ContextRecord;
-}
-
-alias EXCEPTION_POINTERS* LPEXCEPTION_POINTERS;
-alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS;
-alias EXCEPTION_POINTERS _EXCEPTION_POINTERS;
-alias EXCEPTION_POINTERS TEXCEPTIONPOINTERS;
-alias EXCEPTION_POINTERS* PEXCEPTIONPOINTERS;
-
-struct EXT_BUTTON
-{
-    ushort idCommand;
-    ushort idsHelp;
-    ushort fsStyle;
-}
-
-alias EXT_BUTTON* LPEXT_BUTTON;
-alias EXT_BUTTON _EXT_BUTTON;
-alias EXT_BUTTON TEXTBUTTON;
-alias EXT_BUTTON* PEXTBUTTON;
-
-struct FILTERKEYS
-{
-    UINT cbSize;
-    DWORD dwFlags;
-    DWORD iWaitMSec;
-    DWORD iDelayMSec;
-    DWORD iRepeatMSec;
-    DWORD iBounceMSec;
-}
-
-alias FILTERKEYS TAGFILTERKEYS;
-alias FILTERKEYS TFILTERKEYS;
-alias FILTERKEYS* PFILTERKEYS;
-
-struct FIND_NAME_BUFFER
-{
-    UCHAR length;
-    UCHAR access_control;
-    UCHAR frame_control;
-    UCHAR[1 + 5] destination_addr;
-    UCHAR[1 + 5] source_addr;
-    UCHAR[1 + 17] routing_info;
-}
-
-alias FIND_NAME_BUFFER _FIND_NAME_BUFFER;
-alias FIND_NAME_BUFFER TFINDNAMEBUFFER;
-alias FIND_NAME_BUFFER* PFINDNAMEBUFFER;
-
-struct FIND_NAME_HEADER
-{
-    ushort node_count;
-    UCHAR reserved;
-    UCHAR unique_group;
-}
-
-alias FIND_NAME_HEADER _FIND_NAME_HEADER;
-alias FIND_NAME_HEADER TFINDNAMEHEADER;
-alias FIND_NAME_HEADER* PFINDNAMEHEADER;
-
-struct FINDREPLACE
-{
-    DWORD lStructSize;
-    HWND hwndOwner;
-    HINST hInstance;
-    DWORD Flags;
-    LPTSTR lpstrFindWhat;
-    LPTSTR lpstrReplaceWith;
-    ushort wFindWhatLen;
-    ushort wReplaceWithLen;
-    LPARAM lCustData;
-    LPFRHOOKPROC lpfnHook;
-    LPCTSTR lpTemplateName;
-}
-
-alias FINDREPLACE* LPFINDREPLACE;
-alias FINDREPLACE TFINDREPLACE;
-alias FINDREPLACE* PFINDREPLACE;
-
-struct TFINDTEXT
-{
-    CHARRANGE chrg;
-    LPSTR lpstrText;
-}
-
-alias TFINDTEXT _FINDTEXT;
-alias TFINDTEXT* PFINDTEXT;
-
-struct FINDTEXTEX
-{
-    CHARRANGE chrg;
-    LPSTR lpstrText;
-    CHARRANGE chrgText;
-}
-
-alias FINDTEXTEX _FINDTEXTEX;
-alias FINDTEXTEX TFINDTEXTEX;
-alias FINDTEXTEX* PFINDTEXTEX;
-
-struct FMS_GETDRIVEINFO
-{
-    DWORD dwTotalSpace;
-    DWORD dwFreeSpace;
-    TCHAR[1 + 259] szPath;
-    TCHAR[1 + 13] szVolume;
-    TCHAR[1 + 127] szShare;
-}
-
-alias FMS_GETDRIVEINFO _FMS_GETDRIVEINFO;
-alias FMS_GETDRIVEINFO TFMSGETDRIVEINFO;
-alias FMS_GETDRIVEINFO* PFMSGETDRIVEINFO;
-
-struct FMS_GETFILESEL
-{
-    FILETIME ftTime;
-    DWORD dwSize;
-    ubyte bAttr;
-    TCHAR[1 + 259] szName;
-}
-
-alias FMS_GETFILESEL _FMS_GETFILESEL;
-alias FMS_GETFILESEL TFMSGETFILESEL;
-alias FMS_GETFILESEL* PFMSGETFILESEL;
-
-struct FMS_LOAD
-{
-    DWORD dwSize;
-    TCHAR[1 + MENU_TEXT_LEN-1] szMenuName;
-    HMENU hMenu;
-    UINT wMenuDelta;
-}
-
-alias FMS_LOAD _FMS_LOAD;
-alias FMS_LOAD TFMSLOAD;
-alias FMS_LOAD* PFMSLOAD;
-
-struct FMS_TOOLBARLOAD
-{
-    DWORD dwSize;
-    LPEXT_BUTTON lpButtons;
-    ushort cButtons;
-    ushort cBitmaps;
-    ushort idBitmap;
-    HBITMAP hBitmap;
-}
-
-alias FMS_TOOLBARLOAD _FMS_TOOLBARLOAD;
-alias FMS_TOOLBARLOAD TFMSTOOLBARLOAD;
-alias FMS_TOOLBARLOAD* PFMSTOOLBARLOAD;
-
-struct FOCUS_EVENT_RECORD
-{
-    WINBOOL bSetFocus;
-}
-
-alias FOCUS_EVENT_RECORD _FOCUS_EVENT_RECORD;
-alias FOCUS_EVENT_RECORD TFOCUSEVENTRECORD;
-alias FOCUS_EVENT_RECORD* PFOCUSEVENTRECORD;
-
-struct FORM_INFO_1
-{
-    DWORD Flags;
-    LPTSTR pName;
-    SIZEL Size;
-    RECTL ImageableArea;
-}
-
-alias FORM_INFO_1 _FORM_INFO_1;
-alias FORM_INFO_1 TFORMINFO1;
-alias FORM_INFO_1* PFORMINFO1;
-
-struct FORMAT_PARAMETERS
-{
-    MEDIA_TYPE MediaType;
-    DWORD StartCylinderNumber;
-    DWORD EndCylinderNumber;
-    DWORD StartHeadNumber;
-    DWORD EndHeadNumber;
-}
-
-alias FORMAT_PARAMETERS _FORMAT_PARAMETERS;
-alias FORMAT_PARAMETERS TFORMATPARAMETERS;
-alias FORMAT_PARAMETERS* PFORMATPARAMETERS;
-
-struct FORMATRANGE
-{
-    HDC _hdc;
-    HDC hdcTarget;
-    RECT rc;
-    RECT rcPage;
-    CHARRANGE chrg;
-}
-
-alias FORMATRANGE _FORMATRANGE;
-alias FORMATRANGE TFORMATRANGE;
-alias FORMATRANGE* PFORMATRANGE;
-
-struct GCP_RESULTSA
-{
-    DWORD   lStructSize;
-    LPSTR   lpOutString;
-    UINT  * lpOrder;
-    int   * lpDx;
-    int   * lpCaretPos;
-    LPSTR   lpClass;
-    LPWSTR  lpGlyphs;
-    UINT    nGlyphs;
-    int     nMaxFit;
-}
-
-struct GCP_RESULTSW
-{
-    DWORD   lStructSize;
-    LPWSTR  lpOutString;
-    UINT  * lpOrder;
-    int   * lpDx;
-    int   * lpCaretPos;
-    LPSTR   lpClass;
-    LPWSTR  lpGlyphs;
-    UINT    nGlyphs;
-    int     nMaxFit;
-}
-version(Win32SansUnicode)
-{
-    alias GCP_RESULTSA GCP_RESULTS;
-}
-else
-{
-    alias GCP_RESULTSW GCP_RESULTS;
-}
-alias GCP_RESULTS* LPGCP_RESULTS;
-alias GCP_RESULTS TAGGCP_RESULTS;
-alias GCP_RESULTS TGCPRESULTS;
-alias GCP_RESULTS* PGCPRESULTS;
-
-struct GENERIC_MAPPING
-{
-    ACCESS_MASK GenericRead;
-    ACCESS_MASK GenericWrite;
-    ACCESS_MASK GenericExecute;
-    ACCESS_MASK GenericAll;
-}
-
-alias GENERIC_MAPPING* PGENERIC_MAPPING;
-alias GENERIC_MAPPING _GENERIC_MAPPING;
-alias GENERIC_MAPPING TGENERICMAPPING;
-alias GENERIC_MAPPING* PGENERICMAPPING;
-
-struct GLYPHMETRICS
-{
-    UINT gmBlackBoxX;
-    UINT gmBlackBoxY;
-    POINT gmptGlyphOrigin;
-    int gmCellIncX;
-    int gmCellIncY;
-}
-
-alias GLYPHMETRICS* LPGLYPHMETRICS;
-alias GLYPHMETRICS _GLYPHMETRICS;
-alias GLYPHMETRICS TGLYPHMETRICS;
-alias GLYPHMETRICS* PGLYPHMETRICS;
-
-struct HANDLETABLE
-{
-    HGDIOBJ[1 + 0] objectHandle;
-}
-
-alias HANDLETABLE TAGHANDLETABLE;
-alias HANDLETABLE THANDLETABLE;
-alias HANDLETABLE* LPHANDLETABLE;
-
-struct HD_HITTESTINFO
-{
-    POINT pt;
-    UINT flags;
-    int iItem;
-}
-
-alias HD_HITTESTINFO _HD_HITTESTINFO;
-alias HD_HITTESTINFO THDHITTESTINFO;
-alias HD_HITTESTINFO  HDHITTESTINFO;
-alias HD_HITTESTINFO* PHDHITTESTINFO;
-
-struct HD_ITEM
-{
-    UINT mask;
-    int cxy;
-    LPTSTR pszText;
-    HBITMAP hbm;
-    int cchTextMax;
-    int fmt;
-    LPARAM lParam;
-}
-
-alias HD_ITEM _HD_ITEM;
-alias HD_ITEM THDITEM;
-alias HD_ITEM* PHDITEM;
-
-struct WINDOWPOS
-{
-    HWND _hwnd;
-    HWND hwndInsertAfter;
-    int x;
-    int y;
-    int cx;
-    int cy;
-    UINT flags;
-}
-
-alias WINDOWPOS* LPWINDOWPOS;
-alias WINDOWPOS _WINDOWPOS;
-alias WINDOWPOS TWINDOWPOS;
-alias WINDOWPOS* PWINDOWPOS;
-
-struct HD_LAYOUT
-{
-    RECT* prc;
-    WINDOWPOS* pwpos;
-}
-
-alias HD_LAYOUT _HD_LAYOUT;
-alias HD_LAYOUT THDLAYOUT;
-alias HD_LAYOUT  HDLAYOUT;
-alias HD_LAYOUT* PHDLAYOUT;
-
-struct HD_NOTIFY
-{
-    NMHDR hdr;
-    int iItem;
-    int iButton;
-    HD_ITEM* pitem;
-}
-
-alias HD_NOTIFY _HD_NOTIFY;
-alias HD_NOTIFY THDNOTIFY;
-alias HD_NOTIFY* PHDNOTIFY;
-
-struct HELPINFO
-{
-    UINT cbSize;
-    int iContextType;
-    int iCtrlId;
-    HANDLE hItemHandle;
-    DWORD dwContextId;
-    POINT MousePos;
-}
-
-alias HELPINFO* LPHELPINFO;
-alias HELPINFO TAGHELPINFO;
-alias HELPINFO THELPINFO;
-alias HELPINFO* PHELPINFO;
-
-struct HELPWININFO
-{
-    int wStructSize;
-    int x;
-    int y;
-    int dx;
-    int dy;
-    int wMax;
-    TCHAR[1 + 1] rgchMember;
-}
-
-alias HELPWININFO THELPWININFO;
-alias HELPWININFO* PHELPWININFO;
-
-struct HIGHCONTRASTA
-{
-    UINT             cbSize;
-    DWORD            dwFlags;
-    LPSTR            lpszDefaultScheme;
-}
-struct HIGHCONTRASTW
-{
-    UINT             cbSize;
-    DWORD            dwFlags;
-    LPWSTR           lpszDefaultScheme;
-}
-version(Win32SansUnicode)
-{
-    alias HIGHCONTRASTA HIGHCONTRAST;
-}
-else
-{
-    alias HIGHCONTRASTW HIGHCONTRAST;
-}
-alias HIGHCONTRAST* LPHIGHCONTRAST;
-alias HIGHCONTRAST TAGHIGHCONTRAST;
-alias HIGHCONTRAST THIGHCONTRAST;
-alias HIGHCONTRAST* PHIGHCONTRAST;
-
-struct HSZPAIR
-{
-    HSZ hszSvc;
-    HSZ hszTopic;
-}
-
-alias HSZPAIR TAGHSZPAIR;
-alias HSZPAIR THSZPAIR;
-alias HSZPAIR* PHSZPAIR;
-
-struct ICONINFO
-{
-    WINBOOL fIcon;
-    DWORD xHotspot;
-    DWORD yHotspot;
-    HBITMAP hbmMask;
-    HBITMAP hbmColor;
-}
-
-alias ICONINFO _ICONINFO;
-alias ICONINFO TICONINFO;
-alias ICONINFO* PICONINFO;
-
-struct ICONMETRICS
-{
-    UINT cbSize;
-    int iHorzSpacing;
-    int iVertSpacing;
-    int iTitleWrap;
-    LOGFONT lfFont;
-}
-
-alias ICONMETRICS* LPICONMETRICS;
-alias ICONMETRICS TAGICONMETRICS;
-alias ICONMETRICS TICONMETRICS;
-alias ICONMETRICS* PICONMETRICS;
-
-struct IMAGEINFO
-{
-    HBITMAP hbmImage;
-    HBITMAP hbmMask;
-    int Unused1;
-    int Unused2;
-    RECT rcImage;
-}
-
-alias IMAGEINFO _IMAGEINFO;
-alias IMAGEINFO TIMAGEINFO;
-alias IMAGEINFO* PIMAGEINFO;
-
-align(1) struct KEY_EVENT_RECORD
-{
-    WINBOOL bKeyDown;
-    ushort wRepeatCount;
-    ushort wVirtualKeyCode;
-    ushort wVirtualScanCode;
-
-    union
-    {
-        struct
-        {
-            WCHAR UnicodeChar;
-            DWORD dwControlKeyState;
-        }
-        struct
-        {
-            char AsciiChar;
-        }
-    }
-}
-
-alias KEY_EVENT_RECORD _KEY_EVENT_RECORD;
-alias KEY_EVENT_RECORD TKEYEVENTRECORD;
-alias KEY_EVENT_RECORD* PKEYEVENTRECORD;
-
-struct MOUSE_EVENT_RECORD
-{
-    COORD dwMousePosition;
-    DWORD dwButtonState;
-    DWORD dwControlKeyState;
-    DWORD dwEventFlags;
-}
-
-alias MOUSE_EVENT_RECORD _MOUSE_EVENT_RECORD;
-alias MOUSE_EVENT_RECORD TMOUSEEVENTRECORD;
-alias MOUSE_EVENT_RECORD* PMOUSEEVENTRECORD;
-
-struct WINDOW_BUFFER_SIZE_RECORD
-{
-    COORD dwSize;
-}
-
-alias WINDOW_BUFFER_SIZE_RECORD _WINDOW_BUFFER_SIZE_RECORD;
-alias WINDOW_BUFFER_SIZE_RECORD TWINDOWBUFFERSIZERECORD;
-alias WINDOW_BUFFER_SIZE_RECORD* PWINDOWBUFFERSIZERECORD;
-
-struct MENU_EVENT_RECORD
-{
-    UINT dwCommandId;
-}
-
-alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD;
-alias MENU_EVENT_RECORD _MENU_EVENT_RECORD;
-alias MENU_EVENT_RECORD TMENUEVENTRECORD;
-alias MENU_EVENT_RECORD* PMENUEVENTRECORD;
-
-struct INPUT_RECORD
-{
-    ushort EventType;
-
-    union
-    {
-        struct
-        {
-            KEY_EVENT_RECORD KeyEvent;
-        }
-        struct
-        {
-            MOUSE_EVENT_RECORD MouseEvent;
-        }
-        struct
-        {
-            WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
-        }
-        struct
-        {
-            MENU_EVENT_RECORD MenuEvent;
-        }
-        struct
-        {
-            FOCUS_EVENT_RECORD FocusEvent;
-        }
-    }
-}
-
-alias INPUT_RECORD* PINPUT_RECORD;
-alias INPUT_RECORD _INPUT_RECORD;
-alias INPUT_RECORD TINPUTRECORD;
-alias INPUT_RECORD* PINPUTRECORD;
-
-struct SYSTEMTIME
-{
-    ushort wYear;
-    ushort wMonth;
-    ushort wDayOfWeek;
-    ushort wDay;
-    ushort wHour;
-    ushort wMinute;
-    ushort wSecond;
-    ushort wMilliseconds;
-}
-
-alias SYSTEMTIME* LPSYSTEMTIME;
-alias SYSTEMTIME _SYSTEMTIME;
-alias SYSTEMTIME TSYSTEMTIME;
-alias SYSTEMTIME* PSYSTEMTIME;
-
-struct JOB_INFO_1
-{
-    DWORD JobId;
-    LPTSTR pPrinterName;
-    LPTSTR pMachineName;
-    LPTSTR pUserName;
-    LPTSTR pDocument;
-    LPTSTR pDatatype;
-    LPTSTR pStatus;
-    DWORD Status;
-    DWORD Priority;
-    DWORD Position;
-    DWORD TotalPages;
-    DWORD PagesPrinted;
-    SYSTEMTIME Submitted;
-}
-
-alias JOB_INFO_1 _JOB_INFO_1;
-alias JOB_INFO_1 TJOBINFO1;
-alias JOB_INFO_1* PJOBINFO1;
-
-struct SID_IDENTIFIER_AUTHORITY
-{
-    ubyte[1 + 5] Value;
-}
-
-alias SID_IDENTIFIER_AUTHORITY* LPSID_IDENTIFIER_AUTHORITY;
-alias SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY;
-alias SID_IDENTIFIER_AUTHORITY _SID_IDENTIFIER_AUTHORITY;
-alias SID_IDENTIFIER_AUTHORITY TSIDIDENTIFIERAUTHORITY;
-alias SID_IDENTIFIER_AUTHORITY* PSIDIDENTIFIERAUTHORITY;
-
-struct SID
-{
-    ubyte Revision;
-    ubyte SubAuthorityCount;
-    SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
-    DWORD[1 + ANYSIZE_ARRAY-1] SubAuthority;
-}
-
-alias SID _SID;
-alias SID TSID;
-alias SID* PSID;
-alias ushort SECURITY_DESCRIPTOR_CONTROL;
-alias SECURITY_DESCRIPTOR_CONTROL* PSECURITY_DESCRIPTOR_CONTROL;
-alias SECURITY_DESCRIPTOR_CONTROL TSECURITYDESCRIPTORCONTROL;
-alias SECURITY_DESCRIPTOR_CONTROL* PSECURITYDESCRIPTORCONTROL;
-
-struct SECURITY_DESCRIPTOR
-{
-    ubyte Revision;
-    ubyte Sbz1;
-    SECURITY_DESCRIPTOR_CONTROL Control;
-    PSID Owner;
-    PSID Group;
-    PACL Sacl;
-    PACL Dacl;
-}
-
-alias SECURITY_DESCRIPTOR* PSECURITY_DESCRIPTOR;
-alias SECURITY_DESCRIPTOR _SECURITY_DESCRIPTOR;
-alias SECURITY_DESCRIPTOR TSECURITYDESCRIPTOR;
-alias SECURITY_DESCRIPTOR* PSECURITYDESCRIPTOR;
-
-struct JOB_INFO_2
-{
-    DWORD JobId;
-    LPTSTR pPrinterName;
-    LPTSTR pMachineName;
-    LPTSTR pUserName;
-    LPTSTR pDocument;
-    LPTSTR pNotifyName;
-    LPTSTR pDatatype;
-    LPTSTR pPrintProcessor;
-    LPTSTR pParameters;
-    LPTSTR pDriverName;
-    LPDEVMODE pDevMode;
-    LPTSTR pStatus;
-    PSECURITY_DESCRIPTOR pSecurityDescriptor;
-    DWORD Status;
-    DWORD Priority;
-    DWORD Position;
-    DWORD StartTime;
-    DWORD UntilTime;
-    DWORD TotalPages;
-    DWORD Size;
-    SYSTEMTIME Submitted;
-    DWORD Time;
-    DWORD PagesPrinted;
-}
-
-alias JOB_INFO_2 _JOB_INFO_2;
-alias JOB_INFO_2 TJOBINFO2;
-alias JOB_INFO_2* PJOBINFO2;
-
-struct KERNINGPAIR
-{
-    ushort wFirst;
-    ushort wSecond;
-    int iKernAmount;
-}
-
-alias KERNINGPAIR* LPKERNINGPAIR;
-alias KERNINGPAIR TAGKERNINGPAIR;
-alias KERNINGPAIR TKERNINGPAIR;
-alias KERNINGPAIR* PKERNINGPAIR;
-
-struct LANA_ENUM
-{
-    UCHAR length;
-    UCHAR[1 + MAX_LANA-1] lana;
-}
-
-alias LANA_ENUM _LANA_ENUM;
-alias LANA_ENUM TLANAENUM;
-alias LANA_ENUM* PLANAENUM;
-
-struct LDT_ENTRY
-{
-    ushort LimitLow;
-    ushort BaseLow;
-
-    union
-    {
-        struct
-        {
-            ubyte BaseMid;
-            ubyte Flags1;
-            ubyte Flags2;
-            ubyte BaseHi;
-        }
-        struct
-        {
-            int flag0;
-        }
-    }
-}
-
-alias LDT_ENTRY* LPLDT_ENTRY;
-alias LDT_ENTRY* PLDT_ENTRY;
-alias LDT_ENTRY _LDT_ENTRY;
-alias LDT_ENTRY TLDTENTRY;
-alias LDT_ENTRY* PLDTENTRY;
-enum : DWORD {
-    bm_LDT_ENTRY_BaseMid = (0xFF),
-    bp_LDT_ENTRY_BaseMid = (0),
-    bm_LDT_ENTRY_Type = (0x1F00),
-    bp_LDT_ENTRY_Type = (8),
-    bm_LDT_ENTRY_Dpl = (0x6000),
-    bp_LDT_ENTRY_Dpl = (13),
-    bm_LDT_ENTRY_Pres = (0x8000),
-    bp_LDT_ENTRY_Pres = (15),
-    bm_LDT_ENTRY_LimitHi = (0xF0000),
-    bp_LDT_ENTRY_LimitHi = (16),
-    bm_LDT_ENTRY_Sys = (0x100000),
-    bp_LDT_ENTRY_Sys = (20),
-    bm_LDT_ENTRY_Reserved_0 = (0x200000),
-    bp_LDT_ENTRY_Reserved_0 = (21),
-    bm_LDT_ENTRY_Default_Big = (0x400000),
-    bp_LDT_ENTRY_Default_Big = (22),
-    bm_LDT_ENTRY_Granularity = (0x800000),
-    bp_LDT_ENTRY_Granularity = (23),
-    bm_LDT_ENTRY_BaseHi = (0xFF000000),
-    bp_LDT_ENTRY_BaseHi = (24),
-}
-
-struct LOCALESIGNATURE
-{
-    DWORD[1 + 3] lsUsb;
-    DWORD[1 + 1] lsCsbDefault;
-    DWORD[1 + 1] lsCsbSupported;
-}
-
-alias LOCALESIGNATURE TAGLOCALESIGNATURE;
-alias LOCALESIGNATURE TLOCALESIGNATURE;
-alias LOCALESIGNATURE* PLOCALESIGNATURE;
-
-struct LOCALGROUP_MEMBERS_INFO_0
-{
-    PSID lgrmi0_sid;
-}
-
-alias LOCALGROUP_MEMBERS_INFO_0 _LOCALGROUP_MEMBERS_INFO_0;
-alias LOCALGROUP_MEMBERS_INFO_0 TLOCALGROUPMEMBERSINFO0;
-alias LOCALGROUP_MEMBERS_INFO_0* PLOCALGROUPMEMBERSINFO0;
-
-struct LOCALGROUP_MEMBERS_INFO_3
-{
-    LPWSTR lgrmi3_domainandname;
-}
-
-alias LOCALGROUP_MEMBERS_INFO_3 _LOCALGROUP_MEMBERS_INFO_3;
-alias LOCALGROUP_MEMBERS_INFO_3 TLOCALGROUPMEMBERSINFO3;
-alias LOCALGROUP_MEMBERS_INFO_3* PLOCALGROUPMEMBERSINFO3;
-alias int FXPT16DOT16;
-alias FXPT16DOT16* LPFXPT16DOT16;
-alias FXPT16DOT16 TFXPT16DOT16;
-alias FXPT16DOT16* PFXPT16DOT16;
-alias LARGE_INTEGER LUID;
-alias LUID TLUID;
-alias LUID* PLUID;
-
-struct LUID_AND_ATTRIBUTES
-{
-    LUID Luid;
-    DWORD Attributes;
-}
-
-alias LUID_AND_ATTRIBUTES _LUID_AND_ATTRIBUTES;
-alias LUID_AND_ATTRIBUTES TLUIDANDATTRIBUTES;
-alias LUID_AND_ATTRIBUTES* PLUIDANDATTRIBUTES;
-alias LUID_AND_ATTRIBUTES[1 + ANYSIZE_ARRAY-1] LUID_AND_ATTRIBUTES_ARRAY;
-alias LUID_AND_ATTRIBUTES_ARRAY* PLUID_AND_ATTRIBUTES_ARRAY;
-alias LUID_AND_ATTRIBUTES_ARRAY TLUIDANDATTRIBUTESARRAY;
-alias LUID_AND_ATTRIBUTES_ARRAY* PLUIDANDATTRIBUTESARRAY;
-
-struct LV_COLUMN
-{
-    UINT mask;
-    int fmt;
-    int cx;
-    LPTSTR pszText;
-    int cchTextMax;
-    int iSubItem;
-}
-
-alias LV_COLUMN _LV_COLUMN;
-alias LV_COLUMN TLVCOLUMN;
-alias LV_COLUMN* PLVCOLUMN;
-
-struct LV_ITEM
-{
-    UINT mask;
-    int iItem;
-    int iSubItem;
-    UINT state;
-    UINT stateMask;
-    LPTSTR pszText;
-    int cchTextMax;
-    int iImage;
-    LPARAM lParam;
-}
-
-alias LV_ITEM _LV_ITEM;
-alias LV_ITEM TLVITEM;
-alias LV_ITEM* PLVITEM;
-
-struct LV_DISPINFO
-{
-    NMHDR hdr;
-    LV_ITEM item;
-}
-
-alias LV_DISPINFO TAGLV_DISPINFO;
-alias LV_DISPINFO TLVDISPINFO;
-alias LV_DISPINFO* PLVDISPINFO;
-
-struct LV_FINDINFO
-{
-    UINT flags;
-    LPCTSTR psz;
-    LPARAM lParam;
-    POINT pt;
-    UINT vkDirection;
-}
-
-alias LV_FINDINFO _LV_FINDINFO;
-alias LV_FINDINFO TLVFINDINFO;
-alias LV_FINDINFO* PLVFINDINFO;
-
-struct LV_HITTESTINFO
-{
-    POINT pt;
-    UINT flags;
-    int iItem;
-}
-
-alias LV_HITTESTINFO _LV_HITTESTINFO;
-alias LV_HITTESTINFO TLVHITTESTINFO;
-alias LV_HITTESTINFO* PLVHITTESTINFO;
-
-struct LV_KEYDOWN
-{
-    NMHDR hdr;
-    ushort wVKey;
-    UINT flags;
-}
-
-alias LV_KEYDOWN TAGLV_KEYDOWN;
-alias LV_KEYDOWN TLVKEYDOWN;
-alias LV_KEYDOWN* PLVKEYDOWN;
-
-struct MAT2
-{
-    FIXED eM11;
-    FIXED eM12;
-    FIXED eM21;
-    FIXED eM22;
-}
-
-alias MAT2 _MAT2;
-alias MAT2 TMAT2;
-alias MAT2* PMAT2;
-
-struct MDICREATESTRUCT
-{
-    LPCTSTR szClass;
-    LPCTSTR szTitle;
-    HANDLE hOwner;
-    int x;
-    int y;
-    int cx;
-    int cy;
-    DWORD style;
-    LPARAM lParam;
-}
-
-alias MDICREATESTRUCT* LPMDICREATESTRUCT;
-alias MDICREATESTRUCT TAGMDICREATESTRUCT;
-alias MDICREATESTRUCT TMDICREATESTRUCT;
-alias MDICREATESTRUCT* PMDICREATESTRUCT;
-
-struct MEASUREITEMSTRUCT
-{
-    UINT CtlType;
-    UINT CtlID;
-    UINT itemID;
-    UINT itemWidth;
-    UINT itemHeight;
-    DWORD itemData;
-}
-
-alias MEASUREITEMSTRUCT* LPMEASUREITEMSTRUCT;
-alias MEASUREITEMSTRUCT TAGMEASUREITEMSTRUCT;
-alias MEASUREITEMSTRUCT TMEASUREITEMSTRUCT;
-alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT;
-
-struct MEMORY_BASIC_INFORMATION
-{
-    PVOID BaseAddress;
-    PVOID AllocationBase;
-    DWORD AllocationProtect;
-    DWORD RegionSize;
-    DWORD State;
-    DWORD Protect;
-    DWORD _Type;
-}
-
-alias MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION;
-alias MEMORY_BASIC_INFORMATION _MEMORY_BASIC_INFORMATION;
-alias MEMORY_BASIC_INFORMATION TMEMORYBASICINFORMATION;
-alias MEMORY_BASIC_INFORMATION* PMEMORYBASICINFORMATION;
-
-struct MEMORYSTATUS
-{
-    DWORD dwLength;
-    DWORD dwMemoryLoad;
-    DWORD dwTotalPhys;
-    DWORD dwAvailPhys;
-    DWORD dwTotalPageFile;
-    DWORD dwAvailPageFile;
-    DWORD dwTotalVirtual;
-    DWORD dwAvailVirtual;
-}
-
-alias MEMORYSTATUS* LPMEMORYSTATUS;
-alias MEMORYSTATUS _MEMORYSTATUS;
-alias MEMORYSTATUS TMEMORYSTATUS;
-alias MEMORYSTATUS* PMEMORYSTATUS;
-
-struct MENUEX_TEMPLATE_HEADER
-{
-    ushort wVersion;
-    ushort wOffset;
-    DWORD dwHelpId;
-}
-
-alias MENUEX_TEMPLATE_HEADER TMENUXTEMPLATEHEADER;
-alias MENUEX_TEMPLATE_HEADER* PMENUXTEMPLATEHEADER;
-
-struct MENUEX_TEMPLATE_ITEM
-{
-    DWORD dwType;
-    DWORD dwState;
-    UINT uId;
-    ubyte bResInfo;
-    WCHAR[1 + 0] szText;
-    DWORD dwHelpId;
-}
-
-alias MENUEX_TEMPLATE_ITEM TMENUEXTEMPLATEITEM;
-alias MENUEX_TEMPLATE_ITEM* PMENUEXTEMPLATEITEM;
-
-/*
-* Feature in Windows.  The hbmpItem field requires Windows 4.10
-* or greater.  On Windows NT 4.0, passing in a larger struct size
-* in the cbSize field does nothing.  On Windows 95, the MENUITEMINFO
-* calls fail when the struct size is too large.  The fix is to ensure
-* that the correct struct size is used for the Windows platform.
-*/
-struct MENUITEMINFOA
-{
-    UINT    cbSize;
-    UINT    fMask;
-    UINT    fType;          // used if MIIM_TYPE
-    UINT    fState;         // used if MIIM_STATE
-    UINT    wID;            // used if MIIM_ID
-    HMENU   hSubMenu;       // used if MIIM_SUBMENU
-    HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
-    HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
-    DWORD   dwItemData;     // used if MIIM_DATA
-    LPSTR   dwTypeData;     // used if MIIM_TYPE
-    UINT    cch;            // used if MIIM_TYPE
-    HBITMAP hbmpItem;
-}
-alias MENUITEMINFOA* PMENUITEMINFOA, LPMENUITEMINFOA;
-struct MENUITEMINFOW
-{
-    UINT    cbSize;
-    UINT    fMask;
-    UINT    fType;          // used if MIIM_TYPE
-    UINT    fState;         // used if MIIM_STATE
-    UINT    wID;            // used if MIIM_ID
-    HMENU   hSubMenu;       // used if MIIM_SUBMENU
-    HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
-    HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
-    DWORD   dwItemData;     // used if MIIM_DATA
-    LPWSTR  dwTypeData;     // used if MIIM_TYPE
-    UINT    cch;            // used if MIIM_TYPE
-    HBITMAP hbmpItem;
-}   alias MENUITEMINFOW* PMENUITEMINFOW, LPMENUITEMINFOW;
-version(Win32SansUnicode)
-{
-    alias MENUITEMINFOA MENUITEMINFO;
-}
-else
-{
-    alias MENUITEMINFOW MENUITEMINFO;
-}
-alias MENUITEMINFO * LPMENUITEMINFO;
-alias MENUITEMINFO * LPCMENUITEMINFO;
-alias MENUITEMINFO TAGMENUITEMINFO;
-alias MENUITEMINFO TMENUITEMINFO;
-alias MENUITEMINFO TMENUITEMINFOA;
-alias MENUITEMINFO* PMENUITEMINFO;
-
-struct MENUITEMTEMPLATE
-{
-    ushort mtOption;
-    ushort mtID;
-    WCHAR[1 + 0] mtString;
-}
-
-alias MENUITEMTEMPLATE TMENUITEMTEMPLATE;
-alias MENUITEMTEMPLATE* PMENUITEMTEMPLATE;
-
-struct MENUITEMTEMPLATEHEADER
-{
-    ushort versionNumber;
-    ushort offset;
-}
-
-alias MENUITEMTEMPLATEHEADER TMENUITEMTEMPLATEHEADER;
-alias MENUITEMTEMPLATEHEADER* PMENUITEMTEMPLATEHEADER;
-
-struct MENUTEMPLATE
-{
-}
-
-alias MENUTEMPLATE* LPMENUTEMPLATE;
-alias MENUTEMPLATE TMENUTEMPLATE;
-alias MENUTEMPLATE* PMENUTEMPLATE;
-
-struct METAFILEPICT
-{
-    LONG mm;
-    LONG xExt;
-    LONG yExt;
-    HMETAFILE hMF;
-}
-
-alias METAFILEPICT* LPMETAFILEPICT;
-alias METAFILEPICT TAGMETAFILEPICT;
-alias METAFILEPICT TMETAFILEPICT;
-alias METAFILEPICT* PMETAFILEPICT;
-
-align(1) struct METAHEADER
-{
-    ushort mtType;
-    ushort mtHeaderSize;
-    ushort mtVersion;
-    DWORD mtSize;
-    ushort mtNoObjects;
-    DWORD mtMaxRecord;
-    ushort mtNoParameters;
-}
-
-alias METAHEADER TAGMETAHEADER;
-alias METAHEADER TMETAHEADER;
-alias METAHEADER* PMETAHEADER;
-
-struct METARECORD
-{
-    DWORD rdSize;
-    ushort rdFunction;
-    ushort[1 + 0] rdParm;
-}
-
-alias METARECORD* LPMETARECORD;
-alias METARECORD TAGMETARECORD;
-alias METARECORD TMETARECORD;
-alias METARECORD* PMETARECORD;
-
-struct MINIMIZEDMETRICS
-{
-    UINT cbSize;
-    int iWidth;
-    int iHorzGap;
-    int iVertGap;
-    int iArrange;
-}
-
-alias MINIMIZEDMETRICS* LPMINIMIZEDMETRICS;
-alias MINIMIZEDMETRICS TAGMINIMIZEDMETRICS;
-alias MINIMIZEDMETRICS TMINIMIZEDMETRICS;
-alias MINIMIZEDMETRICS* PMINIMIZEDMETRICS;
-
-struct MINMAXINFO
-{
-    POINT ptReserved;
-    POINT ptMaxSize;
-    POINT ptMaxPosition;
-    POINT ptMinTrackSize;
-    POINT ptMaxTrackSize;
-}
-
-alias MINMAXINFO TAGMINMAXINFO;
-alias MINMAXINFO TMINMAXINFO;
-alias MINMAXINFO* PMINMAXINFO;
-
-struct MODEMDEVCAPS
-{
-    DWORD dwActualSize;
-    DWORD dwRequiredSize;
-    DWORD dwDevSpecificOffset;
-    DWORD dwDevSpecificSize;
-    DWORD dwModemProviderVersion;
-    DWORD dwModemManufacturerOffset;
-    DWORD dwModemManufacturerSize;
-    DWORD dwModemModelOffset;
-    DWORD dwModemModelSize;
-    DWORD dwModemVersionOffset;
-    DWORD dwModemVersionSize;
-    DWORD dwDialOptions;
-    DWORD dwCallSetupFailTimer;
-    DWORD dwInactivityTimeout;
-    DWORD dwSpeakerVolume;
-    DWORD dwSpeakerMode;
-    DWORD dwModemOptions;
-    DWORD dwMaxDTERate;
-    DWORD dwMaxDCERate;
-    ubyte[1 + 0] abVariablePortion;
-}
-
-alias MODEMDEVCAPS* LPMODEMDEVCAPS;
-alias MODEMDEVCAPS TMODEMDEVCAPS;
-alias MODEMDEVCAPS* PMODEMDEVCAPS;
-alias MODEMDEVCAPS MODEMDEVCAPS_TAG;
-
-struct MODEMSETTINGS
-{
-    DWORD dwActualSize;
-    DWORD dwRequiredSize;
-    DWORD dwDevSpecificOffset;
-    DWORD dwDevSpecificSize;
-    DWORD dwCallSetupFailTimer;
-    DWORD dwInactivityTimeout;
-    DWORD dwSpeakerVolume;
-    DWORD dwSpeakerMode;
-    DWORD dwPreferredModemOptions;
-    DWORD dwNegotiatedModemOptions;
-    DWORD dwNegotiatedDCERate;
-    ubyte[1 + 0] abVariablePortion;
-}
-
-alias MODEMSETTINGS* LPMODEMSETTINGS;
-alias MODEMSETTINGS TMODEMSETTINGS;
-alias MODEMSETTINGS* PMODEMSETTINGS;
-alias MODEMSETTINGS MODEMSETTINGS_TAG;
-
-struct MONCBSTRUCT
-{
-    UINT cb;
-    DWORD dwTime;
-    HANDLE hTask;
-    DWORD dwRet;
-    UINT wType;
-    UINT wFmt;
-    HCONV hConv;
-    HSZ hsz1;
-    HSZ hsz2;
-    HDDEDATA hData;
-    DWORD dwData1;
-    DWORD dwData2;
-    CONVCONTEXT cc;
-    DWORD cbData;
-    DWORD[1 + 7] Data;
-}
-
-alias MONCBSTRUCT TAGMONCBSTRUCT;
-alias MONCBSTRUCT TMONCBSTRUCT;
-alias MONCBSTRUCT* PMONCBSTRUCT;
-
-struct MONCONVSTRUCT
-{
-    UINT cb;
-    WINBOOL fConnect;
-    DWORD dwTime;
-    HANDLE hTask;
-    HSZ hszSvc;
-    HSZ hszTopic;
-    HCONV hConvClient;
-    HCONV hConvServer;
-}
-
-alias MONCONVSTRUCT TAGMONCONVSTRUCT;
-alias MONCONVSTRUCT TMONCONVSTRUCT;
-alias MONCONVSTRUCT* PMONCONVSTRUCT;
-
-struct MONERRSTRUCT
-{
-    UINT cb;
-    UINT wLastError;
-    DWORD dwTime;
-    HANDLE hTask;
-}
-
-alias MONERRSTRUCT TAGMONERRSTRUCT;
-alias MONERRSTRUCT TMONERRSTRUCT;
-alias MONERRSTRUCT* PMONERRSTRUCT;
-
-struct MONHSZSTRUCT
-{
-    UINT cb;
-    WINBOOL fsAction;
-    DWORD dwTime;
-    HSZ hsz;
-    HANDLE hTask;
-    TCHAR[1 + 0] str;
-}
-
-alias MONHSZSTRUCT TAGMONHSZSTRUCT;
-alias MONHSZSTRUCT TMONHSZSTRUCT;
-alias MONHSZSTRUCT* PMONHSZSTRUCT;
-
-struct MONITOR_INFO_1
-{
-    LPTSTR pName;
-}
-
-alias MONITOR_INFO_1 _MONITOR_INFO_1;
-alias MONITOR_INFO_1 TMONITORINFO1;
-alias MONITOR_INFO_1* PMONITORINFO1;
-
-struct MONITOR_INFO_2
-{
-    LPTSTR pName;
-    LPTSTR pEnvironment;
-    LPTSTR pDLLName;
-}
-
-alias MONITOR_INFO_2 _MONITOR_INFO_2;
-alias MONITOR_INFO_2 TMONITORINFO2;
-alias MONITOR_INFO_2* PMONITORINFO2;
-
-struct MONLINKSTRUCT
-{
-    UINT cb;
-    DWORD dwTime;
-    HANDLE hTask;
-    WINBOOL fEstablished;
-    WINBOOL fNoData;
-    HSZ hszSvc;
-    HSZ hszTopic;
-    HSZ hszItem;
-    UINT wFmt;
-    WINBOOL fServer;
-    HCONV hConvServer;
-    HCONV hConvClient;
-}
-
-alias MONLINKSTRUCT TAGMONLINKSTRUCT;
-alias MONLINKSTRUCT TMONLINKSTRUCT;
-alias MONLINKSTRUCT* PMONLINKSTRUCT;
-
-struct MONMSGSTRUCT
-{
-    UINT cb;
-    HWND hwndTo;
-    DWORD dwTime;
-    HANDLE hTask;
-    UINT wMsg;
-    WPARAM wParam;
-    LPARAM lParam;
-    DDEML_MSG_HOOK_DATA dmhd;
-}
-
-alias MONMSGSTRUCT TAGMONMSGSTRUCT;
-alias MONMSGSTRUCT TMONMSGSTRUCT;
-alias MONMSGSTRUCT* PMONMSGSTRUCT;
-
-struct MOUSEHOOKSTRUCT
-{
-    POINT pt;
-    HWND hwnd;
-    UINT wHitTestCode;
-    DWORD dwExtraInfo;
-}
-
-alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT;
-alias MOUSEHOOKSTRUCT TAGMOUSEHOOKSTRUCT;
-alias MOUSEHOOKSTRUCT TMOUSEHOOKSTRUCT;
-alias MOUSEHOOKSTRUCT* PMOUSEHOOKSTRUCT;
-
-struct MOUSEKEYS
-{
-    DWORD cbSize;
-    DWORD dwFlags;
-    DWORD iMaxSpeed;
-    DWORD iTimeToMaxSpeed;
-    DWORD iCtrlSpeed;
-    DWORD dwReserved1;
-    DWORD dwReserved2;
-}
-
-alias MOUSEKEYS TMOUSEKEYS;
-alias MOUSEKEYS* PMOUSEKEYS;
-
-struct MSG
-{
-    HWND hwnd;
-    UINT message;
-    WPARAM wParam;
-    LPARAM lParam;
-    DWORD time;
-    POINT pt;
-}
-
-alias MSG* LPMSG;
-alias MSG TAGMSG;
-alias MSG TMSG;
-alias MSG* PMSG;
-extern(Windows){
-alias void (*MSGBOXCALLBACK)(LPHELPINFO);
-}
-alias MSGBOXCALLBACK TMSGBOXCALLBACK;
-
-struct MSGBOXPARAMS
-{
-    UINT cbSize;
-    HWND hwndOwner;
-    HINST hInstance;
-    LPCSTR lpszText;
-    LPCSTR lpszCaption;
-    DWORD dwStyle;
-    LPCSTR lpszIcon;
-    DWORD dwContextHelpId;
-    MSGBOXCALLBACK lpfnMsgBoxCallback;
-    DWORD dwLanguageId;
-}
-
-alias MSGBOXPARAMS* LPMSGBOXPARAMS;
-alias MSGBOXPARAMS TMSGBOXPARAMS;
-alias MSGBOXPARAMS TMSGBOXPARAMSA;
-alias MSGBOXPARAMS* PMSGBOXPARAMS;
-
-struct MSGFILTER
-{
-    NMHDR nmhdr;
-    UINT msg;
-    WPARAM wParam;
-    LPARAM lParam;
-}
-
-alias MSGFILTER _MSGFILTER;
-alias MSGFILTER TMSGFILTER;
-alias MSGFILTER* PMSGFILTER;
-
-struct MULTIKEYHELP
-{
-    DWORD mkSize;
-    TCHAR mkKeylist;
-    TCHAR[1 + 0] szKeyphrase;
-}
-
-alias MULTIKEYHELP TAGMULTIKEYHELP;
-alias MULTIKEYHELP TMULTIKEYHELP;
-alias MULTIKEYHELP* PMULTIKEYHELP;
-
-struct NAME_BUFFER
-{
-    UCHAR[1 + NCBNAMSZ-1] name;
-    UCHAR name_num;
-    UCHAR name_flags;
-}
-
-alias NAME_BUFFER _NAME_BUFFER;
-alias NAME_BUFFER TNAMEBUFFER;
-alias NAME_BUFFER* PNAMEBUFFER;
-alias _NCB* P_NCB;
-
-struct NCB
-{
-    UCHAR ncb_command;
-    UCHAR ncb_retcode;
-    UCHAR ncb_lsn;
-    UCHAR ncb_num;
-    PUCHAR ncb_buffer;
-    ushort ncb_length;
-    UCHAR[1 + NCBNAMSZ-1] ncb_callname;
-    UCHAR[1 + NCBNAMSZ-1] ncb_name;
-    UCHAR ncb_rto;
-    UCHAR ncb_sto;
-    POINTER ncb_post;
-    UCHAR ncb_lana_num;
-    UCHAR ncb_cmd_cplt;
-    UCHAR[1 + 9] ncb_reserve;
-    HANDLE ncb_event;
-}
-
-alias NCB _NCB;
-alias NCB TNCB;
-alias NCB* PNCB;
-
-struct NCCALCSIZE_PARAMS
-{
-    RECT[1 + 2] rgrc;
-    PWINDOWPOS lppos;
-}
-
-alias NCCALCSIZE_PARAMS _NCCALCSIZE_PARAMS;
-alias NCCALCSIZE_PARAMS TNCCALCSIZEPARAMS;
-alias NCCALCSIZE_PARAMS* PNCCALCSIZEPARAMS;
-
-struct NDDESHAREINFO
-{
-    LONG lRevision;
-    LPTSTR lpszShareName;
-    LONG lShareType;
-    LPTSTR lpszAppTopicList;
-    LONG fSharedFlag;
-    LONG fService;
-    LONG fStartAppFlag;
-    LONG nCmdShow;
-    LONG[1 + 1] qModifyId;
-    LONG cNumItems;
-    LPTSTR lpszItemList;
-}
-
-alias NDDESHAREINFO _NDDESHAREINFO;
-alias NDDESHAREINFO TNDDESHAREINFO;
-alias NDDESHAREINFO* PNDDESHAREINFO;
-
-struct NETRESOURCE
-{
-    DWORD dwScope;
-    DWORD dwType;
-    DWORD dwDisplayType;
-    DWORD dwUsage;
-    LPTSTR lpLocalName;
-    LPTSTR lpRemoteName;
-    LPTSTR lpComment;
-    LPTSTR lpProvider;
-}
-
-alias NETRESOURCE* LPNETRESOURCE;
-alias NETRESOURCE _NETRESOURCE;
-alias NETRESOURCE TNETRESOURCE;
-alias NETRESOURCE TNETRESOURCEA;
-alias NETRESOURCE* PNETRESOURCE;
-alias NETRESOURCE* PNETRESOURCEA;
-
-struct NEWCPLINFO
-{
-    DWORD dwSize;
-    DWORD dwFlags;
-    DWORD dwHelpContext;
-    LONG lData;
-    HICON hIcon;
-    TCHAR[1 + 31] szName;
-    TCHAR[1 + 63] szInfo;
-    TCHAR[1 + 127] szHelpFile;
-}
-
-alias NEWCPLINFO TAGNEWCPLINFO;
-alias NEWCPLINFO TNEWCPLINFO;
-alias NEWCPLINFO* PNEWCPLINFO;
-
-struct NEWTEXTMETRICA {
-    LONG   tmHeight;
-    LONG   tmAscent;
-    LONG   tmDescent;
-    LONG   tmInternalLeading;
-    LONG   tmExternalLeading;
-    LONG   tmAveCharWidth;
-    LONG   tmMaxCharWidth;
-    LONG   tmWeight;
-    LONG   tmOverhang;
-    LONG   tmDigitizedAspectX;
-    LONG   tmDigitizedAspectY;
-    BYTE  tmFirstChar;
-    BYTE  tmLastChar;
-    BYTE  tmDefaultChar;
-    BYTE  tmBreakChar;
-    BYTE   tmItalic;
-    BYTE   tmUnderlined;
-    BYTE   tmStruckOut;
-    BYTE   tmPitchAndFamily;
-    BYTE   tmCharSet;
-    DWORD  ntmFlags;
-    UINT   ntmSizeEM;
-    UINT   ntmCellHeight;
-    UINT   ntmAvgWidth;
-}
-struct NEWTEXTMETRICW {
-    LONG   tmHeight;
-    LONG   tmAscent;
-    LONG   tmDescent;
-    LONG   tmInternalLeading;
-    LONG   tmExternalLeading;
-    LONG   tmAveCharWidth;
-    LONG   tmMaxCharWidth;
-    LONG   tmWeight;
-    LONG   tmOverhang;
-    LONG   tmDigitizedAspectX;
-    LONG   tmDigitizedAspectY;
-    WCHAR  tmFirstChar;
-    WCHAR  tmLastChar;
-    WCHAR  tmDefaultChar;
-    WCHAR  tmBreakChar;
-    BYTE   tmItalic;
-    BYTE   tmUnderlined;
-    BYTE   tmStruckOut;
-    BYTE   tmPitchAndFamily;
-    BYTE   tmCharSet;
-    DWORD  ntmFlags;
-    UINT   ntmSizeEM;
-    UINT   ntmCellHeight;
-    UINT   ntmAvgWidth;
-}
-
-struct NEWTEXTMETRICEXA
-{
-    NEWTEXTMETRICA  ntmentm;
-    FONTSIGNATURE  ntmeFontSignature;
-}
-struct NEWTEXTMETRICEXW
-{
-    NEWTEXTMETRICW  ntmentm;
-    FONTSIGNATURE  ntmeFontSignature;
-}
-
-
-version(Win32SansUnicode)
-{
-    alias NEWTEXTMETRICA NEWTEXTMETRIC;
-    alias NEWTEXTMETRICEXA NEWTEXTMETRICEX;
-}
-else
-{
-    alias NEWTEXTMETRICW NEWTEXTMETRIC;
-    alias NEWTEXTMETRICEXW NEWTEXTMETRICEX;
-}
-
-alias NEWTEXTMETRIC TNEWTEXTMETRIC;
-alias NEWTEXTMETRIC* PNEWTEXTMETRIC;
-alias NEWTEXTMETRIC* LPNEWTEXTMETRIC;
-alias NEWTEXTMETRIC TAGNEWTEXTMETRIC;
-alias NEWTEXTMETRICEX TAGNEWTEXTMETRICEX;
-alias NEWTEXTMETRICEX TNEWTEXTMETRICEX;
-alias NEWTEXTMETRICEX* PNEWTEXTMETRICEX;
-
-struct NM_LISTVIEW
-{
-    NMHDR hdr;
-    int iItem;
-    int iSubItem;
-    UINT uNewState;
-    UINT uOldState;
-    UINT uChanged;
-    POINT ptAction;
-    LPARAM lParam;
-}
-
-alias NM_LISTVIEW TAGNM_LISTVIEW;
-alias NM_LISTVIEW TNMLISTVIEW;
-alias NM_LISTVIEW* PNMLISTVIEW;
-
-struct TVITEMA
-{
-    UINT      mask;
-    HTREEITEM hItem;
-    UINT      state;
-    UINT      stateMask;
-    LPSTR     pszText;
-    int       cchTextMax;
-    int       iImage;
-    int       iSelectedImage;
-    int       cChildren;
-    LPARAM    lParam;
-}
-struct TVITEMW
-{
-    UINT      mask;
-    HTREEITEM hItem;
-    UINT      state;
-    UINT      stateMask;
-    LPWSTR    pszText;
-    int       cchTextMax;
-    int       iImage;
-    int       iSelectedImage;
-    int       cChildren;
-    LPARAM    lParam;
-}
-version(Win32SansUnicode)
-{
-    alias TVITEMA TVITEM;
-}
-else
-{
-    alias TVITEMW TVITEM;
-}
-alias TVITEM* LPTVITEM;
-alias TVITEM* LPTV_ITEM;
-alias TVITEM _TV_ITEM;
-alias TVITEM TTVITEM;
-alias TVITEM TV_ITEM;
-alias TVITEM* PTVITEM;
-
-struct NMTREEVIEW
-{
-    NMHDR hdr;
-    UINT action;
-    TVITEM itemOld;
-    TVITEM itemNew;
-    POINT ptDrag;
-}
-alias NMTREEVIEW* PNMTREEVIEW;
-alias NMTREEVIEW* LPNMTREEVIEW;
-alias NMTREEVIEW  NM_TREEVIEW;
-alias NM_TREEVIEW* LPNM_TREEVIEW;
-alias NM_TREEVIEW _NM_TREEVIEW;
-alias NM_TREEVIEW TNMTREEVIEW;
-
-struct NM_UPDOWNW
-{
-    NMHDR hdr;
-    int iPos;
-    int iDelta;
-}
-
-alias NM_UPDOWNW _NM_UPDOWN;
-alias NM_UPDOWNW TNMUPDOWN;
-alias NM_UPDOWNW* PNMUPDOWN;
-alias NM_UPDOWNW NMUPDOWN;
-
-struct NONCLIENTMETRICSA {
-    int cbSize;
-    int iBorderWidth;
-    int iScrollWidth;
-    int iScrollHeight;
-    int iCaptionWidth;
-    int iCaptionHeight;
-    LOGFONTA lfCaptionFont;
-    int iSmCaptionWidth;
-    int iSmCaptionHeight;
-    LOGFONTA lfSmCaptionFont;
-    int iMenuWidth;
-    int iMenuHeight;
-    LOGFONTA lfMenuFont;
-    LOGFONTA lfStatusFont;
-    LOGFONTA lfMessageFont;
-}
-struct NONCLIENTMETRICSW {
-    int cbSize;
-    int iBorderWidth;
-    int iScrollWidth;
-    int iScrollHeight;
-    int iCaptionWidth;
-    int iCaptionHeight;
-    LOGFONTW lfCaptionFont;
-    int iSmCaptionWidth;
-    int iSmCaptionHeight;
-    LOGFONTW lfSmCaptionFont;
-    int iMenuWidth;
-    int iMenuHeight;
-    LOGFONTW lfMenuFont;
-    LOGFONTW lfStatusFont;
-    LOGFONTW lfMessageFont;
-}
-version(Win32SansUnicode)
-{
-    alias NONCLIENTMETRICSA NONCLIENTMETRICS;
-}
-else
-{
-    alias NONCLIENTMETRICSW NONCLIENTMETRICS;
-}
-alias NONCLIENTMETRICS* LPNONCLIENTMETRICS;
-alias NONCLIENTMETRICS TAGNONCLIENTMETRICS;
-alias NONCLIENTMETRICS TNONCLIENTMETRICS;
-alias NONCLIENTMETRICS* PNONCLIENTMETRICS;
-
-struct SERVICE_ADDRESS
-{
-    DWORD dwAddressType;
-    DWORD dwAddressFlags;
-    DWORD dwAddressLength;
-    DWORD dwPrincipalLength;
-    ubyte* lpAddress;
-    ubyte* lpPrincipal;
-}
-
-alias SERVICE_ADDRESS _SERVICE_ADDRESS;
-alias SERVICE_ADDRESS TSERVICEADDRESS;
-alias SERVICE_ADDRESS* PSERVICEADDRESS;
-
-struct SERVICE_ADDRESSES
-{
-    DWORD dwAddressCount;
-    SERVICE_ADDRESS[1 + 0] Addresses;
-}
-
-alias SERVICE_ADDRESSES* LPSERVICE_ADDRESSES;
-alias SERVICE_ADDRESSES _SERVICE_ADDRESSES;
-alias SERVICE_ADDRESSES TSERVICEADDRESSES;
-alias SERVICE_ADDRESSES* PSERVICEADDRESSES;
-
-align(1) struct __GUID
-{
-
-    union
-    {
-        struct
-        {
-            uint Data1;
-            ushort Data2;
-            ushort Data3;
-            ubyte[1 + 7] Data4;
-        }
-        struct
-        {
-            uint D1;
-            ushort D2;
-            ushort D3;
-            ubyte[1 + 7] D4;
-        }
-    }
-}
-
-alias __GUID* LPGUID;
-alias __GUID _GUID;
-alias __GUID GUID;
-alias __GUID TGUID;
-alias __GUID* PGUID;
-alias __GUID __CLSID;
-alias __CLSID* LPCLSID;
-alias __CLSID TCLSID;
-alias __CLSID* PCLSID;
-
-struct SERVICE_INFO
-{
-    LPGUID lpServiceType;
-    LPTSTR lpServiceName;
-    LPTSTR lpComment;
-    LPTSTR lpLocale;
-    DWORD dwDisplayHint;
-    DWORD dwVersion;
-    DWORD dwTime;
-    LPTSTR lpMachineName;
-    LPSERVICE_ADDRESSES lpServiceAddress;
-    BLOB ServiceSpecificInfo;
-}
-
-alias SERVICE_INFO _SERVICE_INFO;
-alias SERVICE_INFO TSERVICEINFO;
-alias SERVICE_INFO* PSERVICEINFO;
-
-struct NS_SERVICE_INFO
-{
-    DWORD dwNameSpace;
-    SERVICE_INFO ServiceInfo;
-}
-
-alias NS_SERVICE_INFO _NS_SERVICE_INFO;
-alias NS_SERVICE_INFO TNSSERVICEINFO;
-alias NS_SERVICE_INFO* PNSSERVICEINFO;
-
-struct NUMBERFMT
-{
-    UINT NumDigits;
-    UINT LeadingZero;
-    UINT Grouping;
-    LPTSTR lpDecimalSep;
-    LPTSTR lpThousandSep;
-    UINT NegativeOrder;
-}
-
-alias NUMBERFMT _NUMBERFMT;
-alias NUMBERFMT TNUMBERFMT;
-alias NUMBERFMT* PNUMBERFMT;
-
-struct OFSTRUCT
-{
-    ubyte cBytes;
-    ubyte fFixedDisk;
-    ushort nErrCode;
-    ushort Reserved1;
-    ushort Reserved2;
-    char[1 + OFS_MAXPATHNAME-1] szPathName;
-}
-
-alias OFSTRUCT* LPOFSTRUCT;
-alias OFSTRUCT _OFSTRUCT;
-alias OFSTRUCT TOFSTRUCT;
-alias OFSTRUCT* POFSTRUCT;
-
-struct OPENFILENAME
-{
-    DWORD lStructSize;
-    HWND hwndOwner;
-    HINST hInstance;
-    LPCTSTR lpstrFilter;
-    LPTSTR lpstrCustomFilter;
-    DWORD nMaxCustFilter;
-    DWORD nFilterIndex;
-    LPTSTR lpstrFile;
-    DWORD nMaxFile;
-    LPTSTR lpstrFileTitle;
-    DWORD nMaxFileTitle;
-    LPCTSTR lpstrInitialDir;
-    LPCTSTR lpstrTitle;
-    DWORD Flags;
-    ushort nFileOffset;
-    ushort nFileExtension;
-    LPCTSTR lpstrDefExt;
-    DWORD lCustData;
-    LPOFNHOOKPROC lpfnHook;
-    LPCTSTR lpTemplateName;
-}
-
-alias OPENFILENAME* LPOPENFILENAME;
-alias OPENFILENAME TOPENFILENAME;
-alias OPENFILENAME* POPENFILENAME;
-alias OPENFILENAME TAGOFN;
-alias OPENFILENAME TOFN;
-alias OPENFILENAME* POFN;
-
-struct OFNOTIFY
-{
-    NMHDR hdr;
-    LPOPENFILENAME lpOFN;
-    LPTSTR pszFile;
-}
-
-alias OFNOTIFY* LPOFNOTIFY;
-alias OFNOTIFY _OFNOTIFY;
-alias OFNOTIFY TOFNOTIFY;
-alias OFNOTIFY* POFNOTIFY;
-
-struct OSVERSIONINFOA
-{
-    DWORD dwOSVersionInfoSize;
-    DWORD dwMajorVersion;
-    DWORD dwMinorVersion;
-    DWORD dwBuildNumber;
-    DWORD dwPlatformId;
-    CHAR szCSDVersion[ 128 ];
-}
-alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA;
-
-struct OSVERSIONINFOW
-{
-    DWORD dwOSVersionInfoSize;
-    DWORD dwMajorVersion;
-    DWORD dwMinorVersion;
-    DWORD dwBuildNumber;
-    DWORD dwPlatformId;
-    WCHAR szCSDVersion[ 128 ];
-}
-alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW;
-version(Win32SansUnicode)
-{
-    alias OSVERSIONINFOA OSVERSIONINFO;
-}
-else
-{
-    alias OSVERSIONINFOW OSVERSIONINFO;
-}
-alias OSVERSIONINFO* LPOSVERSIONINFO;
-alias OSVERSIONINFO _OSVERSIONINFO;
-alias OSVERSIONINFO TOSVERSIONINFO;
-alias OSVERSIONINFO* POSVERSIONINFO;
-
-struct TEXTMETRICA {
-    align(1):
-    LONG tmHeight;
-    LONG tmAscent;
-    LONG tmDescent;
-    LONG tmInternalLeading;
-    LONG tmExternalLeading;
-    LONG tmAveCharWidth;
-    LONG tmMaxCharWidth;
-    LONG tmWeight;
-    LONG tmOverhang;
-    LONG tmDigitizedAspectX;
-    LONG tmDigitizedAspectY;
-
-    BYTE tmFirstChar;
-    BYTE tmLastChar;
-    BYTE tmDefaultChar;
-    BYTE tmBreakChar;
-
-    BYTE tmItalic;
-    BYTE tmUnderlined;
-    BYTE tmStruckOut;
-    BYTE tmPitchAndFamily;
-    BYTE tmCharSet;
-}
-struct TEXTMETRICW {
-    align(1):
-    LONG tmHeight;
-    LONG tmAscent;
-    LONG tmDescent;
-    LONG tmInternalLeading;
-    LONG tmExternalLeading;
-    LONG tmAveCharWidth;
-    LONG tmMaxCharWidth;
-    LONG tmWeight;
-    LONG tmOverhang;
-    LONG tmDigitizedAspectX;
-    LONG tmDigitizedAspectY;
-
-    WCHAR tmFirstChar;
-    WCHAR tmLastChar;
-    WCHAR tmDefaultChar;
-    WCHAR tmBreakChar;
-
-    BYTE tmItalic;
-    BYTE tmUnderlined;
-    BYTE tmStruckOut;
-    BYTE tmPitchAndFamily;
-    BYTE tmCharSet;
-}
-version(Win32SansUnicode)
-{
-    alias TEXTMETRICA TEXTMETRIC;
-}
-else
-{
-    alias TEXTMETRICW TEXTMETRIC;
-}
-alias TEXTMETRIC* LPTEXTMETRIC;
-alias TEXTMETRIC TAGTEXTMETRIC;
-alias TEXTMETRIC TTEXTMETRIC;
-alias TEXTMETRIC* PTEXTMETRIC;
-
-struct OUTLINETEXTMETRICA
-{
-    UINT       otmSize;
-    TEXTMETRICA otmTextMetrics;
-    BYTE       otmFiller;
-    PANOSE     otmPanoseNumber;
-    UINT       otmfsSelection;
-    UINT       otmfsType;
-    int        otmsCharSlopeRise;
-    int        otmsCharSlopeRun;
-    int        otmItalicAngle;
-    UINT       otmEMSquare;
-    int        otmAscent;
-    int        otmDescent;
-    UINT       otmLineGap;
-    UINT       otmsCapEmHeight;
-    UINT       otmsXHeight;
-    RECT       otmrcFontBox;
-    int        otmMacAscent;
-    int        otmMacDescent;
-    UINT       otmMacLineGap;
-    UINT       otmusMinimumPPEM;
-    POINT      otmptSubscriptSize;
-    POINT      otmptSubscriptOffset;
-    POINT      otmptSuperscriptSize;
-    POINT      otmptSuperscriptOffset;
-    UINT       otmsStrikeoutSize;
-    int        otmsStrikeoutPosition;
-    int        otmsUnderscoreSize;
-    int        otmsUnderscorePosition;
-    PSTR       otmpFamilyName;
-    PSTR       otmpFaceName;
-    PSTR       otmpStyleName;
-    PSTR       otmpFullName;
-}
-struct OUTLINETEXTMETRICW
-{
-    UINT       otmSize;
-    TEXTMETRICW otmTextMetrics;
-    BYTE       otmFiller;
-    PANOSE     otmPanoseNumber;
-    UINT       otmfsSelection;
-    UINT       otmfsType;
-    int        otmsCharSlopeRise;
-    int        otmsCharSlopeRun;
-    int        otmItalicAngle;
-    UINT       otmEMSquare;
-    int        otmAscent;
-    int        otmDescent;
-    UINT       otmLineGap;
-    UINT       otmsCapEmHeight;
-    UINT       otmsXHeight;
-    RECT       otmrcFontBox;
-    int        otmMacAscent;
-    int        otmMacDescent;
-    UINT       otmMacLineGap;
-    UINT       otmusMinimumPPEM;
-    POINT      otmptSubscriptSize;
-    POINT      otmptSubscriptOffset;
-    POINT      otmptSuperscriptSize;
-    POINT      otmptSuperscriptOffset;
-    UINT       otmsStrikeoutSize;
-    int        otmsStrikeoutPosition;
-    int        otmsUnderscoreSize;
-    int        otmsUnderscorePosition;
-    PSTR       otmpFamilyName;
-    PSTR       otmpFaceName;
-    PSTR       otmpStyleName;
-    PSTR       otmpFullName;
-}
-
-alias OUTLINETEXTMETRIC* LPOUTLINETEXTMETRIC;
-alias OUTLINETEXTMETRIC _OUTLINETEXTMETRIC;
-alias OUTLINETEXTMETRIC TOUTLINETEXTMETRIC;
-alias OUTLINETEXTMETRIC* POUTLINETEXTMETRIC;
-version(Win32SansUnicode)
-{
-    alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC;
-    alias OUTLINETEXTMETRICA* LPOUTLINETEXTMETRICA;
-}
-else
-{
-    alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC;
-    alias OUTLINETEXTMETRICW* LPOUTLINETEXTMETRICW;
-}
-
-struct OVERLAPPED
-{
-    DWORD Internal;
-    DWORD InternalHigh;
-    DWORD Offset;
-    DWORD OffsetHigh;
-    HANDLE hEvent;
-}
-
-alias OVERLAPPED* LPOVERLAPPED;
-alias OVERLAPPED _OVERLAPPED;
-alias OVERLAPPED TOVERLAPPED;
-alias OVERLAPPED* POVERLAPPED;
-
-struct TPAGESETUPDLG
-{
-    DWORD lStructSize;
-    HWND hwndOwner;
-    HGLOBAL hDevMode;
-    HGLOBAL hDevNames;
-    DWORD Flags;
-    POINT ptPaperSize;
-    RECT rtMinMargin;
-    RECT rtMargin;
-    HINST hInstance;
-    LPARAM lCustData;
-    LPPAGESETUPHOOK lpfnPageSetupHook;
-    LPPAGEPAINTHOOK lpfnPagePaintHook;
-    LPCTSTR lpPageSetupTemplateName;
-    HGLOBAL hPageSetupTemplate;
-}
-
-alias TPAGESETUPDLG* LPPAGESETUPDLG;
-alias TPAGESETUPDLG* PPAGESETUPDLG;
-alias TPAGESETUPDLG TAGPSD;
-alias TPAGESETUPDLG TPSD;
-alias TPAGESETUPDLG* PPSD;
-
-struct PAINTSTRUCT
-{
-    HDC hdc;
-    WINBOOL fErase;
-    RECT rcPaint;
-    WINBOOL fRestore;
-    WINBOOL fIncUpdate;
-    ubyte[1 + 31] rgbReserved;
-}
-
-alias PAINTSTRUCT* LPPAINTSTRUCT;
-alias PAINTSTRUCT TAGPAINTSTRUCT;
-alias PAINTSTRUCT TPAINTSTRUCT;
-alias PAINTSTRUCT* PPAINTSTRUCT;
-
-struct PARAFORMAT
-{
-    UINT cbSize;
-    DWORD dwMask;
-    ushort wNumbering;
-    ushort wReserved;
-    LONG dxStartIndent;
-    LONG dxRightIndent;
-    LONG dxOffset;
-    ushort wAlignment;
-    SHORT cTabCount;
-    LONG[1 + MAX_TAB_STOPS-1] rgxTabs;
-}
-
-alias PARAFORMAT _PARAFORMAT;
-alias PARAFORMAT TPARAFORMAT;
-alias PARAFORMAT* PPARAFORMAT;
-
-struct PERF_COUNTER_BLOCK
-{
-    DWORD ByteLength;
-}
-
-alias PERF_COUNTER_BLOCK _PERF_COUNTER_BLOCK;
-alias PERF_COUNTER_BLOCK TPERFCOUNTERBLOCK;
-alias PERF_COUNTER_BLOCK* PPERFCOUNTERBLOCK;
-
-struct PERF_COUNTER_DEFINITION
-{
-    DWORD ByteLength;
-    DWORD CounterNameTitleIndex;
-    LPWSTR CounterNameTitle;
-    DWORD CounterHelpTitleIndex;
-    LPWSTR CounterHelpTitle;
-    DWORD DefaultScale;
-    DWORD DetailLevel;
-    DWORD CounterType;
-    DWORD CounterSize;
-    DWORD CounterOffset;
-}
-
-alias PERF_COUNTER_DEFINITION _PERF_COUNTER_DEFINITION;
-alias PERF_COUNTER_DEFINITION TPERFCOUNTERDEFINITION;
-alias PERF_COUNTER_DEFINITION* PPERFCOUNTERDEFINITION;
-
-struct PERF_DATA_BLOCK
-{
-    WCHAR[1 + 3] Signature;
-    DWORD LittleEndian;
-    DWORD Version;
-    DWORD Revision;
-    DWORD TotalByteLength;
-    DWORD HeaderLength;
-    DWORD NumObjectTypes;
-    DWORD DefaultObject;
-    SYSTEMTIME SystemTime;
-    LARGE_INTEGER PerfTime;
-    LARGE_INTEGER PerfFreq;
-    LARGE_INTEGER PerfTime100nSec;
-    DWORD SystemNameLength;
-    DWORD SystemNameOffset;
-}
-
-alias PERF_DATA_BLOCK _PERF_DATA_BLOCK;
-alias PERF_DATA_BLOCK TPERFDATABLOCK;
-alias PERF_DATA_BLOCK* PPERFDATABLOCK;
-
-struct PERF_INSTANCE_DEFINITION
-{
-    DWORD ByteLength;
-    DWORD ParentObjectTitleIndex;
-    DWORD ParentObjectInstance;
-    DWORD UniqueID;
-    DWORD NameOffset;
-    DWORD NameLength;
-}
-
-alias PERF_INSTANCE_DEFINITION _PERF_INSTANCE_DEFINITION;
-alias PERF_INSTANCE_DEFINITION TPERFINSTANCEDEFINITION;
-alias PERF_INSTANCE_DEFINITION PPERFINSTANCEDEFINITION;
-
-struct PERF_OBJECT_TYPE
-{
-    DWORD TotalByteLength;
-    DWORD DefinitionLength;
-    DWORD HeaderLength;
-    DWORD ObjectNameTitleIndex;
-    LPWSTR ObjectNameTitle;
-    DWORD ObjectHelpTitleIndex;
-    LPWSTR ObjectHelpTitle;
-    DWORD DetailLevel;
-    DWORD NumCounters;
-    DWORD DefaultCounter;
-    DWORD NumInstances;
-    DWORD CodePage;
-    LARGE_INTEGER PerfTime;
-    LARGE_INTEGER PerfFreq;
-}
-
-alias PERF_OBJECT_TYPE _PERF_OBJECT_TYPE;
-alias PERF_OBJECT_TYPE TPERFOBJECTTYPE;
-alias PERF_OBJECT_TYPE* PPERFOBJECTTYPE;
-
-struct POLYTEXT
-{
-    int x;
-    int y;
-    UINT n;
-    LPCTSTR lpstr;
-    UINT uiFlags;
-    RECT rcl;
-    int* pdx;
-}
-
-alias POLYTEXT _POLYTEXT;
-alias POLYTEXT TPOLYTEXT;
-alias POLYTEXT* PPOLYTEXT;
-
-struct PORT_INFO_1
-{
-    LPTSTR pName;
-}
-
-alias PORT_INFO_1 _PORT_INFO_1;
-alias PORT_INFO_1 TPORTINFO1;
-alias PORT_INFO_1* PPORTINFO1;
-
-struct PORT_INFO_2
-{
-    LPSTR pPortName;
-    LPSTR pMonitorName;
-    LPSTR pDescription;
-    DWORD fPortType;
-    DWORD Reserved;
-}
-
-alias PORT_INFO_2 _PORT_INFO_2;
-alias PORT_INFO_2 TPORTINFO2;
-alias PORT_INFO_2* PPORTINFO2;
-
-struct PREVENT_MEDIA_REMOVAL
-{
-    ubyte PreventMediaRemoval;
-}
-
-alias PREVENT_MEDIA_REMOVAL _PREVENT_MEDIA_REMOVAL;
-alias PREVENT_MEDIA_REMOVAL TPREVENTMEDIAREMOVAL;
-alias PREVENT_MEDIA_REMOVAL* PPREVENTMEDIAREMOVAL;
-
-align(1) struct TPRINTDLG
-{
-    DWORD lStructSize;
-    HWND hwndOwner;
-    HANDLE hDevMode;
-    HANDLE hDevNames;
-    HDC hDC;
-    DWORD Flags;
-    ushort nFromPage;
-    ushort nToPage;
-    ushort nMinPage;
-    ushort nMaxPage;
-    ushort nCopies;
-    HINST hInstance;
-    DWORD lCustData;
-    LPPRINTHOOKPROC lpfnPrintHook;
-    LPSETUPHOOKPROC lpfnSetupHook;
-    LPCTSTR lpPrintTemplateName;
-    LPCTSTR lpSetupTemplateName;
-    HANDLE hPrintTemplate;
-    HANDLE hSetupTemplate;
-}
-
-alias TPRINTDLG* LPPRINTDLG;
-alias TPRINTDLG* PPRINTDLG;
-alias TPRINTDLG TAGPD;
-alias TPRINTDLG TPD;
-alias TPRINTDLG* PPD;
-
-struct PRINTER_DEFAULTS
-{
-    LPTSTR pDatatype;
-    LPDEVMODE pDevMode;
-    ACCESS_MASK DesiredAccess;
-}
-
-alias PRINTER_DEFAULTS _PRINTER_DEFAULTS;
-alias PRINTER_DEFAULTS TPRINTERDEFAULTS;
-alias PRINTER_DEFAULTS* PPRINTERDEFAULTS;
-
-struct PRINTER_INFO_1
-{
-    DWORD Flags;
-    LPTSTR pDescription;
-    LPTSTR pName;
-    LPTSTR pComment;
-}
-
-alias PRINTER_INFO_1* LPPRINTER_INFO_1;
-alias PRINTER_INFO_1* PPRINTER_INFO_1;
-alias PRINTER_INFO_1 _PRINTER_INFO_1;
-alias PRINTER_INFO_1 TPRINTERINFO1;
-alias PRINTER_INFO_1* PPRINTERINFO1;
-
-struct PRINTER_INFO_2
-{
-    LPTSTR pServerName;
-    LPTSTR pPrinterName;
-    LPTSTR pShareName;
-    LPTSTR pPortName;
-    LPTSTR pDriverName;
-    LPTSTR pComment;
-    LPTSTR pLocation;
-    LPDEVMODE pDevMode;
-    LPTSTR pSepFile;
-    LPTSTR pPrintProcessor;
-    LPTSTR pDatatype;
-    LPTSTR pParameters;
-    PSECURITY_DESCRIPTOR pSecurityDescriptor;
-    DWORD Attributes;
-    DWORD Priority;
-    DWORD DefaultPriority;
-    DWORD StartTime;
-    DWORD UntilTime;
-    DWORD Status;
-    DWORD cJobs;
-    DWORD AveragePPM;
-}
-
-alias PRINTER_INFO_2 _PRINTER_INFO_2;
-alias PRINTER_INFO_2 TPRINTERINFO2;
-alias PRINTER_INFO_2* PPRINTERINFO2;
-
-struct PRINTER_INFO_3
-{
-    PSECURITY_DESCRIPTOR pSecurityDescriptor;
-}
-
-alias PRINTER_INFO_3 _PRINTER_INFO_3;
-alias PRINTER_INFO_3 TPRINTERINFO3;
-alias PRINTER_INFO_3* PPRINTERINFO3;
-
-struct PRINTER_INFO_4
-{
-    LPTSTR pPrinterName;
-    LPTSTR pServerName;
-    DWORD Attributes;
-}
-
-alias PRINTER_INFO_4 _PRINTER_INFO_4;
-alias PRINTER_INFO_4 TPRINTERINFO4;
-alias PRINTER_INFO_4* PPRINTERINFO4;
-
-struct PRINTER_INFO_5
-{
-    LPTSTR pPrinterName;
-    LPTSTR pPortName;
-    DWORD Attributes;
-    DWORD DeviceNotSelectedTimeout;
-    DWORD TransmissionRetryTimeout;
-}
-
-alias PRINTER_INFO_5 _PRINTER_INFO_5;
-alias PRINTER_INFO_5 TPRINTERINFO5;
-alias PRINTER_INFO_5* PPRINTERINFO5;
-
-struct PRINTER_NOTIFY_INFO_DATA
-{
-    ushort _Type;
-    ushort Field;
-    DWORD Reserved;
-    DWORD Id;
-
-    union
-    {
-        struct
-        {
-            DWORD[1 + 1] adwData;
-        }
-        struct
-        {
-            DWORD cbBuf;
-            LPVOID pBuf;
-        }
-    }
-}
-
-alias PRINTER_NOTIFY_INFO_DATA _PRINTER_NOTIFY_INFO_DATA;
-alias PRINTER_NOTIFY_INFO_DATA TPRINTERNOTIFYINFODATA;
-alias PRINTER_NOTIFY_INFO_DATA* PPRINTERNOTIFYINFODATA;
-
-struct PRINTER_NOTIFY_INFO
-{
-    DWORD Version;
-    DWORD Flags;
-    DWORD Count;
-    PRINTER_NOTIFY_INFO_DATA[1 + 0] aData;
-}
-
-alias PRINTER_NOTIFY_INFO _PRINTER_NOTIFY_INFO;
-alias PRINTER_NOTIFY_INFO TPRINTERNOTIFYINFO;
-alias PRINTER_NOTIFY_INFO* PPRINTERNOTIFYINFO;
-
-struct PRINTER_NOTIFY_OPTIONS_TYPE
-{
-    ushort _Type;
-    ushort Reserved0;
-    DWORD Reserved1;
-    DWORD Reserved2;
-    DWORD Count;
-    PWORD pFields;
-}
-
-alias PRINTER_NOTIFY_OPTIONS_TYPE* PPRINTER_NOTIFY_OPTIONS_TYPE;
-alias PRINTER_NOTIFY_OPTIONS_TYPE _PRINTER_NOTIFY_OPTIONS_TYPE;
-alias PRINTER_NOTIFY_OPTIONS_TYPE TPRINTERNOTIFYOPTIONSTYPE;
-alias PRINTER_NOTIFY_OPTIONS_TYPE* PPRINTERNOTIFYOPTIONSTYPE;
-
-struct PRINTER_NOTIFY_OPTIONS
-{
-    DWORD Version;
-    DWORD Flags;
-    DWORD Count;
-    PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
-}
-
-alias PRINTER_NOTIFY_OPTIONS _PRINTER_NOTIFY_OPTIONS;
-alias PRINTER_NOTIFY_OPTIONS TPRINTERNOTIFYOPTIONS;
-alias PRINTER_NOTIFY_OPTIONS* PPRINTERNOTIFYOPTIONS;
-
-struct PRINTPROCESSOR_INFO_1
-{
-    LPTSTR pName;
-}
-
-alias PRINTPROCESSOR_INFO_1 _PRINTPROCESSOR_INFO_1;
-alias PRINTPROCESSOR_INFO_1 TPRINTPROCESSORINFO1;
-alias PRINTPROCESSOR_INFO_1* PPRINTPROCESSORINFO1;
-
-struct PRIVILEGE_SET
-{
-    DWORD PrivilegeCount;
-    DWORD Control;
-    LUID_AND_ATTRIBUTES[1 + ANYSIZE_ARRAY-1] Privilege;
-}
-
-alias PRIVILEGE_SET* LPPRIVILEGE_SET;
-alias PRIVILEGE_SET* PPRIVILEGE_SET;
-alias PRIVILEGE_SET _PRIVILEGE_SET;
-alias PRIVILEGE_SET TPRIVILEGESET;
-alias PRIVILEGE_SET* PPRIVILEGESET;
-
-struct PROCESS_HEAPENTRY
-{
-    PVOID lpData;
-    DWORD cbData;
-    ubyte cbOverhead;
-    ubyte iRegionIndex;
-    ushort wFlags;
-    DWORD dwCommittedSize;
-    DWORD dwUnCommittedSize;
-    LPVOID lpFirstBlock;
-    LPVOID lpLastBlock;
-    HANDLE hMem;
-}
-
-alias PROCESS_HEAPENTRY* LPPROCESS_HEAP_ENTRY;
-alias PROCESS_HEAPENTRY _PROCESS_HEAP_ENTRY;
-alias PROCESS_HEAPENTRY TPROCESSHEAPENTRY;
-alias PROCESS_HEAPENTRY* PPROCESSHEAPENTRY;
-
-struct PROCESS_INFORMATION
-{
-    HANDLE hProcess;
-    HANDLE hThread;
-    DWORD dwProcessId;
-    DWORD dwThreadId;
-}
-
-alias PROCESS_INFORMATION* LPPROCESS_INFORMATION;
-alias PROCESS_INFORMATION _PROCESS_INFORMATION;
-alias PROCESS_INFORMATION TPROCESSINFORMATION;
-alias PROCESS_INFORMATION* PPROCESSINFORMATION;
-extern(Windows){alias UINT (*LPFNPSPCALLBACK)(HWND, UINT, LPVOID);}
-alias LPFNPSPCALLBACK TFNPSPCALLBACK;
-
-struct PROPSHEETPAGE_U1
-{
-
-    union
-    {
-        struct
-        {
-            LPCTSTR pszTemplate;
-        }
-        struct
-        {
-            LPCDLGTEMPLATE pResource;
-        }
-    }
-}
-
-
-struct PROPSHEETPAGE_U2
-{
-
-    union
-    {
-        struct
-        {
-            HICON hIcon;
-        }
-        struct
-        {
-            LPCTSTR pszIcon;
-        }
-    }
-}
-
-
-struct PROPSHEETPAGE
-{
-    DWORD dwSize;
-    DWORD dwFlags;
-    HINST hInstance;
-    PROPSHEETPAGE_U1 u1;
-    PROPSHEETPAGE_U2 u2;
-    LPCTSTR pszTitle;
-    DLGPROC pfnDlgProc;
-    LPARAM lParam;
-    LPFNPSPCALLBACK pfnCallback;
-    UINT* pcRefParent;
-}
-
-alias PROPSHEETPAGE* LPPROPSHEETPAGE;
-alias PROPSHEETPAGE* LPCPROPSHEETPAGE;
-alias PROPSHEETPAGE _PROPSHEETPAGE;
-alias PROPSHEETPAGE TPROPSHEETPAGE;
-alias PROPSHEETPAGE* PPROPSHEETPAGE;
-
-struct EMPTYRECORD
-{
-}
-
-alias EMPTYRECORD* HPROPSHEETPAGE;
-
-struct PROPSHEETHEADER_U1
-{
-
-    union
-    {
-        struct
-        {
-            HICON hIcon;
-        }
-        struct
-        {
-            LPCTSTR pszIcon;
-        }
-    }
-}
-
-
-struct PROPSHEETHEADER_U2
-{
-
-    union
-    {
-        struct
-        {
-            UINT nStartPage;
-        }
-        struct
-        {
-            LPCTSTR pStartPage;
-        }
-    }
-}
-
-
-struct PROPSHEETHEADER_U3
-{
-
-    union
-    {
-        struct
-        {
-            LPCPROPSHEETPAGE ppsp;
-        }
-        struct
-        {
-            HPROPSHEETPAGE* phpage;
-        }
-    }
-}
-
-
-struct PROPSHEETHEADER
-{
-    DWORD dwSize;
-    DWORD dwFlags;
-    HWND hwndParent;
-    HINST hInstance;
-    PROPSHEETHEADER_U1 u1;
-    LPCTSTR pszCaption;
-    UINT nPages;
-    PROPSHEETHEADER_U2 u2;
-    PROPSHEETHEADER_U3 u3;
-    PFNPROPSHEETCALLBACK pfnCallback;
-}
-
-alias PROPSHEETHEADER* LPPROPSHEETHEADER;
-alias PROPSHEETHEADER* LPCPROPSHEETHEADER;
-alias PROPSHEETHEADER _PROPSHEETHEADER;
-alias PROPSHEETHEADER TPROPSHEETHEADER;
-alias PROPSHEETHEADER* PPROPSHEETHEADER;
-extern(Windows){
-alias WINBOOL (*LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM);
-alias WINBOOL (*LPFNADDPROPSHEETPAGES)(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM);
-}
-alias LPFNADDPROPSHEETPAGE TFNADDPROPSHEETPAGE;
-alias LPFNADDPROPSHEETPAGES TFNADDPROPSHEETPAGES;
-
-struct PROTOCOL_INFO
-{
-    DWORD dwServiceFlags;
-    INT iAddressFamily;
-    INT iMaxSockAddr;
-    INT iMinSockAddr;
-    INT iSocketType;
-    INT iProtocol;
-    DWORD dwMessageSize;
-    LPTSTR lpProtocol;
-}
-
-alias PROTOCOL_INFO _PROTOCOL_INFO;
-alias PROTOCOL_INFO TPROTOCOLINFO;
-alias PROTOCOL_INFO* PPROTOCOLINFO;
-
-struct PROVIDOR_INFO_1
-{
-    LPTSTR pName;
-    LPTSTR pEnvironment;
-    LPTSTR pDLLName;
-}
-
-alias PROVIDOR_INFO_1 _PROVIDOR_INFO_1;
-alias PROVIDOR_INFO_1 TPROVIDORINFO1;
-alias PROVIDOR_INFO_1* PPROVIDORINFO1;
-
-struct PSHNOTIFY
-{
-    NMHDR hdr;
-    LPARAM lParam;
-}
-
-alias PSHNOTIFY* LPPSHNOTIFY;
-alias PSHNOTIFY _PSHNOTIFY;
-alias PSHNOTIFY TPSHNOTIFY;
-alias PSHNOTIFY* PPSHNOTIFY;
-
-struct PUNCTUATION
-{
-    UINT iSize;
-    LPSTR szPunctuation;
-}
-
-alias PUNCTUATION _PUNCTUATION;
-alias PUNCTUATION TPUNCTUATION;
-alias PUNCTUATION* PPUNCTUATION;
-
-struct QUERY_SERVICE_CONFIG
-{
-    DWORD dwServiceType;
-    DWORD dwStartType;
-    DWORD dwErrorControl;
-    LPTSTR lpBinaryPathName;
-    LPTSTR lpLoadOrderGroup;
-    DWORD dwTagId;
-    LPTSTR lpDependencies;
-    LPTSTR lpServiceStartName;
-    LPTSTR lpDisplayName;
-}
-
-alias QUERY_SERVICE_CONFIG* LPQUERY_SERVICE_CONFIG;
-alias QUERY_SERVICE_CONFIG _QUERY_SERVICE_CONFIG;
-alias QUERY_SERVICE_CONFIG TQUERYSERVICECONFIG;
-alias QUERY_SERVICE_CONFIG* PQUERYSERVICECONFIG;
-
-struct QUERY_SERVICE_LOCK_STATUS
-{
-    DWORD fIsLocked;
-    LPTSTR lpLockOwner;
-    DWORD dwLockDuration;
-}
-
-alias QUERY_SERVICE_LOCK_STATUS* LPQUERY_SERVICE_LOCK_STATUS;
-alias QUERY_SERVICE_LOCK_STATUS _QUERY_SERVICE_LOCK_STATUS;
-alias QUERY_SERVICE_LOCK_STATUS TQUERYSERVICELOCKSTATUS;
-alias QUERY_SERVICE_LOCK_STATUS* PQUERYSERVICELOCKSTATUS;
-
-struct RASAMB
-{
-    DWORD dwSize;
-    DWORD dwError;
-    TCHAR[1 + NETBIOS_NAME_LEN+1-1] szNetBiosError;
-    ubyte bLana;
-}
-
-alias RASAMB _RASAMB;
-alias RASAMB TRASAMB;
-alias RASAMB* PRASAMB;
-
-struct RASCONN
-{
-    DWORD dwSize;
-    HRASCONN hrasconn;
-    TCHAR[1 + RAS_MaxEntryName+1-1] szEntryName;
-    char[1 + RAS_MaxDeviceType+1-1] szDeviceType;
-    char[1 + RAS_MaxDeviceName+1-1] szDeviceName;
-}
-
-alias RASCONN _RASCONN;
-alias RASCONN TRASCONN;
-alias RASCONN* PRASCONN;
-
-struct RASCONNSTATUS
-{
-    DWORD dwSize;
-    RASCONNSTATE rasconnstate;
-    DWORD dwError;
-    TCHAR[1 + RAS_MaxDeviceType+1-1] szDeviceType;
-    TCHAR[1 + RAS_MaxDeviceName+1-1] szDeviceName;
-}
-
-alias RASCONNSTATUS _RASCONNSTATUS;
-alias RASCONNSTATUS TRASCONNSTATUS;
-alias RASCONNSTATUS* PRASCONNSTATUS;
-
-struct RASDIALEXTENSIONS
-{
-    DWORD dwSize;
-    DWORD dwfOptions;
-    HWND hwndParent;
-    DWORD reserved;
-}
-
-alias RASDIALEXTENSIONS _RASDIALEXTENSIONS;
-alias RASDIALEXTENSIONS TRASDIALEXTENSIONS;
-alias RASDIALEXTENSIONS* PRASDIALEXTENSIONS;
-
-struct RASDIALPARAMS
-{
-    DWORD dwSize;
-    TCHAR[1 + RAS_MaxEntryName+1-1] szEntryName;
-    TCHAR[1 + RAS_MaxPhoneNumber+1-1] szPhoneNumber;
-    TCHAR[1 + (RAS_MaxCallbackNumber+1)-1] szCallbackNumber;
-    TCHAR[1 + (UNLEN+1)-1] szUserName;
-    TCHAR[1 + (PWLEN+1)-1] szPassword;
-    TCHAR[1 + (DNLEN+1)-1] szDomain;
-}
-
-alias RASDIALPARAMS _RASDIALPARAMS;
-alias RASDIALPARAMS TRASDIALPARAMS;
-alias RASDIALPARAMS* PRASDIALPARAMS;
-
-struct RASENTRYNAME
-{
-    DWORD dwSize;
-    TCHAR[1 + (RAS_MaxEntryName+1)-1] szEntryName;
-}
-
-alias RASENTRYNAME _RASENTRYNAME;
-alias RASENTRYNAME TRASENTRYNAME;
-alias RASENTRYNAME* PRASENTRYNAME;
-
-struct RASPPPIP
-{
-    DWORD dwSize;
-    DWORD dwError;
-    TCHAR[1 + (RAS_MaxIpAddress+1)-1] szIpAddress;
-}
-
-alias RASPPPIP _RASPPPIP;
-alias RASPPPIP TRASPPPIP;
-alias RASPPPIP* PRASPPPIP;
-
-struct RASPPPIPX
-{
-    DWORD dwSize;
-    DWORD dwError;
-    TCHAR[1 + (RAS_MaxIpxAddress+1)-1] szIpxAddress;
-}
-
-alias RASPPPIPX _RASPPPIPX;
-alias RASPPPIPX TRASPPPIPX;
-alias RASPPPIPX* PRASPPPIPX;
-
-struct RASPPPNBF
-{
-    DWORD dwSize;
-    DWORD dwError;
-    DWORD dwNetBiosError;
-    TCHAR[1 + (NETBIOS_NAME_LEN+1)-1] szNetBiosError;
-    TCHAR[1 + (NETBIOS_NAME_LEN+1)-1] szWorkstationName;
-    ubyte bLana;
-}
-
-alias RASPPPNBF _RASPPPNBF;
-alias RASPPPNBF TRASPPPNBF;
-alias RASPPPNBF* PRASPPPNBF;
-
-struct RASTERIZER_STATUS
-{
-    int nSize;
-    int wFlags;
-    int nLanguageID;
-}
-
-alias RASTERIZER_STATUS* LPRASTERIZER_STATUS;
-alias RASTERIZER_STATUS _RASTERIZER_STATUS;
-alias RASTERIZER_STATUS TRASTERIZERSTATUS;
-alias RASTERIZER_STATUS* PRASTERIZERSTATUS;
-
-struct REASSIGN_BLOCKS
-{
-    ushort Reserved;
-    ushort Count;
-    DWORD[1 + 0] BlockNumber;
-}
-
-alias REASSIGN_BLOCKS _REASSIGN_BLOCKS;
-alias REASSIGN_BLOCKS TREASSIGNBLOCKS;
-alias REASSIGN_BLOCKS* PREASSIGNBLOCKS;
-
-struct REMOTE_NAME_INFO
-{
-    LPTSTR lpUniversalName;
-    LPTSTR lpConnectionName;
-    LPTSTR lpRemainingPath;
-}
-
-alias REMOTE_NAME_INFO _REMOTE_NAME_INFO;
-alias REMOTE_NAME_INFO TREMOTENAMEINFO;
-alias REMOTE_NAME_INFO* PREMOTENAMEINFO;
-
-struct REPASTESPECIAL
-{
-    DWORD dwAspect;
-    DWORD dwParam;
-}
-
-alias REPASTESPECIAL _REPASTESPECIAL;
-alias REPASTESPECIAL TREPASTESPECIAL;
-alias REPASTESPECIAL* PREPASTESPECIAL;
-
-struct REQRESIZE
-{
-    NMHDR nmhdr;
-    RECT rc;
-}
-
-alias REQRESIZE _REQRESIZE;
-alias REQRESIZE TREQRESIZE;
-alias REQRESIZE* PREQRESIZE;
-
-struct RGNDATAHEADER
-{
-    DWORD dwSize;
-    DWORD iType;
-    DWORD nCount;
-    DWORD nRgnSize;
-    RECT rcBound;
-}
-
-alias RGNDATAHEADER _RGNDATAHEADER;
-alias RGNDATAHEADER TRGNDATAHEADER;
-alias RGNDATAHEADER* PRGNDATAHEADER;
-alias RGNDATAHEADER* LPRGNDATAHEADER;
-
-struct RGNDATA
-{
-    RGNDATAHEADER rdh;
-    char[1 + 0] Buffer;
-}
-
-alias RGNDATA* LPRGNDATA;
-alias RGNDATA _RGNDATA;
-alias RGNDATA TRGNDATA;
-alias RGNDATA* PRGNDATA;
-
-struct SCROLLINFO
-{
-    UINT cbSize;
-    UINT fMask;
-    int nMin;
-    int nMax;
-    UINT nPage;
-    int nPos;
-    int nTrackPos;
-}
-
-alias SCROLLINFO* LPSCROLLINFO;
-alias SCROLLINFO* LPCSCROLLINFO;
-alias SCROLLINFO TAGSCROLLINFO;
-alias SCROLLINFO TSCROLLINFO;
-alias SCROLLINFO* PSCROLLINFO;
-
-struct SECURITY_ATTRIBUTES
-{
-    DWORD nLength;
-    LPVOID lpSecurityDescriptor;
-    WINBOOL bInheritHandle;
-}
-
-alias SECURITY_ATTRIBUTES* LPSECURITY_ATTRIBUTES;
-alias SECURITY_ATTRIBUTES _SECURITY_ATTRIBUTES;
-alias SECURITY_ATTRIBUTES TSECURITYATTRIBUTES;
-alias SECURITY_ATTRIBUTES* PSECURITYATTRIBUTES;
-alias DWORD SECURITY_INFORMATION;
-alias SECURITY_INFORMATION* PSECURITY_INFORMATION;
-alias SECURITY_INFORMATION TSECURITYINFORMATION;
-alias SECURITY_INFORMATION* PSECURITYINFORMATION;
-
-struct SELCHANGE
-{
-    NMHDR nmhdr;
-    CHARRANGE chrg;
-    ushort seltyp;
-}
-
-alias SELCHANGE _SELCHANGE;
-alias SELCHANGE TSELCHANGE;
-alias SELCHANGE* PSELCHANGE;
-
-struct SERIALKEYS
-{
-    DWORD cbSize;
-    DWORD dwFlags;
-    LPSTR lpszActivePort;
-    LPSTR lpszPort;
-    DWORD iBaudRate;
-    DWORD iPortState;
-}
-
-alias SERIALKEYS* LPSERIALKEYS;
-alias SERIALKEYS TAGSERIALKEYS;
-alias SERIALKEYS TSERIALKEYS;
-alias SERIALKEYS* PSERIALKEYS;
-
-struct SERVICE_TABLE_ENTRY
-{
-    LPTSTR lpServiceName;
-    LPSERVICE_MAIN_FUNCTION lpServiceProc;
-}
-
-alias SERVICE_TABLE_ENTRY* LPSERVICE_TABLE_ENTRY;
-alias SERVICE_TABLE_ENTRY _SERVICE_TABLE_ENTRY;
-alias SERVICE_TABLE_ENTRY TSERVICETABLEENTRY;
-alias SERVICE_TABLE_ENTRY* PSERVICETABLEENTRY;
-
-struct SERVICE_TYPE_VALUE_ABS
-{
-    DWORD dwNameSpace;
-    DWORD dwValueType;
-    DWORD dwValueSize;
-    LPTSTR lpValueName;
-    PVOID lpValue;
-}
-
-alias SERVICE_TYPE_VALUE_ABS _SERVICE_TYPE_VALUE_ABS;
-alias SERVICE_TYPE_VALUE_ABS TSERVICETYPEVALUEABS;
-alias SERVICE_TYPE_VALUE_ABS* PSERVICETYPEVALUEABS;
-
-struct SERVICE_TYPE_INFO_ABS
-{
-    LPTSTR lpTypeName;
-    DWORD dwValueCount;
-    SERVICE_TYPE_VALUE_ABS[1 + 0] Values;
-}
-
-alias SERVICE_TYPE_INFO_ABS _SERVICE_TYPE_INFO_ABS;
-alias SERVICE_TYPE_INFO_ABS TSERVICETYPEINFOABS;
-alias SERVICE_TYPE_INFO_ABS* PSERVICETYPEINFOABS;
-
-struct SESSION_BUFFER
-{
-    UCHAR lsn;
-    UCHAR state;
-    UCHAR[1 + NCBNAMSZ-1] local_name;
-    UCHAR[1 + NCBNAMSZ-1] remote_name;
-    UCHAR rcvs_outstanding;
-    UCHAR sends_outstanding;
-}
-
-alias SESSION_BUFFER _SESSION_BUFFER;
-alias SESSION_BUFFER TSESSIONBUFFER;
-alias SESSION_BUFFER* PSESSIONBUFFER;
-
-struct SESSION_HEADER
-{
-    UCHAR sess_name;
-    UCHAR num_sess;
-    UCHAR rcv_dg_outstanding;
-    UCHAR rcv_any_outstanding;
-}
-
-alias SESSION_HEADER _SESSION_HEADER;
-alias SESSION_HEADER TSESSIONHEADER;
-alias SESSION_HEADER* PSESSIONHEADER;
-
-struct SET_PARTITION_INFORMATION
-{
-    ubyte PartitionType;
-}
-
-alias SET_PARTITION_INFORMATION _SET_PARTITION_INFORMATION;
-alias SET_PARTITION_INFORMATION TSETPARTITIONINFORMATION;
-alias SET_PARTITION_INFORMATION* PSETPARTITIONINFORMATION;
-alias int SHCONTF;
-enum { SHCONTF_FOLDERS = 32, SHCONTF_NONFOLDERS = 64, SHCONTF_INCLUDEHIDDEN = 128,  };
-alias SHCONTF TAGSHCONTF;
-alias SHCONTF TSHCONTF;
-
-struct SHFILEINFOA
-{
-    HICON hIcon;
-    int iIcon;
-    DWORD dwAttributes;
-    CHAR[MAX_PATH] szDisplayName;
-    CHAR[80] szTypeName;
-}
-struct SHFILEINFOW
-{
-    HICON hIcon;
-    int iIcon;
-    DWORD dwAttributes;
-    WCHAR[MAX_PATH] szDisplayName;
-    WCHAR[80] szTypeName;
-}
-version(Win32SansUnicode)
-{
-    alias SHFILEINFOA SHFILEINFO;
-}
-else
-{
-    alias SHFILEINFOW SHFILEINFO;
-}
-
-alias SHFILEINFO _SHFILEINFO;
-alias SHFILEINFO TSHFILEINFO;
-alias SHFILEINFO* PSHFILEINFO;
-
-alias ushort FILEOP_FLAGS;
-alias FILEOP_FLAGS TFILEOPFLAGS;
-alias FILEOP_FLAGS* PFILEOPFLAGS;
-
-struct SHFILEOPSTRUCT
-{
-    HWND hwnd;
-    UINT wFunc;
-    LPCSTR pFrom;
-    LPCSTR pTo;
-    FILEOP_FLAGS fFlags;
-    WINBOOL fAnyOperationsAborted;
-    LPVOID hNameMappings;
-    LPCSTR lpszProgressTitle;
-}
-
-alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT;
-alias SHFILEOPSTRUCT _SHFILEOPSTRUCT;
-alias SHFILEOPSTRUCT TSHFILEOPSTRUCT;
-alias SHFILEOPSTRUCT* PSHFILEOPSTRUCT;
-alias int SHGNO;
-enum { SHGDN_NORMAL = 0, SHGDN_INFOLDER = 1, SHGDN_FORPARSING = 0x8000,  };
-alias SHGNO TAGSHGDN;
-alias SHGNO TSHGDN;
-
-struct SHNAMEMAPPING
-{
-    LPSTR pszOldPath;
-    LPSTR pszNewPath;
-    int cchOldPath;
-    int cchNewPath;
-}
-
-alias SHNAMEMAPPING* LPSHNAMEMAPPING;
-alias SHNAMEMAPPING _SHNAMEMAPPING;
-alias SHNAMEMAPPING TSHNAMEMAPPING;
-alias SHNAMEMAPPING* PSHNAMEMAPPING;
-
-struct SID_AND_ATTRIBUTES
-{
-    PSID Sid;
-    DWORD Attributes;
-}
-
-alias SID_AND_ATTRIBUTES _SID_AND_ATTRIBUTES;
-alias SID_AND_ATTRIBUTES TSIDANDATTRIBUTES;
-alias SID_AND_ATTRIBUTES* PSIDANDATTRIBUTES;
-alias SID_AND_ATTRIBUTES[1 + ANYSIZE_ARRAY-1] SID_AND_ATTRIBUTES_ARRAY;
-alias SID_AND_ATTRIBUTES_ARRAY* PSID_AND_ATTRIBUTES_ARRAY;
-alias SID_AND_ATTRIBUTES_ARRAY TSIDANDATTRIBUTESARRAY;
-alias SID_AND_ATTRIBUTES_ARRAY* PSIDANDATTRIBUTESARRAY;
-
-struct SINGLE_LIST_ENTRY
-{
-    _SINGLE_LIST_ENTRY* Next;
-}
-
-alias SINGLE_LIST_ENTRY _SINGLE_LIST_ENTRY;
-alias SINGLE_LIST_ENTRY TSINGLELISTENTRY;
-alias SINGLE_LIST_ENTRY* PSINGLELISTENTRY;
-
-struct SOUNDSENTRY
-{
-    UINT cbSize;
-    DWORD dwFlags;
-    DWORD iFSTextEffect;
-    DWORD iFSTextEffectMSec;
-    DWORD iFSTextEffectColorBits;
-    DWORD iFSGrafEffect;
-    DWORD iFSGrafEffectMSec;
-    DWORD iFSGrafEffectColor;
-    DWORD iWindowsEffect;
-    DWORD iWindowsEffectMSec;
-    LPTSTR lpszWindowsEffectDLL;
-    DWORD iWindowsEffectOrdinal;
-}
-
-alias SOUNDSENTRY* LPSOUNDSENTRY;
-alias SOUNDSENTRY TAGSOUNDSENTRY;
-alias SOUNDSENTRY TSOUNDSENTRY;
-alias SOUNDSENTRY* PSOUNDSENTRY;
-
-struct STARTUPINFO
-{
-    DWORD cb;
-    LPTSTR lpReserved;
-    LPTSTR lpDesktop;
-    LPTSTR lpTitle;
-    DWORD dwX;
-    DWORD dwY;
-    DWORD dwXSize;
-    DWORD dwYSize;
-    DWORD dwXCountChars;
-    DWORD dwYCountChars;
-    DWORD dwFillAttribute;
-    DWORD dwFlags;
-    ushort wShowWindow;
-    ushort cbReserved2;
-    LPBYTE lpReserved2;
-    HANDLE hStdInput;
-    HANDLE hStdOutput;
-    HANDLE hStdError;
-}
-
-alias STARTUPINFO* LPSTARTUPINFO;
-alias STARTUPINFO _STARTUPINFO;
-alias STARTUPINFO TSTARTUPINFO;
-alias STARTUPINFO* PSTARTUPINFO;
-
-struct STICKYKEYS
-{
-    DWORD cbSize;
-    DWORD dwFlags;
-}
-
-alias STICKYKEYS* LPSTICKYKEYS;
-alias STICKYKEYS TAGSTICKYKEYS;
-alias STICKYKEYS TSTICKYKEYS;
-alias STICKYKEYS* PSTICKYKEYS;
-
-struct STRRET
-{
-    UINT uType;
-
-    union
-    {
-        struct
-        {
-            LPWSTR pOleStr;
-        }
-        struct
-        {
-            UINT uOffset;
-        }
-        struct
-        {
-            char[1 + MAX_PATH-1] cStr;
-        }
-    }
-}
-
-alias STRRET* LPSTRRET;
-alias STRRET _STRRET;
-alias STRRET TSTRRET;
-alias STRRET* PSTRRET;
-
-struct STYLEBUF
-{
-    DWORD dwStyle;
-    char[1 + 31] szDescription;
-}
-
-alias STYLEBUF* LPSTYLEBUF;
-alias STYLEBUF _TAGSTYLEBUF;
-alias STYLEBUF TSTYLEBUF;
-alias STYLEBUF* PSTYLEBUF;
-
-struct STYLESTRUCT
-{
-    DWORD styleOld;
-    DWORD styleNew;
-}
-
-alias STYLESTRUCT* LPSTYLESTRUCT;
-alias STYLESTRUCT TAGSTYLESTRUCT;
-alias STYLESTRUCT TSTYLESTRUCT;
-alias STYLESTRUCT* PSTYLESTRUCT;
-
-struct SYSTEM_AUDIT_ACE
-{
-    ACE_HEADER Header;
-    ACCESS_MASK Mask;
-    DWORD SidStart;
-}
-
-alias SYSTEM_AUDIT_ACE _SYSTEM_AUDIT_ACE;
-alias SYSTEM_AUDIT_ACE TSYSTEMAUDITACE;
-alias SYSTEM_AUDIT_ACE* PSYSTEMAUDITACE;
-
-struct SYSTEM_INFO_U
-{
-
-    union
-    {
-        struct
-        {
-            DWORD dwOemId;
-        }
-        struct
-        {
-            ushort wProcessorArchitecture;
-            ushort wReserved;
-        }
-    }
-}
-
-
-struct SYSTEM_INFO
-{
-    SYSTEM_INFO_U u;
-    DWORD dwPageSize;
-    LPVOID lpMinimumApplicationAddress;
-    LPVOID lpMaximumApplicationAddress;
-    DWORD dwActiveProcessorMask;
-    DWORD dwNumberOfProcessors;
-    DWORD dwProcessorType;
-    DWORD dwAllocationGranularity;
-    ushort wProcessorLevel;
-    ushort wProcessorRevision;
-}
-
-alias SYSTEM_INFO* LPSYSTEM_INFO;
-alias SYSTEM_INFO _SYSTEM_INFO;
-alias SYSTEM_INFO TSYSTEMINFO;
-alias SYSTEM_INFO* PSYSTEMINFO;
-
-struct SYSTEM_POWER_STATUS
-{
-    ubyte ACLineStatus;
-    ubyte BatteryFlag;
-    ubyte BatteryLifePercent;
-    ubyte Reserved1;
-    DWORD BatteryLifeTime;
-    DWORD BatteryFullLifeTime;
-}
-
-alias SYSTEM_POWER_STATUS _SYSTEM_POWER_STATUS;
-alias SYSTEM_POWER_STATUS TSYSTEMPOWERSTATUS;
-alias SYSTEM_POWER_STATUS* PSYSTEMPOWERSTATUS;
-alias EMPTYRECORD* LPSYSTEM_POWER_STATUS;
-
-struct TAPE_ERASE
-{
-    ULONG _Type;
-}
-
-alias TAPE_ERASE _TAPE_ERASE;
-alias TAPE_ERASE TTAPEERASE;
-alias TAPE_ERASE* PTAPEERASE;
-
-struct TAPE_GET_DRIVE_PARAMETERS
-{
-    ubyte ECC;
-    ubyte Compression;
-    ubyte DataPadding;
-    ubyte ReportSetmarks;
-    ULONG DefaultBlockSize;
-    ULONG MaximumBlockSize;
-    ULONG MinimumBlockSize;
-    ULONG MaximumPartitionCount;
-    ULONG FeaturesLow;
-    ULONG FeaturesHigh;
-    ULONG EOTWarningZoneSize;
-}
-
-alias TAPE_GET_DRIVE_PARAMETERS _TAPE_GET_DRIVE_PARAMETERS;
-alias TAPE_GET_DRIVE_PARAMETERS TTAPEGETDRIVEPARAMETERS;
-alias TAPE_GET_DRIVE_PARAMETERS* PTAPEGETDRIVEPARAMETERS;
-
-struct TAPE_GET_MEDIA_PARAMETERS
-{
-    LARGE_INTEGER Capacity;
-    LARGE_INTEGER Remaining;
-    DWORD BlockSize;
-    DWORD PartitionCount;
-    ubyte WriteProtected;
-}
-
-alias TAPE_GET_MEDIA_PARAMETERS _TAPE_GET_MEDIA_PARAMETERS;
-alias TAPE_GET_MEDIA_PARAMETERS TTAPEGETMEDIAPARAMETERS;
-alias TAPE_GET_MEDIA_PARAMETERS* PTAPEGETMEDIAPARAMETERS;
-
-struct TAPE_GET_POSITION
-{
-    ULONG _Type;
-    ULONG Partition;
-    ULONG OffsetLow;
-    ULONG OffsetHigh;
-}
-
-alias TAPE_GET_POSITION _TAPE_GET_POSITION;
-alias TAPE_GET_POSITION TTAPEGETPOSITION;
-alias TAPE_GET_POSITION* PTAPEGETPOSITION;
-
-struct TAPE_PREPARE
-{
-    ULONG Operation;
-}
-
-alias TAPE_PREPARE _TAPE_PREPARE;
-alias TAPE_PREPARE TTAPEPREPARE;
-alias TAPE_PREPARE* PTAPEPREPARE;
-
-struct TAPE_SET_DRIVE_PARAMETERS
-{
-    ubyte ECC;
-    ubyte Compression;
-    ubyte DataPadding;
-    ubyte ReportSetmarks;
-    ULONG EOTWarningZoneSize;
-}
-
-alias TAPE_SET_DRIVE_PARAMETERS _TAPE_SET_DRIVE_PARAMETERS;
-alias TAPE_SET_DRIVE_PARAMETERS TTAPESETDRIVEPARAMETERS;
-alias TAPE_SET_DRIVE_PARAMETERS* PTAPESETDRIVEPARAMETERS;
-
-struct TAPE_SET_MEDIA_PARAMETERS
-{
-    ULONG BlockSize;
-}
-
-alias TAPE_SET_MEDIA_PARAMETERS _TAPE_SET_MEDIA_PARAMETERS;
-alias TAPE_SET_MEDIA_PARAMETERS TTAPESETMEDIAPARAMETERS;
-alias TAPE_SET_MEDIA_PARAMETERS* PTAPESETMEDIAPARAMETERS;
-
-struct TAPE_SET_POSITION
-{
-    ULONG Method;
-    ULONG Partition;
-    ULONG OffsetLow;
-    ULONG OffsetHigh;
-}
-
-alias TAPE_SET_POSITION _TAPE_SET_POSITION;
-alias TAPE_SET_POSITION TTAPESETPOSITION;
-alias TAPE_SET_POSITION* PTAPESETPOSITION;
-
-struct TAPE_WRITE_MARKS
-{
-    ULONG _Type;
-    ULONG Count;
-}
-
-alias TAPE_WRITE_MARKS _TAPE_WRITE_MARKS;
-alias TAPE_WRITE_MARKS TTAPEWRITEMARKS;
-alias TAPE_WRITE_MARKS* PTAPEWRITEMARKS;
-
-struct TBADDBITMAP
-{
-    HINST hInst;
-    UINT nID;
-}
-
-alias TBADDBITMAP* LPTBADDBITMAP;
-alias TBADDBITMAP TTBADDBITMAP;
-alias TBADDBITMAP* PTBADDBITMAP;
-
-struct TBBUTTON {
-    align(2):
-    int     iBitmap;
-    int     idCommand;
-    BYTE    fsState;
-    BYTE    fsStyle;
-//#ifdef _WIN64
-//    BYTE     bReserved[6]     // padding for alignment
-//#elif defined(_WIN32)
-//    BYTE     bReserved[2]     // padding for alignment
-//#endif
-    DWORD_PTR   dwData;
-    INT_PTR     iString;
-}
-
-alias TBBUTTON* LPTBBUTTON;
-alias TBBUTTON* LPCTBBUTTON;
-alias TBBUTTON _TBBUTTON;
-alias TBBUTTON TTBBUTTON;
-alias TBBUTTON* PTBBUTTON;
-
-struct TBNOTIFY
-{
-    NMHDR hdr;
-    int iItem;
-    TBBUTTON tbButton;
-    int cchText;
-    LPTSTR pszText;
-}
-
-alias TBNOTIFY* LPTBNOTIFY;
-alias TBNOTIFY TTBNOTIFY;
-alias TBNOTIFY* PTBNOTIFY;
-
-struct TBSAVEPARAMS
-{
-    HKEY hkr;
-    LPCTSTR pszSubKey;
-    LPCTSTR pszValueName;
-}
-
-alias TBSAVEPARAMS TTBSAVEPARAMS;
-alias TBSAVEPARAMS* PTBSAVEPARAMS;
-
-struct TC_HITTESTINFO
-{
-    POINT pt;
-    UINT flags;
-}
-
-alias TC_HITTESTINFO TCHITTESTINFO;
-alias TC_HITTESTINFO _TC_HITTESTINFO;
-alias TC_HITTESTINFO TTCHITTESTINFO;
-alias TC_HITTESTINFO* PTCHITTESTINFO;
-
-struct TC_ITEM
-{
-    UINT mask;
-    UINT lpReserved1;
-    UINT lpReserved2;
-    LPTSTR pszText;
-    int cchTextMax;
-    int iImage;
-    LPARAM lParam;
-}
-
-alias TC_ITEM _TC_ITEM;
-alias TC_ITEM TTCITEM;
-alias TC_ITEM* PTCITEM;
-
-struct TC_ITEMHEADER
-{
-    UINT mask;
-    UINT lpReserved1;
-    UINT lpReserved2;
-    LPTSTR pszText;
-    int cchTextMax;
-    int iImage;
-}
-
-alias TC_ITEMHEADER _TC_ITEMHEADER;
-alias TC_ITEMHEADER TTCITEMHEADER;
-alias TC_ITEMHEADER* PTCITEMHEADER;
-
-struct TC_KEYDOWN
-{
-    NMHDR hdr;
-    ushort wVKey;
-    UINT flags;
-}
-
-alias TC_KEYDOWN _TC_KEYDOWN;
-alias TC_KEYDOWN TTCKEYDOWN;
-alias TC_KEYDOWN* PTCKEYDOWN;
-
-struct TEXTRANGE
-{
-    CHARRANGE chrg;
-    LPSTR lpstrText;
-}
-
-alias TEXTRANGE _TEXTRANGE;
-alias TEXTRANGE TTEXTRANGE;
-alias TEXTRANGE* PTEXTRANGE;
-
-struct TIME_ZONE_INFORMATION
-{
-    LONG Bias;
-    WCHAR[1 + 31] StandardName;
-    SYSTEMTIME StandardDate;
-    LONG StandardBias;
-    WCHAR[1 + 31] DaylightName;
-    SYSTEMTIME DaylightDate;
-    LONG DaylightBias;
-}
-
-alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION;
-alias TIME_ZONE_INFORMATION _TIME_ZONE_INFORMATION;
-alias TIME_ZONE_INFORMATION TTIMEZONEINFORMATION;
-alias TIME_ZONE_INFORMATION* PTIMEZONEINFORMATION;
-
-struct TOGGLEKEYS
-{
-    DWORD cbSize;
-    DWORD dwFlags;
-}
-
-alias TOGGLEKEYS TAGTOGGLEKEYS;
-alias TOGGLEKEYS TTOGGLEKEYS;
-alias TOGGLEKEYS* PTOGGLEKEYS;
-
-struct TOKEN_SOURCE
-{
-    char[1 + 7] SourceName;
-    LUID SourceIdentifier;
-}
-
-alias TOKEN_SOURCE _TOKEN_SOURCE;
-alias TOKEN_SOURCE TTOKENSOURCE;
-alias TOKEN_SOURCE* PTOKENSOURCE;
-
-struct TOKEN_CONTROL
-{
-    LUID TokenId;
-    LUID AuthenticationId;
-    LUID ModifiedId;
-    TOKEN_SOURCE TokenSource;
-}
-
-alias TOKEN_CONTROL _TOKEN_CONTROL;
-alias TOKEN_CONTROL TTOKENCONTROL;
-alias TOKEN_CONTROL* PTOKENCONTROL;
-
-struct TOKEN_DEFAULT_DACL
-{
-    PACL DefaultDacl;
-}
-
-alias TOKEN_DEFAULT_DACL _TOKEN_DEFAULT_DACL;
-alias TOKEN_DEFAULT_DACL TTOKENDEFAULTDACL;
-alias TOKEN_DEFAULT_DACL* PTOKENDEFAULTDACL;
-
-struct TOKEN_GROUPS
-{
-    DWORD GroupCount;
-    SID_AND_ATTRIBUTES[1 + ANYSIZE_ARRAY-1] Groups;
-}
-
-alias TOKEN_GROUPS* PTOKEN_GROUPS;
-alias TOKEN_GROUPS* LPTOKEN_GROUPS;
-alias TOKEN_GROUPS _TOKEN_GROUPS;
-alias TOKEN_GROUPS TTOKENGROUPS;
-alias TOKEN_GROUPS* PTOKENGROUPS;
-
-struct TOKEN_OWNER
-{
-    PSID Owner;
-}
-
-alias TOKEN_OWNER _TOKEN_OWNER;
-alias TOKEN_OWNER TTOKENOWNER;
-alias TOKEN_OWNER* PTOKENOWNER;
-
-struct TOKEN_PRIMARY_GROUP
-{
-    PSID PrimaryGroup;
-}
-
-alias TOKEN_PRIMARY_GROUP _TOKEN_PRIMARY_GROUP;
-alias TOKEN_PRIMARY_GROUP TTOKENPRIMARYGROUP;
-alias TOKEN_PRIMARY_GROUP* PTOKENPRIMARYGROUP;
-
-struct TOKEN_PRIVILEGES
-{
-    DWORD PrivilegeCount;
-    LUID_AND_ATTRIBUTES[1 + ANYSIZE_ARRAY-1] Privileges;
-}
-
-alias TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES;
-alias TOKEN_PRIVILEGES* LPTOKEN_PRIVILEGES;
-alias TOKEN_PRIVILEGES _TOKEN_PRIVILEGES;
-alias TOKEN_PRIVILEGES TTOKENPRIVILEGES;
-alias TOKEN_PRIVILEGES* PTOKENPRIVILEGES;
-
-struct TOKEN_STATISTICS
-{
-    LUID TokenId;
-    LUID AuthenticationId;
-    LARGE_INTEGER ExpirationTime;
-    TOKEN_TYPE TokenType;
-    SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
-    DWORD DynamicCharged;
-    DWORD DynamicAvailable;
-    DWORD GroupCount;
-    DWORD PrivilegeCount;
-    LUID ModifiedId;
-}
-
-alias TOKEN_STATISTICS _TOKEN_STATISTICS;
-alias TOKEN_STATISTICS TTOKENSTATISTICS;
-alias TOKEN_STATISTICS* PTOKENSTATISTICS;
-
-struct TOKEN_USER
-{
-    SID_AND_ATTRIBUTES User;
-}
-
-alias TOKEN_USER _TOKEN_USER;
-alias TOKEN_USER TTOKENUSER;
-alias TOKEN_USER* PTOKENUSER;
-
-struct TOOLINFOA
-{
-    UINT cbSize;
-    UINT uFlags;
-    HWND hwnd;
-    UINT uId;
-    RECT rect;
-    HINST hinst;
-    LPSTR lpszText;
-}
-struct TOOLINFOW
-{
-    UINT cbSize;
-    UINT uFlags;
-    HWND hwnd;
-    UINT uId;
-    RECT rect;
-    HINST hinst;
-    LPWSTR lpszText;
-}
-version(Win32SansUnicode)
-{
-    alias TOOLINFOA TOOLINFO;
-}
-else
-{
-    alias TOOLINFOW TOOLINFO;
-}
-alias TOOLINFO* LPTOOLINFO;
-alias TOOLINFO TTOOLINFO;
-alias TOOLINFO* PTOOLINFO;
-
-struct TOOLTIPTEXTA
-{
-    NMHDR hdr;
-    LPSTR lpszText;
-    CHAR[80] szText;
-    HINST hinst;
-    UINT uFlags;
-}
-struct TOOLTIPTEXTW
-{
-    NMHDR hdr;
-    LPWSTR lpszText;
-    WCHAR[80] szText;
-    HINST hinst;
-    UINT uFlags;
-}
-version(Win32SansUnicode)
-{
-    alias TOOLTIPTEXTA TOOLTIPTEXT;
-}
-else
-{
-    alias TOOLTIPTEXTW TOOLTIPTEXT;
-}
-alias TOOLTIPTEXT* LPTOOLTIPTEXT;
-alias TOOLTIPTEXT TTOOLTIPTEXT;
-alias TOOLTIPTEXT* PTOOLTIPTEXT;
-
-struct TPMPARAMS
-{
-    UINT cbSize;
-    RECT rcExclude;
-}
-
-alias TPMPARAMS* LPTPMPARAMS;
-alias TPMPARAMS TAGTPMPARAMS;
-alias TPMPARAMS TTPMPARAMS;
-alias TPMPARAMS* PTPMPARAMS;
-
-struct TRANSMIT_FILE_BUFFERS
-{
-    PVOID Head;
-    DWORD HeadLength;
-    PVOID Tail;
-    DWORD TailLength;
-}
-
-alias TRANSMIT_FILE_BUFFERS _TRANSMIT_FILE_BUFFERS;
-alias TRANSMIT_FILE_BUFFERS TTRANSMITFILEBUFFERS;
-alias TRANSMIT_FILE_BUFFERS* PTRANSMITFILEBUFFERS;
-
-struct TTHITTESTINFO
-{
-    HWND hwnd;
-    POINT pt;
-    TOOLINFO ti;
-}
-
-alias TTHITTESTINFO* LPHITTESTINFO;
-alias TTHITTESTINFO _TT_HITTESTINFO;
-alias TTHITTESTINFO TTTHITTESTINFO;
-alias TTHITTESTINFO* PTTHITTESTINFO;
-
-struct TTPOLYCURVE
-{
-    ushort wType;
-    ushort cpfx;
-    POINTFX[1 + 0] apfx;
-}
-
-alias TTPOLYCURVE* LPTTPOLYCURVE;
-alias TTPOLYCURVE TAGTTPOLYCURVE;
-alias TTPOLYCURVE TTTPOLYCURVE;
-alias TTPOLYCURVE* PTTPOLYCURVE;
-
-struct TTPOLYGONHEADER
-{
-    DWORD cb;
-    DWORD dwType;
-    POINTFX pfxStart;
-}
-
-alias TTPOLYGONHEADER* LPTTPOLYGONHEADER;
-alias TTPOLYGONHEADER _TTPOLYGONHEADER;
-alias TTPOLYGONHEADER TTTPOLYGONHEADER;
-alias TTPOLYGONHEADER* PTTPOLYGONHEADER;
-
-struct TV_DISPINFO
-{
-    NMHDR hdr;
-    TV_ITEM item;
-}
-
-alias TV_DISPINFO _TV_DISPINFO;
-alias TV_DISPINFO TTVDISPINFO;
-alias TV_DISPINFO* PTVDISPINFO;
-
-struct TV_HITTESTINFO
-{
-    POINT pt;
-    UINT flags;
-    HTREEITEM hItem;
-}
-
-alias TV_HITTESTINFO* LPTV_HITTESTINFO;
-alias TV_HITTESTINFO _TVHITTESTINFO;
-alias TV_HITTESTINFO TTVHITTESTINFO;
-alias TV_HITTESTINFO* PTVHITTESTINFO;
-
-struct TVINSERTSTRUCTA
-{
-    HTREEITEM hParent;
-    HTREEITEM hInsertAfter;
-    TVITEMA item;
-}
-struct TVINSERTSTRUCTW
-{
-    HTREEITEM hParent;
-    HTREEITEM hInsertAfter;
-    TVITEMW item;
-}
-version(Win32SansUnicode)
-{
-    alias TVINSERTSTRUCTA TVINSERTSTRUCT;
-}
-else
-{
-    alias TVINSERTSTRUCTW TVINSERTSTRUCT;
-}
-
-alias TVINSERTSTRUCT  TV_INSERTSTRUCT;
-alias TVINSERTSTRUCT* LPTV_INSERTSTRUCT;
-alias TVINSERTSTRUCT _TV_INSERTSTRUCT;
-alias TVINSERTSTRUCT TTVINSERTSTRUCT;
-alias TVINSERTSTRUCT* PTVINSERTSTRUCT;
-
-struct TV_KEYDOWN
-{
-    NMHDR hdr;
-    ushort wVKey;
-    UINT flags;
-}
-
-alias TV_KEYDOWN _TV_KEYDOWN;
-alias TV_KEYDOWN TTVKEYDOWN;
-alias TV_KEYDOWN* PTVKEYDOWN;
-
-struct TV_SORTCB
-{
-    HTREEITEM hParent;
-    PFNTVCOMPARE lpfnCompare;
-    LPARAM lParam;
-}
-
-alias TV_SORTCB* LPTV_SORTCB;
-alias TV_SORTCB _TV_SORTCB;
-alias TV_SORTCB TTVSORTCB;
-alias TV_SORTCB* PTVSORTCB;
-
-struct UDACCEL
-{
-    UINT nSec;
-    UINT nInc;
-}
-
-alias UDACCEL TUDACCEL;
-alias UDACCEL* PUDACCEL;
-
-union ULARGE_INTEGER
-{
-    struct
-    {
-        DWORD LowPart;
-        DWORD HighPart;
-    };
-    struct u
-    {
-        DWORD LowPart;
-        DWORD HighPart;
-    };
-    DWORDLONG QuadPart;
-}
-alias ULARGE_INTEGER* PULARGE_INTEGER;
-alias ULARGE_INTEGER _ULARGE_INTEGER;
-alias ULARGE_INTEGER TULARGEINTEGER;
-alias ULARGE_INTEGER* PULARGEINTEGER;
-
-struct UNIVERSAL_NAME_INFO
-{
-    LPTSTR lpUniversalName;
-}
-
-alias UNIVERSAL_NAME_INFO _UNIVERSAL_NAME_INFO;
-alias UNIVERSAL_NAME_INFO TUNIVERSALNAMEINFO;
-alias UNIVERSAL_NAME_INFO* PUNIVERSALNAMEINFO;
-
-struct USEROBJECTFLAGS
-{
-    WINBOOL fInherit;
-    WINBOOL fReserved;
-    DWORD dwFlags;
-}
-
-alias USEROBJECTFLAGS TAGUSEROBJECTFLAGS;
-alias USEROBJECTFLAGS TUSEROBJECTFLAGS;
-alias USEROBJECTFLAGS* PUSEROBJECTFLAGS;
-
-struct VALENT
-{
-    LPTSTR ve_valuename;
-    DWORD ve_valuelen;
-    DWORD ve_valueptr;
-    DWORD ve_type;
-}
-
-alias VALENT TVALENT;
-alias VALENT* PVALENT;
-alias VALENT VALUE_ENT;
-alias VALENT TVALUE_ENT;
-alias VALENT* PVALUE_ENT;
-
-struct VERIFY_INFORMATION
-{
-    LARGE_INTEGER StartingOffset;
-    DWORD Length;
-}
-
-alias VERIFY_INFORMATION _VERIFY_INFORMATION;
-alias VERIFY_INFORMATION TVERIFYINFORMATION;
-alias VERIFY_INFORMATION* PVERIFYINFORMATION;
-
-struct VS_FIXEDFILEINFO
-{
-    DWORD dwSignature;
-    DWORD dwStrucVersion;
-    DWORD dwFileVersionMS;
-    DWORD dwFileVersionLS;
-    DWORD dwProductVersionMS;
-    DWORD dwProductVersionLS;
-    DWORD dwFileFlagsMask;
-    DWORD dwFileFlags;
-    DWORD dwFileOS;
-    DWORD dwFileType;
-    DWORD dwFileSubtype;
-    DWORD dwFileDateMS;
-    DWORD dwFileDateLS;
-}
-
-alias VS_FIXEDFILEINFO _VS_FIXEDFILEINFO;
-alias VS_FIXEDFILEINFO TVSFIXEDFILEINFO;
-alias VS_FIXEDFILEINFO* PVSFIXEDFILEINFO;
-
-struct WIN32_FIND_DATA
-{
-    DWORD dwFileAttributes;
-    FILETIME ftCreationTime;
-    FILETIME ftLastAccessTime;
-    FILETIME ftLastWriteTime;
-    DWORD nFileSizeHigh;
-    DWORD nFileSizeLow;
-    DWORD dwReserved0;
-    DWORD dwReserved1;
-    TCHAR[1 + MAX_PATH-1] cFileName;
-    TCHAR[1 + 13] cAlternateFileName;
-}
-
-alias WIN32_FIND_DATA* LPWIN32_FIND_DATA;
-alias WIN32_FIND_DATA* PWIN32_FIND_DATA;
-alias WIN32_FIND_DATA _WIN32_FIND_DATA;
-alias WIN32_FIND_DATA TWIN32FINDDATA;
-alias WIN32_FIND_DATA TWIN32FINDDATAA;
-alias WIN32_FIND_DATA* PWIN32FINDDATA;
-
-struct WIN32_FIND_DATAW {
-    DWORD dwFileAttributes;
-    FILETIME ftCreationTime;
-    FILETIME ftLastAccessTime;
-    FILETIME ftLastWriteTime;
-    DWORD nFileSizeHigh;
-    DWORD nFileSizeLow;
-    DWORD dwReserved0;
-    DWORD dwReserved1;
-    WCHAR  cFileName[MAX_PATH];
-    WCHAR  cAlternateFileName[14];
-}
-
-alias WIN32_FIND_DATAW* LPWIN32_FIND_DATAW;
-alias WIN32_FIND_DATAW* PWIN32_FIND_DATAW;
-
-struct WIN32_FILE_ATTRIBUTE_DATA {
-  DWORD dwFileAttributes;
-  FILETIME ftCreationTime;
-  FILETIME ftLastAccessTime;
-  FILETIME ftLastWriteTime;
-  DWORD nFileSizeHigh;
-  DWORD nFileSizeLow;
-}
-
-enum {
-    GetFileInfoLevelStandard,
-    GetFileInfoLevelMax
-}
-
-struct WIN32_STREAM_ID
-{
-    DWORD dwStreamId;
-    DWORD dwStreamAttributes;
-    LARGE_INTEGER Size;
-    DWORD dwStreamNameSize;
-    WCHAR* cStreamName;
-}
-
-alias WIN32_STREAM_ID _WIN32_STREAM_ID;
-alias WIN32_STREAM_ID TWIN32STREAMID;
-alias WIN32_STREAM_ID* PWIN32STREAMID;
-
-struct WINDOWPLACEMENT
-{
-    UINT length;
-    UINT flags;
-    UINT showCmd;
-    POINT ptMinPosition;
-    POINT ptMaxPosition;
-    RECT rcNormalPosition;
-}
-
-alias WINDOWPLACEMENT _WINDOWPLACEMENT;
-alias WINDOWPLACEMENT TWINDOWPLACEMENT;
-alias WINDOWPLACEMENT* PWINDOWPLACEMENT;
-
-struct WNDCLASSA
-{
-    UINT style;
-    WNDPROC lpfnWndProc;
-    int cbClsExtra;
-    int cbWndExtra;
-    HANDLE hInstance;
-    HICON hIcon;
-    HCURSOR hCursor;
-    HBRUSH hbrBackground;
-    LPCTSTR lpszMenuName;
-    LPCTSTR lpszClassName;
-}
-
-alias WNDCLASSA* PWNDCLASSA, LPWNDCLASSA;
-
-struct WNDCLASSW
-{
-    UINT        style;
-    WNDPROC     lpfnWndProc;
-    int         cbClsExtra;
-    int         cbWndExtra;
-    HINSTANCE   hInstance;
-    HICON       hIcon;
-    HCURSOR     hCursor;
-    HBRUSH      hbrBackground;
-    LPCWSTR     lpszMenuName;
-    LPCWSTR     lpszClassName;
-}
-
-alias WNDCLASSW* PWNDCLASSW, LPWNDCLASSW;
-
-version(Win32SansUnicode)
-{
-    alias WNDCLASSA WNDCLASS;
-}
-else
-{
-    alias WNDCLASSW WNDCLASS;
-}
-alias WNDCLASS* LPWNDCLASS;
-alias WNDCLASS _WNDCLASS;
-alias WNDCLASS TWNDCLASS;
-alias WNDCLASS WNDCLASS_T;
-alias WNDCLASS* PWNDCLASS;
-
-struct WNDCLASSEX
-{
-    UINT cbSize;
-    UINT style;
-    WNDPROC lpfnWndProc;
-    int cbClsExtra;
-    int cbWndExtra;
-    HANDLE hInstance;
-    HICON hIcon;
-    HCURSOR hCursor;
-    HBRUSH hbrBackground;
-    LPCTSTR lpszMenuName;
-    LPCTSTR lpszClassName;
-    HANDLE hIconSm;
-}
-
-alias WNDCLASSEX* LPWNDCLASSEX;
-alias WNDCLASSEX _WNDCLASSEX;
-alias WNDCLASSEX TWNDCLASSEX;
-alias WNDCLASSEX TWNDCLASSEXA;
-alias WNDCLASSEX* PWNDCLASSEX;
-
-struct CONNECTDLGSTRUCT
-{
-    DWORD cbStructure;
-    HWND hwndOwner;
-    LPNETRESOURCE lpConnRes;
-    DWORD dwFlags;
-    DWORD dwDevNum;
-}
-
-alias CONNECTDLGSTRUCT* LPCONNECTDLGSTRUCT;
-alias CONNECTDLGSTRUCT _CONNECTDLGSTRUCT;
-alias CONNECTDLGSTRUCT TCONNECTDLGSTRUCT;
-alias CONNECTDLGSTRUCT* PCONNECTDLGSTRUCT;
-
-struct DISCDLGSTRUCT
-{
-    DWORD cbStructure;
-    HWND hwndOwner;
-    LPTSTR lpLocalName;
-    LPTSTR lpRemoteName;
-    DWORD dwFlags;
-}
-
-alias DISCDLGSTRUCT* LPDISCDLGSTRUCT;
-alias DISCDLGSTRUCT _DISCDLGSTRUCT;
-alias DISCDLGSTRUCT TDISCDLGSTRUCT;
-alias DISCDLGSTRUCT TDISCDLGSTRUCTA;
-alias DISCDLGSTRUCT* PDISCDLGSTRUCT;
-
-struct NETINFOSTRUCT
-{
-    DWORD cbStructure;
-    DWORD dwProviderVersion;
-    DWORD dwStatus;
-    DWORD dwCharacteristics;
-    DWORD dwHandle;
-    ushort wNetType;
-    DWORD dwPrinters;
-    DWORD dwDrives;
-}
-
-alias NETINFOSTRUCT* LPNETINFOSTRUCT;
-alias NETINFOSTRUCT _NETINFOSTRUCT;
-alias NETINFOSTRUCT TNETINFOSTRUCT;
-alias NETINFOSTRUCT* PNETINFOSTRUCT;
-
-struct NETCONNECTINFOSTRUCT
-{
-    DWORD cbStructure;
-    DWORD dwFlags;
-    DWORD dwSpeed;
-    DWORD dwDelay;
-    DWORD dwOptDataSize;
-}
-
-alias NETCONNECTINFOSTRUCT* LPNETCONNECTINFOSTRUCT;
-alias NETCONNECTINFOSTRUCT _NETCONNECTINFOSTRUCT;
-alias NETCONNECTINFOSTRUCT TNETCONNECTINFOSTRUCT;
-alias NETCONNECTINFOSTRUCT* PNETCONNECTINFOSTRUCT;
-extern(Windows){
-alias int (*ENUMMETAFILEPROC)(HDC, HANDLETABLE, METARECORD, int, LPARAM);
-alias int (*ENHMETAFILEPROC)(HDC, HANDLETABLE, ENHMETARECORD, int, LPARAM);
-alias int (*ENUMFONTSPROC)(LPLOGFONT, LPTEXTMETRIC, DWORD, LPARAM);
-alias int (*FONTENUMPROC)(ENUMLOGFONT*, NEWTEXTMETRIC*, int, LPARAM);
-alias int (*FONTENUMEXPROC)(ENUMLOGFONTEX*, NEWTEXTMETRICEX*, int, LPARAM);
-alias void (*LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD, DWORD);
-}
-
-struct POINTFLOAT
-{
-    FLOAT x;
-    FLOAT y;
-}
-
-alias POINTFLOAT _POINTFLOAT;
-alias POINTFLOAT TPOINTFLOAT;
-alias POINTFLOAT* PPOINTFLOAT;
-
-struct GLYPHMETRICSFLOAT
-{
-    FLOAT gmfBlackBoxX;
-    FLOAT gmfBlackBoxY;
-    POINTFLOAT gmfptGlyphOrigin;
-    FLOAT gmfCellIncX;
-    FLOAT gmfCellIncY;
-}
-
-alias GLYPHMETRICSFLOAT* LPGLYPHMETRICSFLOAT;
-alias GLYPHMETRICSFLOAT _GLYPHMETRICSFLOAT;
-alias GLYPHMETRICSFLOAT TGLYPHMETRICSFLOAT;
-alias GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT;
-
-struct LAYERPLANEDESCRIPTOR
-{
-    ushort nSize;
-    ushort nVersion;
-    DWORD dwFlags;
-    ubyte iPixelType;
-    ubyte cColorBits;
-    ubyte cRedBits;
-    ubyte cRedShift;
-    ubyte cGreenBits;
-    ubyte cGreenShift;
-    ubyte cBlueBits;
-    ubyte cBlueShift;
-    ubyte cAlphaBits;
-    ubyte cAlphaShift;
-    ubyte cAccumBits;
-    ubyte cAccumRedBits;
-    ubyte cAccumGreenBits;
-    ubyte cAccumBlueBits;
-    ubyte cAccumAlphaBits;
-    ubyte cDepthBits;
-    ubyte cStencilBits;
-    ubyte cAuxBuffers;
-    ubyte iLayerPlane;
-    ubyte bReserved;
-    COLORREF crTransparent;
-}
-
-alias LAYERPLANEDESCRIPTOR* LPLAYERPLANEDESCRIPTOR;
-alias LAYERPLANEDESCRIPTOR TAGLAYERPLANEDESCRIPTOR;
-alias LAYERPLANEDESCRIPTOR TLAYERPLANEDESCRIPTOR;
-alias LAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR;
-
-struct PIXELFORMATDESCRIPTOR
-{
-    ushort nSize;
-    ushort nVersion;
-    DWORD dwFlags;
-    ubyte iPixelType;
-    ubyte cColorBits;
-    ubyte cRedBits;
-    ubyte cRedShift;
-    ubyte cGreenBits;
-    ubyte cGreenShift;
-    ubyte cBlueBits;
-    ubyte cBlueShift;
-    ubyte cAlphaBits;
-    ubyte cAlphaShift;
-    ubyte cAccumBits;
-    ubyte cAccumRedBits;
-    ubyte cAccumGreenBits;
-    ubyte cAccumBlueBits;
-    ubyte cAccumAlphaBits;
-    ubyte cDepthBits;
-    ubyte cStencilBits;
-    ubyte cAuxBuffers;
-    ubyte iLayerType;
-    ubyte bReserved;
-    DWORD dwLayerMask;
-    DWORD dwVisibleMask;
-    DWORD dwDamageMask;
-}
-
-alias PIXELFORMATDESCRIPTOR* LPPIXELFORMATDESCRIPTOR;
-alias PIXELFORMATDESCRIPTOR TAGPIXELFORMATDESCRIPTOR;
-alias PIXELFORMATDESCRIPTOR TPIXELFORMATDESCRIPTOR;
-alias PIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR;
-
-struct USER_INFO_2
-{
-    LPWSTR usri2_name;
-    LPWSTR usri2_password;
-    DWORD usri2_password_age;
-    DWORD usri2_priv;
-    LPWSTR usri2_home_dir;
-    LPWSTR usri2_comment;
-    DWORD usri2_flags;
-    LPWSTR usri2_script_path;
-    DWORD usri2_auth_flags;
-    LPWSTR usri2_full_name;
-    LPWSTR usri2_usr_comment;
-    LPWSTR usri2_parms;
-    LPWSTR usri2_workstations;
-    DWORD usri2_last_logon;
-    DWORD usri2_last_logoff;
-    DWORD usri2_acct_expires;
-    DWORD usri2_max_storage;
-    DWORD usri2_units_per_week;
-    PBYTE usri2_logon_hours;
-    DWORD usri2_bad_pw_count;
-    DWORD usri2_num_logons;
-    LPWSTR usri2_logon_server;
-    DWORD usri2_country_code;
-    DWORD usri2_code_page;
-}
-
-alias USER_INFO_2* PUSER_INFO_2;
-alias USER_INFO_2* LPUSER_INFO_2;
-alias USER_INFO_2 TUSERINFO2;
-alias USER_INFO_2* PUSERINFO2;
-
-struct USER_INFO_0
-{
-    LPWSTR usri0_name;
-}
-
-alias USER_INFO_0* PUSER_INFO_0;
-alias USER_INFO_0* LPUSER_INFO_0;
-alias USER_INFO_0 TUSERINFO0;
-alias USER_INFO_0* PUSERINFO0;
-
-struct USER_INFO_3
-{
-    LPWSTR usri3_name;
-    LPWSTR usri3_password;
-    DWORD usri3_password_age;
-    DWORD usri3_priv;
-    LPWSTR usri3_home_dir;
-    LPWSTR usri3_comment;
-    DWORD usri3_flags;
-    LPWSTR usri3_script_path;
-    DWORD usri3_auth_flags;
-    LPWSTR usri3_full_name;
-    LPWSTR usri3_usr_comment;
-    LPWSTR usri3_parms;
-    LPWSTR usri3_workstations;
-    DWORD usri3_last_logon;
-    DWORD usri3_last_logoff;
-    DWORD usri3_acct_expires;
-    DWORD usri3_max_storage;
-    DWORD usri3_units_per_week;
-    PBYTE usri3_logon_hours;
-    DWORD usri3_bad_pw_count;
-    DWORD usri3_num_logons;
-    LPWSTR usri3_logon_server;
-    DWORD usri3_country_code;
-    DWORD usri3_code_page;
-    DWORD usri3_user_id;
-    DWORD usri3_primary_group_id;
-    LPWSTR usri3_profile;
-    LPWSTR usri3_home_dir_drive;
-    DWORD usri3_password_expired;
-}
-
-alias USER_INFO_3* PUSER_INFO_3;
-alias USER_INFO_3* LPUSER_INFO_3;
-alias USER_INFO_3 TUSERINFO3;
-alias USER_INFO_3* PUSERINFO3;
-
-struct GROUP_INFO_2
-{
-    LPWSTR grpi2_name;
-    LPWSTR grpi2_comment;
-    DWORD grpi2_group_id;
-    DWORD grpi2_attributes;
-}
-
-alias GROUP_INFO_2* PGROUP_INFO_2;
-alias GROUP_INFO_2 TGROUPINFO2;
-alias GROUP_INFO_2* PGROUPINFO2;
-
-struct LOCALGROUP_INFO_0
-{
-    LPWSTR lgrpi0_name;
-}
-
-alias LOCALGROUP_INFO_0* PLOCALGROUP_INFO_0;
-alias LOCALGROUP_INFO_0* LPLOCALGROUP_INFO_0;
-alias LOCALGROUP_INFO_0 TLOCALGROUPINFO0;
-alias LOCALGROUP_INFO_0* PLOCALGROUPINFO0;
-
-struct IMAGE_DOS_HEADER
-{
-    ushort e_magic;
-    ushort e_cblp;
-    ushort e_cp;
-    ushort e_crlc;
-    ushort e_cparhdr;
-    ushort e_minalloc;
-    ushort e_maxalloc;
-    ushort e_ss;
-    ushort e_sp;
-    ushort e_csum;
-    ushort e_ip;
-    ushort e_cs;
-    ushort e_lfarlc;
-    ushort e_ovno;
-    ushort[1 + 3] e_res;
-    ushort e_oemid;
-    ushort e_oeminfo;
-    ushort[1 + 9] e_res2;
-    LONG e_lfanew;
-}
-
-alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER;
-alias IMAGE_DOS_HEADER TIMAGEDOSHEADER;
-alias IMAGE_DOS_HEADER* PIMAGEDOSHEADER;
-alias ushort TVARTYPE;
-alias TVARIANT* PVARIANT;
-
-struct TVARIANT
-{
-    TVARTYPE vt;
-    ushort wReserved1;
-    ushort wReserved2;
-    ushort wReserved3;
-
-    union
-    {
-        struct
-        {
-            ubyte bVal;
-        }
-        struct
-        {
-            byte iVal;
-        }
-        struct
-        {
-            int lVal;
-        }
-        struct
-        {
-            float fltVal;
-        }
-        struct
-        {
-            double dblVal;
-        }
-        struct
-        {
-            ushort vbool;
-        }
-        struct
-        {
-            HRESULT scode;
-        }
-        struct
-        {
-            ubyte* pbVal;
-        }
-        struct
-        {
-            byte* piVal;
-        }
-        struct
-        {
-            int* plVal;
-        }
-        struct
-        {
-            float* pfltVal;
-        }
-        struct
-        {
-            double* pdblVal;
-        }
-        struct
-        {
-            ushort* pbool;
-        }
-        struct
-        {
-            HRESULT* pscode;
-        }
-        struct
-        {
-            POINTER byRef;
-        }
-    }
-}
-
-alias TVARIANT VARIANT;
-alias int MMRESULT;
-alias TWAVEFORMATEX* PWAVEFORMATEX;
-
-align(1) struct TWAVEFORMATEX
-{
-    ushort wFormatTag;
-    ushort nChannels;
-    DWORD nSamplesPerSec;
-    DWORD nAvgBytesPerSec;
-    ushort nBlockAlign;
-    ushort wBitsPerSample;
-    ushort cbSize;
-}
-
-alias CRITICAL_SECTION TRTLCRITICALSECTION;
-alias PCRITICAL_SECTION PRTLCRITICALSECTION;
-alias PGUID PIID;
-alias TGUID TIID;
-alias HANDLE THANDLE;
-alias TSMALLRECT* PSMALLRECT;
-alias SMALL_RECT TSMALLRECT;
-alias TCHARINFO* PCHARINFO;
-alias _CHAR_INFO TCHARINFO;
-alias POINTER TFARPROC;
-alias POINTER TFNDLGPROC;
-alias POINTER TFNTHREADSTARTROUTINE;
-
-struct _OBJECT_TYPE_LIST
-{
-    ushort Level;
-    ushort Sbz;
-    PGUID ObjectType;
-}
-
-alias _OBJECT_TYPE_LIST TOBJECTTYPELIST;
-alias TOBJECTTYPELIST* POBJECTTYPELIST;
-alias _OBJECT_TYPE_LIST OBJECT_TYPE_LIST;
-alias DWORD AUDIT_EVENT_TYPE;
-
-align(1) struct _BLENDFUNCTION
-{
-    ubyte BlendOp;
-    ubyte BlendFlags;
-    ubyte SourceConstantAlpha;
-    ubyte AlphaFormat;
-}
-
-alias _BLENDFUNCTION TBLENDFUNCTION;
-alias TBLENDFUNCTION* PBLENDFUNCTION;
-alias _BLENDFUNCTION BLENDFUNCTION;
-
-alias HANDLE HMONITOR;
-
-struct tagMONITORINFOEX
-{
-    DWORD  cbSize;
-    RECT   rcMonitor;
-    RECT   rcWork;
-    DWORD  dwFlags;
-    TCHAR  szDevice[CCHDEVICENAME];
-}
-alias tagMONITORINFOEX MONITORINFOEX;
-alias MONITORINFOEX* LPMONITORINFOEX;
-
-struct tagMONITORINFO
-{
-    DWORD  cbSize;
-    RECT   rcMonitor;
-    RECT   rcWork;
-    DWORD  dwFlags;
-}
-alias tagMONITORINFO MONITORINFO;
-alias MONITORINFO* LPMONITORINFO;
-
-struct WINDOWINFO
-{
-    DWORD cbSize;
-    RECT rcWindow;
-    RECT rcClient;
-    DWORD dwStyle;
-    DWORD dwExStyle;
-    DWORD dwWindowStatus;
-    UINT cxWindowBorders;
-    UINT cyWindowBorders;
-    ATOM atomWindowType;
-    short wCreatorVersion;
-};
-alias WINDOWINFO* PWINDOWINFO;
-alias WINDOWINFO* LPWINDOWINFO;
-
-enum : HRESULT
-{
-    S_OK            = 0x00000000,
-    S_FALSE         = 0x00000001,
-    E_UNEXPECTED    = 0x8000FFFF,
-    E_NOTIMPL       = 0x80004001,
-    E_OUTOFMEMORY   = 0x8007000E,
-    E_INVALIDARG    = 0x80070057,
-    E_NOINTERFACE   = 0x80004002,
-    E_POINTER       = 0x80004003,
-    E_HANDLE        = 0x80070006,
-    E_ABORT         = 0x80004004,
-    E_FAIL          = 0x80004005,
-    E_ACCESSDENIED  = 0x80070005,
-    E_PENDING       = 0x8000000A,
-}
-
-/*
-int CO_E_INIT_TLS = (DWORD)((0x80004006));
-int CO_E_INIT_MEMORY_ALLOCATOR = (DWORD)((0x80004008));
-int CO_E_INIT_CLASS_CACHE = (DWORD)((0x80004009));
-int CO_E_INIT_RPC_CHANNEL = (DWORD)((0x8000400A));
-int CO_E_INIT_TLS_SET_CHANNEL_CONTROL = (DWORD)((0x8000400B));
-int CO_E_INIT_TLS_CHANNEL_CONTROL = (DWORD)((0x8000400C));
-int CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = (DWORD)((0x8000400D));
-int CO_E_INIT_SCM_MUTEX_EXISTS = (DWORD)((0x8000400E));
-int CO_E_INIT_SCM_FILE_MAPPING_EXISTS = (DWORD)((0x8000400F));
-int CO_E_INIT_SCM_MAP_VIEW_OF_FILE = (DWORD)((0x80004010));
-int CO_E_INIT_SCM_EXEC_FAILURE = (DWORD)((0x80004011));
-int CO_E_INIT_ONLY_SINGLE_THREADED = (DWORD)((0x80004012));
-int CO_E_CANT_REMOTE = (DWORD)((0x80004013));
-int CO_E_BAD_SERVER_NAME = (DWORD)((0x80004014));
-int CO_E_WRONG_SERVER_IDENTITY = (DWORD)((0x80004015));
-int CO_E_OLE1DDE_DISABLED = (DWORD)((0x80004016));
-int CO_E_RUNAS_SYNTAX = (DWORD)((0x80004017));
-int CO_E_CREATEPROCESS_FAILURE = (DWORD)((0x80004018));
-int CO_E_RUNAS_CREATEPROCESS_FAILURE = (DWORD)((0x80004019));
-int CO_E_RUNAS_LOGON_FAILURE = (DWORD)((0x8000401A));
-int CO_E_LAUNCH_PERMSSION_DENIED = (DWORD)((0x8000401B));
-int CO_E_START_SERVICE_FAILURE = (DWORD)((0x8000401C));
-int CO_E_REMOTE_COMMUNICATION_FAILURE = (DWORD)((0x8000401D));
-int CO_E_SERVER_START_TIMEOUT = (DWORD)((0x8000401E));
-int CO_E_CLSREG_INCONSISTENT = (DWORD)((0x8000401F));
-int CO_E_IIDREG_INCONSISTENT = (DWORD)((0x80004020));
-int CO_E_NOT_SUPPORTED = (DWORD)((0x80004021));
-int CO_E_FIRST = (DWORD)((0x800401F0));
-int CO_E_LAST = (DWORD)((0x800401FF));
-int CO_S_FIRST = (0x401F0);
-int CO_E_NOTINITIALIZED = (DWORD)((0x800401F0));
-int CO_E_ALREADYINITIALIZED = (DWORD)((0x800401F1));
-int CO_E_CANTDETERMINECLASS = (DWORD)((0x800401F2));
-int CO_E_CLASSSTRING = (DWORD)((0x800401F3));
-int CO_E_IIDSTRING = (DWORD)((0x800401F4));
-int CO_E_APPNOTFOUND = (DWORD)((0x800401F5));
-int CO_E_APPSINGLEUSE = (DWORD)((0x800401F6));
-int CO_E_ERRORINAPP = (DWORD)((0x800401F7));
-int CO_E_DLLNOTFOUND = (DWORD)((0x800401F8));
-int CO_E_ERRORINDLL = (DWORD)((0x800401F9));
-int CO_E_WRONGOSFORAPP = (DWORD)((0x800401FA));
-int CO_E_OBJNOTREG = (DWORD)((0x800401FB));
-int CO_E_OBJISREG = (DWORD)((0x800401FC));
-int CO_E_OBJNOTCONNECTED = (DWORD)((0x800401FD));
-int CO_E_APPDIDNTREG = (DWORD)((0x800401FE));
-int CO_E_RELEASED = (DWORD)((0x800401FF));
-*/
-
-///////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////////////////
-
-
-
-
-
-
-// missing in tango
-//alias TLOGFONTA* LPLOGFONTA;
-//alias TLOGFONTA LOGFONTA;
-//alias char CHAR;
-alias OPENFILENAME OPENFILENAMEW;
-alias OPENFILENAME OPENFILENAMEA;
-//alias WNDCLASS_T   WNDCLASS;
-
-//alias TCLSID *REFCLSID;
-
-//interface IUnknown{}
-//alias IUnknown LPUNKNOWN;
-
-
-struct SCRIPT_DIGITSUBSTITUTE {
-  ushort NationalDigitLanguage;
-  ushort TraditionalDigitLanguage;
-  DWORD DigitSubstitute;
-  DWORD dwReserved;
-}
-
-struct BUTTON_IMAGELIST {
-    HIMAGELIST himl;
-    RECT margin;
-    UINT uAlign;
-}
-
-alias HANDLE HTHEME;
-
-struct NMREBARCHILDSIZE {
-    NMHDR hdr;
-    UINT uBand;
-    UINT wID;
-    RECT rcChild;
-    RECT rcBand;
-}
-const int MAX_LINKID_TEXT = 48;
-const int L_MAX_URL_LENGTH = 2084;
-struct LITEM {
-    UINT mask;
-    int iLink;
-    UINT state;
-    UINT stateMask;
-    WCHAR szID[MAX_LINKID_TEXT];
-    WCHAR szUrl[L_MAX_URL_LENGTH];
-}
-struct NMLINK {
-    NMHDR hdr;
-    LITEM item;
-}
-struct NMLVODSTATECHANGE {
-  NMHDR hdr;
-  int iFrom;
-  int iTo;
-  UINT uNewState;
-  UINT uOldState;
-}
-struct NMTBHOTITEM {
-    NMHDR hdr;
-    int idOld;
-    int idNew;
-    DWORD dwFlags;
-}
-struct NMTVDISPINFO {
-    NMHDR hdr;
-    TVITEM item;
-}
-struct NMTVITEMCHANGE {
-    NMHDR hdr;
-    UINT uChanged;
-    HTREEITEM hItem;
-    UINT uStateNew;
-    UINT uStateOld;
-    LPARAM lParam;
-}
-
-struct ACTCTXA {
-  ULONG cbSize;
-  DWORD dwFlags;
-  LPCSTR lpSource;
-  USHORT wProcessorArchitecture;
-  LANGID wLangId;
-  LPCTSTR lpAssemblyDirectory;
-  LPCTSTR lpResourceName;
-  LPCTSTR lpApplicationName;
-  HMODULE hModule;
-}
-struct ACTCTXW {
-  ULONG cbSize;
-  DWORD dwFlags;
-  LPCWSTR lpSource;
-  USHORT wProcessorArchitecture;
-  LANGID wLangId;
-  LPCTSTR lpAssemblyDirectory;
-  LPCTSTR lpResourceName;
-  LPCTSTR lpApplicationName;
-  HMODULE hModule;
-}
-version(Win32SansUnicode) alias ACTCTXA ACTCTX;
-else          alias ACTCTXW ACTCTX;
-alias HANDLE HACTCTX;
-
-struct OSVERSIONINFOEX
-{
-  DWORD dwOSVersionInfoSize;
-  DWORD dwMajorVersion;
-  DWORD dwMinorVersion;
-  DWORD dwBuildNumber;
-  DWORD dwPlatformId;
-  TCHAR szCSDVersion[128];
-  WORD wServicePackMajor;
-  WORD wServicePackMinor;
-  WORD wSuiteMask;
-  BYTE wProductType;
-  BYTE wReserved;
-}
-
-
-
-// ....
-//--------------------------------------------------------------------------------
-
-// const int LF_FACESIZE = 32;
-// const int LF_FULLFACESIZE = 64;
-
-alias HANDLE HIMC;
-// alias HANDLE HTREEITEM;
-//alias HANDLE HDWP;
-//alias HANDLE HIMAGELIST;
-//alias HANDLE HMONITOR;
-//alias HANDLE HHOOK;
-//alias HANDLE HDROP;
-//alias HANDLE *LPHANDLE;
-
-alias HRESULT WINOLEAPI;
-// alias LPRECT LPCRECT;
-// alias LPRECT LPCRECTL;
-alias DWORD LGRPID;
-//alias LONG LONG_PTR;
-//alias ULONG ULONG_PTR;
-alias DWORD DWORD_PTR;
-//alias int INT_PTR;
-//alias uint UINT_PTR;
-// alias DWORD LCID;
-// alias DWORD LCTYPE;
-alias USHORT COLOR16;
-
-//alias POINT POINTL;
-
-//alias long LONGLONG;
-//alias ulong DWORDLONG;
-
-//alias LONGLONG  *PLONGLONG;
-//alias DWORDLONG *PDWORDLONG;
-alias size_t    SIZE_T;
-//alias int       WPARAM_I;
-
-extern(Windows){
-
-/**
- * Since Eclipse/SWT uses int as (msg, wparam, lparam) and some times check the value against (-1),
- * but WNDPROC_I declared in windows header the (msg, wparam) is UINT which will never be -1 but 0xFFFF or
- * something else. This made some DWT API failed. to fix the problem, it better to declare (msg, wparam)
- * as int like Eclispe/SWT does. and we alias int to WPARAM_I.
- */
-// alias LRESULT function(HWND, uint, uint, int) WNDPROC_I;
-// alias LRESULT function(int code, int wParam, LPARAM lParam) HOOKPROC_I;
-//
-// // Windows CALLBACK declaration here
-// alias WNDPROC_I BFFCALLBACK;        // browse for fold
-// alias WNDPROC_I LPCCHOOKPROC_I;     // choose color
-// alias WNDPROC_I LPCFHOOKPROC_I;     // choose font
-// alias WNDPROC_I LPPRINTHOOKPROC_I;  // print hook
-// alias WNDPROC_I LPSETUPHOOKPROC_I;  // print setup
-// alias WNDPROC_I TIMERPROC_I;        // timer
-
-alias LRESULT function (
-    int code,       // hook code
-    int wParam,  // undefined
-    int lParam   // address of structure with message data
-) MESSAGEPROC;
-
-
-//alias BOOL function (
-//  HMONITOR hMonitor,  // handle to display monitor
-//  HDC hdcMonitor,     // handle to monitor-appropriate device context
-//  LPRECT lprcMonitor, // pointer to monitor intersection rectangle
-//  LPARAM dwData       // data passed from EnumDisplayMonitors
-//) MONITORENUMPROC;
-
-//alias int function(
-//  ENUMLOGFONT *lpelf,    // logical-font data
-//  NEWTEXTMETRIC *lpntm,  // physical-font data
-//  DWORD FontType,        // type of font
-//  LPARAM lParam          // application-defined data
-//)FONTENUMPROC;
-
-//alias int function(
-//  ENUMLOGFONTEX *lpelfe,    // logical-font data
-//  NEWTEXTMETRICEX *lpntme,  // physical-font data
-//  DWORD FontType,           // type of font
-//  LPARAM lParam             // application-defined data
-//)FONTENUMEXPROC;
-
-alias BOOL function (
-  LGRPID LanguageGroup,             // language-group identifier
-  TCHAR* lpLanguageGroupString,     // language-group identifier string
-  TCHAR* lpLanguageGroupNameString, // language-group name string
-  DWORD dwFlags,                    // options
-  LONG_PTR  lParam                  // callback parameter
-)LANGUAGEGROUP_ENUMPROC;
-
-//alias BOOL function (
-//  TCHAR* lpLocaleString   // locale identifier string
-//)LOCALE_ENUMPROC;
-
-
-// end of Windows CALLBACK declaration
-
-
-
-//struct ABC {
-//    int     abcA;
-//    UINT    abcB;
-//    int     abcC;
-//}
-//alias ABC* PABC, LPABC;
-
-// declared in tango
-//struct ACCEL {
-//    align(1):
-//    BYTE   fVirt;
-//    WORD   key;
-//    WORD   cmd;
-//}
-//alias ACCEL* PACCEL, LPACCEL;
-
-// declared in phobos
-//struct BITMAP {
-//  int bmType;
-//  int bmWidth;
-//  int bmHeight;
-//  int bmWidthBytes;
-//  short bmPlanes;
-//  short bmBitsPixel;
-//  void* bmBits;
-//}
-
-//struct RGBQUAD { // rgbq
-//    byte    rgbBlue;
-//    byte    rgbGreen;
-//    byte    rgbRed;
-//    byte    rgbReserved;
-//}
-
-// declared in phobos
-//struct BITMAPINFO { // bmi
-//    BITMAPINFOHEADER bmiHeader;
-//    RGBQUAD          bmiColors[1];
-//}
-
-//struct BITMAPINFOHEADER {
-//  int biSize;
-//  int biWidth;
-//  int biHeight;
-//  short biPlanes;
-//  short biBitCount;
-//  int biCompression;
-//  int biSizeImage;
-//  int biXPelsPerMeter;
-//  int biYPelsPerMeter;
-//  int biClrUsed;
-//  int biClrImportant;
-//}
-
-
-
-//struct CHARSETINFO {
-//    UINT ciCharset;
-//    UINT ciACP;
-//    FONTSIGNATURE fs;
-//}alias CHARSETINFO* PCHARSETINFO, LPCHARSETINFO;
-
-
-
-
-struct CHOOSEFONTA {
-    // sizeof = 60 ???
-//  align(2):
-    DWORD        lStructSize;
-    HWND         hwndOwner;
-    HDC          hDC;
-    LPLOGFONTA   lpLogFont;
-    INT          iPointSize;
-    DWORD        Flags;
-    DWORD        rgbColors;
-    LPARAM       lCustData;
-    LPCFHOOKPROC lpfnHook;
-    LPCSTR      lpTemplateName;
-    HINSTANCE    hInstance;
-    LPSTR       lpszStyle;
-    WORD         nFontType;
-    WORD         ___MISSING_ALIGNMENT__;
-    INT          nSizeMin;
-    INT          nSizeMax;
-}alias CHOOSEFONTA* PCHOOSEFONTA, LPCHOOSEFONTA;
-
-struct CHOOSEFONTW {
-    // sizeof = 60 ???
-//  align(2):
-    DWORD        lStructSize;
-    HWND         hwndOwner;
-    HDC          hDC;
-    LOGFONTW*    lpLogFont;
-    INT          iPointSize;
-    DWORD        Flags;
-    DWORD        rgbColors;
-    LPARAM       lCustData;
-    LPCFHOOKPROC lpfnHook;
-    LPCWSTR      lpTemplateName;
-    HINSTANCE    hInstance;
-    LPWSTR       lpszStyle;
-    WORD         nFontType;
-    WORD         ___MISSING_ALIGNMENT__;
-    INT          nSizeMin;
-    INT          nSizeMax;
-}alias CHOOSEFONTW* PCHOOSEFONTW, LPCHOOSEFONTW;
-version(Win32SansUnicode){
-    alias CHOOSEFONTA CHOOSEFONT;
-}else{
-    alias CHOOSEFONTW CHOOSEFONT;
-}
-
-struct COMBOBOXINFO {
-    DWORD cbSize;
-    RECT rcItem;
-    RECT rcButton;
-    DWORD stateButton;
-    HWND hwndCombo;
-    HWND hwndItem;
-    HWND hwndList;
-} alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO;
-
-//struct COMPOSITIONFORM {
-//    DWORD dwStyle;
-//    POINT ptCurrentPos;
-//    RECT rcArea;
-//}
-//alias COMPOSITIONFORM* LPCOMPOSITIONFORM;
-
-// const uint CCHDEVICENAME = 32;
-// const uint CCHFORMNAME = 32;
-
-struct DEVMODEA {    // dvmd
-    BYTE   dmDeviceName[CCHDEVICENAME];
-    WORD   dmSpecVersion;
-    WORD   dmDriverVersion;
-    WORD   dmSize;
-    WORD   dmDriverExtra;
-    DWORD  dmFields;
-//    union {
-//      struct {
-//        short dmOrientation;
-//        short dmPaperSize;
-//        short dmPaperLength;
-//        short dmPaperWidth;
-//      };
-//      POINTL dmPosition;
-//    };
-    POINT  dmPosition;
-    short  dmScale;
-    short  dmCopies;
-    short  dmDefaultSource;
-    short  dmPrintQuality;
-    short  dmColor;
-    short  dmDuplex;
-    short  dmYResolution;
-    short  dmTTOption;
-    short  dmCollate;
-    BYTE  dmFormName[CCHFORMNAME];
-    WORD  dmLogPixels;
-    DWORD  dmBitsPerPel;
-    DWORD  dmPelsWidth;
-    DWORD  dmPelsHeight;
-    DWORD  dmDisplayFlags;
-    DWORD  dmDisplayFrequency;
-//#if(WINVER >= 0x0400)
-    DWORD  dmICMMethod;
-    DWORD  dmICMIntent;
-    DWORD  dmMediaType;
-    DWORD  dmDitherType;
-    DWORD  dmReserved1;
-    DWORD  dmReserved2;
-//#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
-    DWORD  dmPanningWidth;
-    DWORD  dmPanningHeight;
-//#endif
-//#endif /* WINVER >= 0x0400 */
-}
-
-struct DEVMODEW {    // dvmd
-    WCHAR  dmDeviceName[CCHDEVICENAME];
-    WORD   dmSpecVersion;
-    WORD   dmDriverVersion;
-    WORD   dmSize;
-    WORD   dmDriverExtra;
-    DWORD  dmFields;
-//    union {
-//      struct {
-//        short dmOrientation;
-//        short dmPaperSize;
-//        short dmPaperLength;
-//        short dmPaperWidth;
-//      };
-      POINTL dmPosition;
-//    };
-    short  dmScale;
-    short  dmCopies;
-    short  dmDefaultSource;
-    short  dmPrintQuality;
-    short  dmColor;
-    short  dmDuplex;
-    short  dmYResolution;
-    short  dmTTOption;
-    short  dmCollate;
-    WCHAR dmFormName[CCHFORMNAME];
-    WORD  dmLogPixels;
-    DWORD  dmBitsPerPel;
-    DWORD  dmPelsWidth;
-    DWORD  dmPelsHeight;
-    DWORD  dmDisplayFlags;
-    DWORD  dmDisplayFrequency;
-//#if(WINVER >= 0x0400)
-    DWORD  dmICMMethod;
-    DWORD  dmICMIntent;
-    DWORD  dmMediaType;
-    DWORD  dmDitherType;
-    DWORD  dmReserved1;
-    DWORD  dmReserved2;
-//#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
-    DWORD  dmPanningWidth;
-    DWORD  dmPanningHeight;
-//#endif
-//#endif /* WINVER >= 0x0400 */
-}
-
-//PORTING_TODO: defined in tango
-//version(Win32SansUnicode){
-//    alias DEVMODEA DEVMODE;
-//}else{
-//    alias DEVMODEW DEVMODE;
-//}
-
-//struct DIBSECTION {
-//    // BITMAP
-//    int bmType;
-//    int bmWidth;
-//    int bmHeight;
-//    int bmWidthBytes;
-//    short bmPlanes;
-//    short bmBitsPixel;
-//    void* bmBits;
-//    // end BITMAP
-//    int biSize;
-//    int biWidth;
-//    int biHeight;
-//    short biPlanes;
-//    short biBitCount;
-//    int biCompression;
-//    int biSizeImage;
-//    int biXPelsPerMeter;
-//    int biYPelsPerMeter;
-//    int biClrUsed;
-//    int biClrImportant;
-//    int dsBitfields0;
-//    int dsBitfields1;
-//    int dsBitfields2;
-//    int dshSection;
-//    int dsOffset;
-//}
-
-struct DLLVERSIONINFO {
-    DWORD cbSize;
-    DWORD dwMajorVersion;
-    DWORD dwMinorVersion;
-    DWORD dwBuildNumber;
-    DWORD dwPlatformID;
-}
-
-
-
-struct DROPFILES {
-    DWORD  pFiles; // Offset of the file list from the beginning of this structure, in bytes.
-    POINT pt; // Drop point. The coordinates depend on fNC.
-    BOOL fNC;   // Nonclient area flag. If this member is TRUE, pt specifies the screen
-                      // coordinates of a point in a window's nonclient area. If it is FALSE,
-                      // pt specifies the client coordinates of a point in the client area.
-    BOOL fWide; // Value that indicates whether the file contains ANSI or Unicode
-                      // characters. If it is zero, it contains ANSI characters. Otherwise, it
-                      // contains Unicode characters.
-
-}
-
-
-// struct ENUMLOGFONTA {
-//   LOGFONTA elfLogFont;
-//   CHAR   elfFullName[LF_FULLFACESIZE];
-//   CHAR   elfStyle[LF_FACESIZE];
-// }
-// struct ENUMLOGFONTW {
-//   LOGFONTW elfLogFont;
-//   WCHAR   elfFullName[LF_FULLFACESIZE];
-//   WCHAR   elfStyle[LF_FACESIZE];
-// }
-// struct ENUMLOGFONTEXA {
-//     LOGFONTA  elfLogFont;
-//     BYTE  elfFullName[LF_FULLFACESIZE];
-//     BYTE  elfStyle[LF_FACESIZE];
-//     BYTE  elfScript[LF_FACESIZE];
-// }
-// struct ENUMLOGFONTEXW {
-//     LOGFONTW  elfLogFont;
-//     WCHAR  elfFullName[LF_FULLFACESIZE];
-//     WCHAR  elfStyle[LF_FACESIZE];
-//     WCHAR  elfScript[LF_FACESIZE];
-// }
-// version(Win32SansUnicode){
-//     alias ENUMLOGFONTA ENUMLOGFONT;
-//     alias ENUMLOGFONTEXA ENUMLOGFONTEX;
-// }else {
-//     alias ENUMLOGFONTW ENUMLOGFONT;
-//     alias ENUMLOGFONTEXW ENUMLOGFONTEX;
-// }
-
-// in phobos aready
-//struct FILETIME {
-//    DWORD dwLowDateTime;
-//    DWORD dwHighDateTime;
-//}
-
-
-
-struct GOFFSET {
-  LONG  du;
-  LONG  dv;
-}
-
-struct GRADIENT_RECT {
-  ULONG    UpperLeft;
-  ULONG    LowerRight;
-}
-
-struct GUITHREADINFO {
-    DWORD cbSize;
-    DWORD flags;
-    HWND hwndActive;
-    HWND hwndFocus;
-    HWND hwndCapture;
-    HWND hwndMenuOwner;
-    HWND hwndMoveSize;
-    HWND hwndCaret;
-    RECT rcCaret;
-}alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO;
-
-struct HDITEMA {
-    UINT    mask;
-    int     cxy;
-    LPSTR  pszText;
-    HBITMAP hbm;
-    int     cchTextMax;
-    int     fmt;
-    LPARAM  lParam;
-    int     iImage;
-    int     iOrder;
-}
-struct HDITEMW {
-    UINT    mask;
-    int     cxy;
-    LPWSTR  pszText;
-    HBITMAP hbm;
-    int     cchTextMax;
-    int     fmt;
-    LPARAM  lParam;
-    int     iImage;
-    int     iOrder;
-}
-version(Win32SansUnicode){
-    alias HDITEMA HDITEM;
-}else{
-    alias HDITEMW HDITEM;
-}
-alias HDITEM* LPHDITEM;
-
-
-//struct ICONINFO {
-//   BOOL    fIcon;
-//   DWORD   xHotspot;
-//   DWORD   yHotspot;
-//   HBITMAP hbmMask;
-//   HBITMAP hbmColor;
-//}
-//alias ICONINFO*  PICONINFO, LPICONINFO;
-
-struct INITCOMMONCONTROLSEX {
-    DWORD dwSize;
-    DWORD dwICC;
-}alias INITCOMMONCONTROLSEX* PINITCOMMONCONTROLSEX, LPINITCOMMONCONTROLSEX;
-
-struct INPUT {
-    // Note: <Shawn> sizeof = 28
-    int type;
-  union {
-        MOUSEINPUT mi;
-        KEYBDINPUT ki;
-//        HARDWAREINPUT hi;
-    }
-}alias INPUT* PINPUT, LPINPUT;
-
-//struct ITEMIDLIST {
-//    SHITEMID mkid;
-//}
-//alias ITEMIDLIST* PITEMIDLIST, LPITEMIDLIST, LPCITEMIDLIST;
-
-struct KEYBDINPUT {
-    WORD wVk;
-    WORD wScan;
-    DWORD dwFlags;
-    DWORD time;
-    ULONG_PTR dwExtraInfo;
-}
-
-
-// struct LOGBRUSH {
-//   UINT     lbStyle;
-//   COLORREF lbColor;
-//   LONG     lbHatch;
-// }
-
-
-struct LVCOLUMNA {
-    UINT mask;
-    int fmt;
-    int cx;
-    LPSTR pszText;
-    int cchTextMax;
-    int iSubItem;
-    int iImage;
-    int iOrder;
-}
-struct LVCOLUMNW {
-    UINT mask;
-    int fmt;
-    int cx;
-    LPWSTR pszText;
-    int cchTextMax;
-    int iSubItem;
-    int iImage;
-    int iOrder;
-}
-version(Win32SansUnicode){
-    alias LVCOLUMNA LVCOLUMN;
-}else{
-    alias LVCOLUMNW LVCOLUMN;
-}
-alias LVCOLUMN* LPLVCOLUMN;
-
-struct LVFINDINFOA {
-    UINT flags;
-    LPCSTR psz;
-    LPARAM lParam;
-    POINT pt;
-    UINT vkDirection;
-}
-alias LVFINDINFOA* LPFINDINFOA;
-struct LVFINDINFOW {
-    UINT flags;
-    LPCWSTR psz;
-    LPARAM lParam;
-    POINT pt;
-    UINT vkDirection;
-}
-alias LVFINDINFOW* LPFINDINFOW;
-
-version(Win32SansUnicode){
-    alias LVFINDINFOA LVFINDINFO;
-}else{
-    alias LVFINDINFOW LVFINDINFO;
-}
-
-struct LVHITTESTINFO
-{
-    POINT pt;
-    UINT flags;
-    int iItem;
-    int iSubItem;
-}
-
-
-struct LVITEMA {
-    UINT   mask;
-    int    iItem;
-    int    iSubItem;
-    UINT   state;
-    UINT   stateMask;
-    LPSTR  pszText;
-    int    cchTextMax;
-    int    iImage;
-    LPARAM lParam;
-    int iIndent;
-}
-struct LVITEMW {
-    UINT   mask;
-    int    iItem;
-    int    iSubItem;
-    UINT   state;
-    UINT   stateMask;
-    LPWSTR  pszText;
-    int    cchTextMax;
-    int    iImage;
-    LPARAM lParam;
-    int iIndent;
-}
-version(Win32SansUnicode){
-    alias LVITEMA LVITEM;
-}else{
-    alias LVITEMW LVITEM;
-}
-alias LVITEM* LPLVITEM;
-
-struct MARGINS {
-    int cxLeftWidth;
-    int cxRightWidth;
-    int cyTopHeight;
-    int cyBottomHeight;
-}
-
-struct MENUBARINFO {
-  DWORD cbSize;
-  RECT  rcBar;
-  HMENU hMenu;
-  HWND  hwndMenu;
-  BOOL  fBarFocused;
-  BOOL  fFocused;
-}alias MENUBARINFO* PMENUBARINFO, LPMENUBARINFO;
-
-struct MENUINFO {
-  DWORD   cbSize;
-  DWORD   fMask;
-  DWORD   dwStyle;
-  UINT    cyMax;
-  HBRUSH  hbrBack;
-  DWORD   dwContextHelpID;
-  ULONG_PTR  dwMenuData;
-}
-alias MENUINFO* PCMENUINFO, LPCMENUINFO, LPCCMENUINFO;
-
-/*
-* Feature in Windows.  The hbmpItem field requires Windows 4.10
-* or greater.  On Windows NT 4.0, passing in a larger struct size
-* in the cbSize field does nothing.  On Windows 95, the MENUITEMINFO
-* calls fail when the struct size is too large.  The fix is to ensure
-* that the correct struct size is used for the Windows platform.
-*/
-// struct MENUITEMINFOA
-// {
-//     UINT    cbSize;
-//     UINT    fMask;
-//     UINT    fType;          // used if MIIM_TYPE
-//     UINT    fState;         // used if MIIM_STATE
-//     UINT    wID;            // used if MIIM_ID
-//     HMENU   hSubMenu;       // used if MIIM_SUBMENU
-//     HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
-//     HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
-//     DWORD   dwItemData;     // used if MIIM_DATA
-//     LPSTR   dwTypeData;     // used if MIIM_TYPE
-//     UINT    cch;            // used if MIIM_TYPE
-//     HBITMAP hbmpItem;
-// }
-// alias MENUITEMINFOA* PMENUITEMINFOA, LPMENUITEMINFOA;
-// struct MENUITEMINFOW
-// {
-//     UINT    cbSize;
-//     UINT    fMask;
-//     UINT    fType;          // used if MIIM_TYPE
-//     UINT    fState;         // used if MIIM_STATE
-//     UINT    wID;            // used if MIIM_ID
-//     HMENU   hSubMenu;       // used if MIIM_SUBMENU
-//     HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
-//     HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
-//     DWORD   dwItemData;     // used if MIIM_DATA
-//     LPWSTR  dwTypeData;     // used if MIIM_TYPE
-//     UINT    cch;            // used if MIIM_TYPE
-//     HBITMAP hbmpItem;
-// }   alias MENUITEMINFOW* PMENUITEMINFOW, LPMENUITEMINFOW;
-//version(Win32SansUnicode){
-//    alias MENUITEMINFOA MENUITEMINFO;
-//}else{
-//    alias MENUITEMINFOW MENUITEMINFO;
-//}
-//alias MENUITEMINFO * LPMENUITEMINFO;
-
-
-//struct MONITORINFO {
-//    DWORD  cbSize;
-//    RECT   rcMonitor;
-//    RECT   rcWork;
-//    DWORD  dwFlags;
-//}
-//alias MONITORINFO* PMONITORINFO, LPMONITORINFO;
-
-struct MOUSEINPUT {
-    LONG    dx;
-    LONG    dy;
-    DWORD   mouseData;
-    DWORD   dwFlags;
-    DWORD   dwExtraInfo;
-}
-
-//struct MSG {
-//  int hwnd;
-//  int message;
-//  int wParam;
-//  int lParam;
-//  int time;
-////    POINT pt;
-//  int x, y;
-//}
-/+
-struct NEWTEXTMETRICA { // ntm
-    LONG   tmHeight;
-    LONG   tmAscent;
-    LONG   tmDescent;
-    LONG   tmInternalLeading;
-    LONG   tmExternalLeading;
-    LONG   tmAveCharWidth;
-    LONG   tmMaxCharWidth;
-    LONG   tmWeight;
-    LONG   tmOverhang;
-    LONG   tmDigitizedAspectX;
-    LONG   tmDigitizedAspectY;
-    BYTE  tmFirstChar;
-    BYTE  tmLastChar;
-    BYTE  tmDefaultChar;
-    BYTE  tmBreakChar;
-    BYTE   tmItalic;
-    BYTE   tmUnderlined;
-    BYTE   tmStruckOut;
-    BYTE   tmPitchAndFamily;
-    BYTE   tmCharSet;
-    DWORD  ntmFlags;
-    UINT   ntmSizeEM;
-    UINT   ntmCellHeight;
-    UINT   ntmAvgWidth;
-}
-struct NEWTEXTMETRICW { // ntm
-    LONG   tmHeight;
-    LONG   tmAscent;
-    LONG   tmDescent;
-    LONG   tmInternalLeading;
-    LONG   tmExternalLeading;
-    LONG   tmAveCharWidth;
-    LONG   tmMaxCharWidth;
-    LONG   tmWeight;
-    LONG   tmOverhang;
-    LONG   tmDigitizedAspectX;
-    LONG   tmDigitizedAspectY;
-    WCHAR  tmFirstChar;
-    WCHAR  tmLastChar;
-    WCHAR  tmDefaultChar;
-    WCHAR  tmBreakChar;
-    BYTE   tmItalic;
-    BYTE   tmUnderlined;
-    BYTE   tmStruckOut;
-    BYTE   tmPitchAndFamily;
-    BYTE   tmCharSet;
-    DWORD  ntmFlags;
-    UINT   ntmSizeEM;
-    UINT   ntmCellHeight;
-    UINT   ntmAvgWidth;
-}
-struct NEWTEXTMETRICEXA {
-    NEWTEXTMETRICA  ntmentm;
-    FONTSIGNATURE  ntmeFontSignature;
-}
-struct NEWTEXTMETRICEXW {
-    NEWTEXTMETRICW  ntmentm;
-    FONTSIGNATURE  ntmeFontSignature;
-}
-version(Win32SansUnicode){
-    alias NEWTEXTMETRICA NEWTEXTMETRIC;
-    alias NEWTEXTMETRICEXA NEWTEXTMETRICEX;
-}else{
-    alias NEWTEXTMETRICW NEWTEXTMETRIC;
-    alias NEWTEXTMETRICEXW NEWTEXTMETRICEX;
-}
-+/
-
-struct NMCUSTOMDRAW {
-    NMHDR  hdr;
-    DWORD  dwDrawStage;
-    HDC    hdc;
-    RECT   rc;
-    DWORD  dwItemSpec;
-    UINT   uItemState;
-    LPARAM lItemlParam;
-}
-
-struct NMHEADER {
-    NMHDR    hdr;
-    int      iItem;
-    int      iButton;
-    HDITEM  *pitem;
-}
-
-struct NMLISTVIEW {
-    NMHDR   hdr;
-    int     iItem;
-    int     iSubItem;
-    UINT    uNewState;
-    UINT    uOldState;
-    UINT    uChanged;
-    POINT   ptAction;
-    LPARAM  lParam;
-}
-
-struct NMLVCUSTOMDRAW {
-    NMCUSTOMDRAW nmcd;
-    COLORREF clrText;
-    COLORREF clrTextBk;
-//#if (_WIN32_IE >= 0x0400)
-    int iSubItem;
-//#endif
-}
-
-struct NMLVDISPINFOA {
-    NMHDR hdr;
-    LVITEMA item;
-}
-struct NMLVDISPINFOW {
-    NMHDR hdr;
-    LVITEMW item;
-}
-version(Win32SansUnicode){
-    alias NMLVDISPINFOA NMLVDISPINFO;
-}else{
-    alias NMLVDISPINFOW NMLVDISPINFO;
-}
-
-struct NMLVFINDITEMA {
-    NMHDR hdr;
-    int iStart;
-    LVFINDINFOA lvfi;
-}
-
-struct NMLVFINDITEMW {
-    NMHDR hdr;
-    int iStart;
-    LVFINDINFOW lvfi;
-}
-version(Win32SansUnicode){
-    alias NMLVFINDITEMA NMLVFINDITEM;
-}else{
-    alias NMLVFINDITEMW NMLVFINDITEM;
-}
-
-struct NMREBARCHEVRON {
-    NMHDR hdr;
-    UINT uBand;
-    UINT wID;
-    LPARAM lParam;
-    RECT rc;
-    LPARAM lParamNM;
-}
-
-struct NMRGINFO {
-    // NMHDR
-    HWND hwndFrom;
-    int idFrom;
-    int code;
-    // -end- NMHDR
-//  POINT ptAction;
-    int x;
-    int y;
-    int dwItemSpec;
-}
-struct NMTOOLBARA {
-    align(2):
-    NMHDR    hdr;
-    int      iItem;
-    TBBUTTON tbButton;
-    int      cchText;
-    LPSTR   pszText;
-}
-struct NMTOOLBARW {
-    align(2):
-    NMHDR    hdr;
-    int      iItem;
-    TBBUTTON tbButton;
-    int      cchText;
-    LPWSTR   pszText;
-}
-version(Win32SansUnicode){
-    alias NMTOOLBARA NMTOOLBAR;
-}else{
-    alias NMTOOLBARW NMTOOLBAR;
-}
-alias NMTOOLBAR* LPNMTOOLBAR;
-
-
-struct NMTTDISPINFOA {
-    NMHDR hdr;
-    LPSTR lpszText;
-    char szText[80];
-    HINSTANCE hinst;
-    UINT uFlags;
-    LPARAM lParam;
-}
-
-struct NMTTDISPINFOW {
-    NMHDR hdr;
-    LPWSTR lpszText;
-    WCHAR szText[80];
-    HINSTANCE hinst;
-    UINT uFlags;
-    LPARAM lParam;
-}
-version(Win32SansUnicode){
-    alias NMTTDISPINFOA NMTTDISPINFO;
-} else {
-    alias NMTTDISPINFOW NMTTDISPINFO;
-}
-
-struct NMTVCUSTOMDRAW {
-    NMCUSTOMDRAW nmcd;
-    COLORREF clrText;
-    COLORREF clrTextBk;
-//#if (_WIN32_IE &gt;= 0x0400)
-    int iLevel; // the iLevel field does not appear on WinCE
-//#endif
-}
-
-
-struct NOTIFYICONDATAA {
-    DWORD cbSize;
-    HWND hWnd;
-    UINT uID;
-    UINT uFlags;
-    UINT uCallbackMessage;
-    HICON hIcon;
-    char szTip[128] = '\0';
-    DWORD dwState;
-    DWORD dwStateMask;
-    char szInfo[256] = '\0';
-    union {
-        UINT uTimeout;
-        UINT uVersion;
-    };
-    char szInfoTitle[64] = '\0';
-    DWORD dwInfoFlags;
-    //GUID guidItem;
-    //HICON hBalloonIcon;
-} alias NOTIFYICONDATAA* PNOTIFYICONDATAA, LPNOTIFYICONDATAA;
-
-struct NOTIFYICONDATAW {
-    DWORD cbSize;
-    HWND hWnd;
-    UINT uID;
-    UINT uFlags;
-    UINT uCallbackMessage;
-    HICON hIcon;
-    WCHAR szTip[128] = '\0';
-    DWORD dwState;
-    DWORD dwStateMask;
-    WCHAR szInfo[256] = '\0';
-    union {
-        UINT uTimeout;
-        UINT uVersion;
-    }
-    WCHAR szInfoTitle[64] = '\0';
-    DWORD dwInfoFlags;
-    //GUID guidItem;
-    //HICON hBalloonIcon;
-}
-
-alias NOTIFYICONDATAW* PNOTIFYICONDATAW, LPNOTIFYICONDATAW;
-version(Win32SansUnicode){
-    alias NOTIFYICONDATAA NOTIFYICONDATA;
-}else{
-    alias NOTIFYICONDATAW NOTIFYICONDATA;
-}
-
-/* already in phobos now
-
-struct OPENFILENAMEA {
-   DWORD        lStructSize;
-   HWND         hwndOwner;
-   HINSTANCE    hInstance;
-   LPCSTR       lpstrFilter;
-   LPSTR        lpstrCustomFilter;
-   DWORD        nMaxCustFilter;
-   DWORD        nFilterIndex;
-   LPSTR        lpstrFile;
-   DWORD        nMaxFile;
-   LPSTR        lpstrFileTitle;
-   DWORD        nMaxFileTitle;
-   LPCSTR       lpstrInitialDir;
-   LPCSTR       lpstrTitle;
-   DWORD        Flags;
-   WORD         nFileOffset;
-   WORD         nFileExtension;
-   LPCSTR       lpstrDefExt;
-   LPARAM       lCustData;
-   LPOFNHOOKPROC lpfnHook;
-   LPCSTR       lpTemplateName;
-}
-
-struct OPENFILENAMEW {
-   DWORD        lStructSize;
-   HWND         hwndOwner;
-   HINSTANCE    hInstance;
-   LPCWSTR      lpstrFilter;
-   LPWSTR       lpstrCustomFilter;
-   DWORD        nMaxCustFilter;
-   DWORD        nFilterIndex;
-   LPWSTR       lpstrFile;
-   DWORD        nMaxFile;
-   LPWSTR       lpstrFileTitle;
-   DWORD        nMaxFileTitle;
-   LPCWSTR      lpstrInitialDir;
-   LPCWSTR      lpstrTitle;
-   DWORD        Flags;
-   WORD         nFileOffset;
-   WORD         nFileExtension;
-   LPCWSTR      lpstrDefExt;
-   LPARAM       lCustData;
-   LPOFNHOOKPROC lpfnHook;
-   LPCWSTR      lpTemplateName;
-}
-*/
-
-//PORTING_TODO: is needed?
-//version(Win32SansUnicode){
-//    alias OPENFILENAMEA OPENFILENAME;
-//}else{
-//    alias OPENFILENAMEW OPENFILENAME;
-//}
-
-
-//struct PAINTSTRUCT {
-//  int hdc;
-//  int fErase;
-////    RECT rcPaint;
-//  public int left, top, right, bottom;
-//  int fRestore;
-//  int fIncUpdate;
-//  byte rgbReserved[32];
-//}
-//alias windows.PAINTSTRUCT PAINTSTRUCT;
-
-//struct POINT {
-//  LONG x, y;
-//}
-
-
-struct PRINTDLGA {  // pd
-    align(2):
-    DWORD     lStructSize;
-    HWND      hwndOwner;
-    HANDLE    hDevMode;
-    HANDLE    hDevNames;
-    HDC       hDC;
-    DWORD     Flags;
-    WORD      nFromPage;
-    WORD      nToPage;
-    WORD      nMinPage;
-    WORD      nMaxPage;
-    WORD      nCopies;
-    HINSTANCE hInstance;
-    DWORD     lCustData;
-    LPPRINTHOOKPROC lpfnPrintHook;
-    LPSETUPHOOKPROC lpfnSetupHook;
-    LPCSTR    lpPrintTemplateName;
-    LPCSTR    lpSetupTemplateName;
-    HANDLE    hPrintTemplate;
-    HANDLE    hSetupTemplate;
-}
-alias PRINTDLGA* PPRINTDLGA, LPPRINTDLGA;
-struct PRINTDLGW {  // pd
-    align(2):
-    DWORD     lStructSize;
-    HWND      hwndOwner;
-    HANDLE    hDevMode;
-    HANDLE    hDevNames;
-    HDC       hDC;
-    DWORD     Flags;
-    WORD      nFromPage;
-    WORD      nToPage;
-    WORD      nMinPage;
-    WORD      nMaxPage;
-    WORD      nCopies;
-    HINSTANCE hInstance;
-    DWORD     lCustData;
-    LPPRINTHOOKPROC lpfnPrintHook;
-    LPSETUPHOOKPROC lpfnSetupHook;
-    LPCWSTR    lpPrintTemplateName;
-    LPCWSTR    lpSetupTemplateName;
-    HANDLE    hPrintTemplate;
-    HANDLE    hSetupTemplate;
-}
-alias PRINTDLGW* PPRINTDLGW, LPPRINTDLGW;
-version(Win32SansUnicode){
-    alias PRINTDLGA PRINTDLG;
-}else{
-    alias PRINTDLGW PRINTDLG;
-}
-
-struct REBARBANDINFOA {
-    UINT        cbSize;
-    UINT        fMask;
-    UINT        fStyle;
-    COLORREF    clrFore;
-    COLORREF    clrBack;
-    LPSTR      lpText;
-    UINT        cch;
-    int         iImage;
-    HWND        hwndChild;
-    UINT        cxMinChild;
-    UINT        cyMinChild;
-    UINT        cx;
-    HBITMAP     hbmBack;
-    UINT        wID;
-    UINT        cyChild;
-    UINT        cyMaxChild;
-    UINT        cyIntegral;
-    UINT        cxIdeal;
-    LPARAM      lParam;
-    UINT        cxHeader;
-    /* Note in WinCE.  The field cxHeader is not defined. */
-}
-struct REBARBANDINFOW {
-    UINT        cbSize;
-    UINT        fMask;
-    UINT        fStyle;
-    COLORREF    clrFore;
-    COLORREF    clrBack;
-    LPWSTR      lpText;
-    UINT        cch;
-    int         iImage;
-    HWND        hwndChild;
-    UINT        cxMinChild;
-    UINT        cyMinChild;
-    UINT        cx;
-    HBITMAP     hbmBack;
-    UINT        wID;
-    UINT        cyChild;
-    UINT        cyMaxChild;
-    UINT        cyIntegral;
-    UINT        cxIdeal;
-    LPARAM      lParam;
-    UINT        cxHeader;
-    /* Note in WinCE.  The field cxHeader is not defined. */
-}
-version(Win32SansUnicode){
-    alias REBARBANDINFOA REBARBANDINFO;
-}else{
-    alias REBARBANDINFOW REBARBANDINFO;
-}
-
-//struct RECT {
-//  int left;
-//  int top;
-//  int right;
-//  int bottom;
-//}
-
-//struct RGNDATA {
-//    RGNDATAHEADER rdh;
-//    char          Buffer[1];
-//} alias RGNDATA* PRGNDATA, LPRGNDATA;
-
-
-
-template BITWISE(T)
-{
-    // bit value set
-    void btvs(T* pData, uint bitnum, uint val){
-        *pData &=  ~(0x01 << bitnum);
-        if(val) *pData |= (0x01 << bitnum);
-    }
-    // bit value get
-    T btvg(T* pData, uint bitnum){
-        return cast(T)((*pData >> bitnum) & 0x01);
-    }
-}
-alias BITWISE!(BYTE).btvs btvs;
-alias BITWISE!(WORD).btvs btvs;
-alias BITWISE!(DWORD).btvs btvs;
-alias BITWISE!(BYTE).btvg btvg;
-alias BITWISE!(WORD).btvg btvg;
-alias BITWISE!(DWORD).btvg btvg;
-
-
-struct SCRIPT_ANALYSIS {
-    WORD BITS;
-    SCRIPT_STATE s;
-
-    // getter
-    uint eScript()      { return BITS & 0x03FFU; }
-    uint fRTL()         { return btvg(&BITS, 10); }
-    uint fLayoutRTL()   { return btvg(&BITS, 11); }
-    uint fLinkBefore()  { return btvg(&BITS, 12); }
-    uint fLinkAfter()   { return btvg(&BITS, 13); }
-    uint fLogicalOrder(){ return btvg(&BITS, 14); }
-    uint fNoGlyphIndex(){ return btvg(&BITS, 15); }
-    // setter
-    void eScript(uint val)      { BITS &= 0xFC00; BITS |= (val & 0x03FF); }
-    void fRTL(uint val)         { btvs(&BITS, 10, val); }
-    void fLayoutRTL(uint val)   { btvs(&BITS, 11, val); }
-    void fLinkBefore(uint val)  { btvs(&BITS, 12, val); }
-    void fLinkAfter(uint val)   { btvs(&BITS, 13, val); }
-    void fLogicalOrder(uint val){ btvs(&BITS, 14, val); }
-    void fNoGlyphIndex(uint val){ btvs(&BITS, 15, val); }
-}
-
-alias void *SCRIPT_CACHE;
-
-struct SCRIPT_CONTROL {
-    align(1):
-    WORD uDefaultLanguage;
-    BYTE BITS;
-    BYTE fReserved;
-
-    // getter
-    uint fContextDigits()       { return btvg(&BITS, 0); }
-    uint fInvertPreBoundDir()   { return btvg(&BITS, 1); }
-    uint fInvertPostBoundDir()  { return btvg(&BITS, 2); }
-    uint fLinkStringBefore()    { return btvg(&BITS, 3); }
-    uint fLinkStringAfter()     { return btvg(&BITS, 4); }
-    uint fNeutralOverride()     { return btvg(&BITS, 5); }
-    uint fNumericOverride()     { return btvg(&BITS, 6); }
-    uint fLegacyBidiClass()     { return btvg(&BITS, 7); }
-
-    void fContextDigits(uint val)       { btvs(&BITS, 0, val); }
-    void fInvertPreBoundDir(uint val)   { btvs(&BITS, 1, val); }
-    void fInvertPostBoundDir(uint val)  { btvs(&BITS, 2, val); }
-    void fLinkStringBefore(uint val)    { btvs(&BITS, 3, val); }
-    void fLinkStringAfter(uint val)     { btvs(&BITS, 4, val); }
-    void fNeutralOverride(uint val)     { btvs(&BITS, 5, val); }
-    void fNumericOverride(uint val)     { btvs(&BITS, 6, val); }
-    void fLegacyBidiClass(uint val)     { btvs(&BITS, 7, val); }
-}
-
-struct SCRIPT_FONTPROPERTIES {
-  int   cBytes;
-  WORD  wgBlank;
-  WORD  wgDefault;
-  WORD  wgInvalid;
-  WORD  wgKashida;
-  int   iKashidaWidth;
-}
-
-struct SCRIPT_ITEM {
-    int iCharPos;
-    SCRIPT_ANALYSIS a;
-}
-
-struct SCRIPT_LOGATTR {
-    align(1):
-    BYTE BITS;
-
-    // gettter
-    uint fSoftBreak()   { return btvg(&BITS, 0); }
-    uint fWhiteSpace()  { return btvg(&BITS, 1); }
-    uint fCharStop()    { return btvg(&BITS, 2); }
-    uint fWordStop()    { return btvg(&BITS, 3); }
-    uint fInvalid()     { return btvg(&BITS, 4); }
-    uint fReserved()    { return cast(BYTE)(BITS>>5); }
-
-    void fSoftBreak(uint val)   { btvs(&BITS, 0, val); }
-    void fWhiteSpace(uint val)  { btvs(&BITS, 1, val); }
-    void fCharStop(uint val)    { btvs(&BITS, 2, val); }
-    void fWordStop(uint val)    { btvs(&BITS, 3, val); }
-    void fInvalid(uint val)     { btvs(&BITS, 4, val); }
-    void fReserved(uint val)    { BITS &= 0x1F; BITS |= (val & 0x07)<<5; }
-}
-
-
-struct SCRIPT_PROPERTIES {
-    DWORD   BITS1;
-    DWORD   BITS2;
-
-    uint langid()   { return BITS1 >> 16; }
-    uint fNumeric() { return btvg(&BITS1, 16); }
-    uint fComplex() { return btvg(&BITS1, 17); }
-    uint fNeedsWordBreaking()   { return btvg(&BITS1, 18); }
-    uint fNeedsCaretInfo()      { return btvg(&BITS1, 19); }
-    uint bCharSet()             { return (BITS1 >> 20) & 0xFF; }
-    uint fControl()             { return btvg(&BITS1, 28); }
-    uint fPrivateUseArea()      { return btvg(&BITS1, 29); }
-    uint fNeedsCharacterJustify(){ return btvg(&BITS1, 30); }
-    uint fInvalidGlyph()        { return btvg(&BITS1, 31); }
-    uint fInvalidLogAttr()      { return btvg(&BITS2, 0); }
-    uint fCDM()                 { return btvg(&BITS2, 1); }
-    uint fAmbiguousCharSet()    { return btvg(&BITS2, 2); }
-    uint fClusterSizeVaries()   { return btvg(&BITS2, 3); }
-    uint fRejectInvalid()       { return btvg(&BITS2, 4); }
-
-    void langid(uint val)       { BITS1 &= 0xFFFF0000; BITS1 |= (val & 0xFFFF); }
-    void fNumeric(uint val)             { btvs(&BITS1, 16, val); }
-    void fComplex(uint val)             { btvs(&BITS1, 17, val); }
-    void fNeedsWordBreaking(uint val)   { btvs(&BITS1, 18, val); }
-    void fNeedsCaretInfo(uint val)      { btvs(&BITS1, 19, val); }
-    void bCharSet(uint val)             { BITS1 &= 0xF00FFFFF; BITS1 |= (val & 0xFF)<<20; }
-    void fControl(uint val)             { btvs(&BITS1, 28, val); }
-    void fPrivateUseArea(uint val)      { btvs(&BITS1, 29, val); }
-    void fNeedsCharacterJustify(uint val){ btvs(&BITS1, 30, val); }
-    void fInvalidGlyph(uint val)        { btvs(&BITS1, 31, val); }
-    void fInvalidLogAttr(uint val)      { btvs(&BITS2, 0, val); }
-    void fCDM(uint val)                 { btvs(&BITS2, 1, val); }
-    void fAmbiguousCharSet(uint val)    { btvs(&BITS2, 2, val); }
-    void fClusterSizeVaries(uint val)   { btvs(&BITS2, 3, val); }
-    void fRejectInvalid(uint val)       { btvs(&BITS2, 4, val); }
-}
-
-
-struct SCRIPT_STATE {
-    WORD BITS;
-    // getter
-    uint uBidiLevel()           { return (BITS & 0x1F);}
-    uint fOverrideDirection()   { return btvg(&BITS, 5); }
-    uint fInhibitSymSwap()      { return btvg(&BITS, 6); }
-    uint fCharShape()           { return btvg(&BITS, 7); }
-    uint fDigitSubstitute()     { return btvg(&BITS, 8); }
-    uint fInhibitLigate()       { return btvg(&BITS, 9); }
-    uint fDisplayZWG()          { return btvg(&BITS, 10); }
-    uint fArabicNumContext()    { return btvg(&BITS, 11); }
-    uint fGcpClusters()         { return btvg(&BITS, 12); }
-    uint fReserved()            { return btvg(&BITS, 13); }
-    uint fEngineReserved()      { return (BITS >> 14) & 0x03;}
-    // setter
-    void uBidiLevel(uint val)           { BITS &= 0xFFE0; BITS |= (val & 0x1F); }
-    void fOverrideDirection(uint val)   { btvs(&BITS, 5, val); }
-    void fInhibitSymSwap(uint val)      { btvs(&BITS, 6, val); }
-    void fCharShape(uint val)           { btvs(&BITS, 7, val); }
-    void fDigitSubstitute(uint val)     { btvs(&BITS, 8, val); }
-    void fInhibitLigate(uint val)       { btvs(&BITS, 9, val); }
-    void fDisplayZWG(uint val)          { btvs(&BITS, 10, val); }
-    void fArabicNumContext(uint val)    { btvs(&BITS, 11, val); }
-    void fGcpClusters(uint val)         { btvs(&BITS, 12, val); }
-    void fReserved(uint val)            { btvs(&BITS, 13, val); }
-    void fEngineReserved(uint val)      { BITS &= 0x3FFF; BITS |= ((val & 0x03) << 14); }
-}
-
-
-struct SCRIPT_VISATTR {
-    align(1):
-    BYTE BITS;
-    BYTE fShapeReserved;
-
-    // getter
-    uint uJustification()   { return BITS & 0x0F; }
-    uint fClusterStart()    { return btvg(&BITS, 4); }
-    uint fDiacritic()       { return btvg(&BITS, 5); }
-    uint fZeroWidth()       { return btvg(&BITS, 6); }
-    uint fReserved()        { return btvg(&BITS, 7); }
-
-    // setter
-    void uJustification(uint val)   { BITS &= 0xF0; BITS |= (val & 0x0F); }
-    void fClusterStart(uint val)    { btvs(&BITS, 4, val); }
-    void fDiacritic(uint val)       { btvs(&BITS, 5, val); }
-    void fZeroWidth(uint val)       { btvs(&BITS, 6, val); }
-    void fReserved(uint val)        { btvs(&BITS, 7, val); }
-}
-
-//struct SCROLLINFO {
-//    UINT cbSize;
-//    UINT fMask;
-//    int  nMin;
-//    int  nMax;
-//    UINT nPage;
-//    int  nPos;
-//    int  nTrackPos;
-//}
-//alias SCROLLINFO* PSCROLLINFO, LPSCROLLINFO, LPCSCROLLINFO;
-
-version(WinCE)
-{
-struct SHACTIVATEINFO {
-    int cbSize;
-    HWND hwndLastFocus;
-    int fSipUp;
-    int fSipOnDeactivation;
-    int fActive;
-    int fReserved;
-}
-}
-
-struct SHELLEXECUTEINFOA {
-    DWORD cbSize;
-    ULONG fMask;
-    HWND hwnd;
-    LPCSTR lpVerb;
-    LPCSTR lpFile;
-    LPCSTR lpParameters;
-    LPCSTR lpDirectory;
-    int nShow;
-    HINSTANCE hInstApp;
-
-    // Optional members
-    LPVOID lpIDList;
-    LPCSTR lpClass;
-    HKEY hkeyClass;
-    DWORD dwHotKey;
-    HANDLE hIcon;
-    HANDLE hProcess;
-} alias SHELLEXECUTEINFOA* PSHELLEXECUTEINFOA, LPSHELLEXECUTEINFOA;
-struct SHELLEXECUTEINFOW {
-    DWORD cbSize;
-    ULONG fMask;
-    HWND hwnd;
-    LPCWSTR lpVerb;
-    LPCWSTR lpFile;
-    LPCWSTR lpParameters;
-    LPCWSTR lpDirectory;
-    int nShow;
-    HINSTANCE hInstApp;
-
-    // Optional members
-    LPVOID lpIDList;
-    LPCWSTR lpClass;
-    HKEY hkeyClass;
-    DWORD dwHotKey;
-    HANDLE hIcon;
-    HANDLE hProcess;
-} alias SHELLEXECUTEINFOW* PSHELLEXECUTEINFOW, LPSHELLEXECUTEINFOW;
-version(Win32SansUnicode){
-    alias SHELLEXECUTEINFOA SHELLEXECUTEINFO;
-}else{
-    alias SHELLEXECUTEINFOW SHELLEXECUTEINFO;
-}
-alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO;
-
-
-//version(WinCE)
-//{
-    struct SHMENUBARINFO {
-        int cbSize;
-        HWND hwndParent;
-        int dwFlags;
-        int nToolBarId;
-        HINSTANCE hInstRes;
-        int nBmpId;
-        int cBmpImages;
-        HWND hwndMB;
-    }
-
-    struct SHRGINFO {
-        DWORD cbSize;
-        HWND hwndClient;
-        POINT ptDown;
-        DWORD dwFlags;
-    }
-
-    struct SIPINFO {
-        DWORD cbSize;
-        DWORD fdwFlags;
-        RECT rcVisibleDesktop;
-        RECT rcSipRect;
-        DWORD dwImDataSize;
-        VOID *pvImData;
-    }
-//} // end of version WinCE
-
-//struct SIZE {
-//  LONG cx;
-//  LONG cy;
-//}
-//alias SIZE* LPSIZE, LPSIZEL;
-//alias SIZE SIZEL;
-
-
-struct TBBUTTONINFOA{
-    align(2):
-    UINT cbSize;
-    DWORD dwMask;
-    int idCommand;
-    int iImage;
-    BYTE fsState;
-    BYTE fsStyle;
-    WORD cx;
-    DWORD_PTR lParam;
-    LPSTR pszText;
-    int cchText;
-}
-struct TBBUTTONINFOW{
-    align(2):
-    UINT cbSize;
-    DWORD dwMask;
-    int idCommand;
-    int iImage;
-    BYTE fsState;
-    BYTE fsStyle;
-    WORD cx;
-    DWORD_PTR lParam;
-    LPWSTR pszText;
-    int cchText;
-}
-version(Win32SansUnicode){
-    alias TBBUTTONINFOA TBBUTTONINFO;
-}else{
-    alias TBBUTTONINFOW TBBUTTONINFO;
-}
-alias TBBUTTONINFO* LPTBBUTTONINFO;
-
-
-struct TCITEMA {
-    UINT mask;
-    DWORD dwState;
-    DWORD dwStateMask;
-    LPSTR pszText;
-    int cchTextMax;
-    int iImage;
-}
-struct TCITEMW {
-    UINT mask;
-    DWORD dwState;
-    DWORD dwStateMask;
-    LPWSTR pszText;
-    int cchTextMax;
-    int iImage;
-    LPARAM lParam;
-}
-version(Win32SansUnicode){
-    alias TCITEMA TCITEM;
-}else{
-    alias TCITEMW TCITEM;
-}
-
-
-// struct TOOLINFOA {
-//     UINT cbSize;
-//     UINT uFlags;
-//     HWND hwnd;
-//     UINT uId;
-//     RECT rect;
-//     HINSTANCE hinst;
-//     LPSTR lpszText;
-//     LPARAM lParam;
-// }
-// struct TOOLINFOW {
-//     UINT cbSize;
-//     UINT uFlags;
-//     HWND hwnd;
-//     UINT uId;
-//     RECT rect;
-//     HINSTANCE hinst;
-//     LPWSTR lpszText;
-//     LPARAM lParam;
-// }
-// version(Win32SansUnicode){
-//     alias TOOLINFOA TOOLINFO;
-// }else{
-//     alias TOOLINFOW TOOLINFO;
-// }
-
-struct TRACKMOUSEEVENT {
-    DWORD cbSize;
-    DWORD dwFlags;
-    HWND hwndTrack;
-    DWORD dwHoverTime;
-}
-alias TRACKMOUSEEVENT* PTRACKMOUSEEVENT, LPTRACKMOUSEEVENT;
-
-struct TRIVERTEX {
-  LONG        x;
-  LONG        y;
-  COLOR16     Red;
-  COLOR16     Green;
-  COLOR16     Blue;
-  COLOR16     Alpha;
-}
-alias TRIVERTEX* PTRIVERTEX, LPTRIVERTEX;
-
-
-struct TVHITTESTINFO {
-    POINT pt;
-    UINT flags;
-    HTREEITEM hItem;
-}
-
-
-
-
-
-
-//alias extern(Windows) int (*PFNTVCOMPARE)(LPARAM, LPARAM, LPARAM);
-struct TVSORTCB {
-    HTREEITEM hParent;
-    PFNTVCOMPARE lpfnCompare;
-    LPARAM lParam;
-}
-
-
-
-
-//struct WINDOWPLACEMENT {
-//    UINT length;
-//    UINT flags;
-//    UINT showCmd;
-//    POINT ptMinPosition;
-//    POINT ptMaxPosition;
-//    RECT rcNormalPosition;
-//}
-//
-// struct WINDOWPOS {
-//     HWND hwnd;
-//     HWND hwndInsertAfter;
-//     int x;
-//     int y;
-//     int cx;
-//     int cy;
-//     UINT flags;
-// }
-
-// WNDCLASSA is declared in phobos
-// struct WNDCLASSW {
-//     UINT        style;
-//     WNDPROC_I     lpfnWndProc;
-//     int         cbClsExtra;
-//     int         cbWndExtra;
-//     HINSTANCE   hInstance;
-//     HICON       hIcon;
-//     HCURSOR     hCursor;
-//     HBRUSH      hbrBackground;
-//     LPCWSTR     lpszMenuName;
-//     LPCWSTR     lpszClassName;
-// }alias WNDCLASSW* PWNDCLASSW, LPWNDCLASSW;
-//
-// // since phobos has alias WNDCLASSA to WNDCLASS, we have to alias it another name
-// version(Win32SansUnicode){
-//     alias WNDCLASSA WNDCLASS_T;
-// }else{
-//     alias WNDCLASSW WNDCLASS_T;
-// }
-
-enum TF_DA_COLORTYPE {
-  TF_CT_NONE = 0,
-  TF_CT_SYSCOLOR = 1,
-  TF_CT_COLORREF = 2
-}
-
-enum TF_DA_LINESTYLE {
-  TF_LS_NONE = 0,
-  TF_LS_SOLID = 1,
-  TF_LS_DOT = 2,
-  TF_LS_DASH = 3,
-  TF_LS_SQUIGGLE = 4
-}
-
-enum TF_DA_ATTR_INFO {
-  TF_ATTR_INPUT = 0,
-  TF_ATTR_TARGET_CONVERTED = 1,
-  TF_ATTR_CONVERTED = 2,
-  TF_ATTR_TARGET_NOTCONVERTED = 3,
-  TF_ATTR_INPUT_ERROR = 4,
-  TF_ATTR_FIXEDCONVERTED = 5,
-  TF_ATTR_OTHER = -1
-}
-
-struct TF_DA_COLOR {
-  TF_DA_COLORTYPE type;
-  union {
-    int nIndex;
-    COLORREF cr;
-  };
-}
-
-struct TF_DISPLAYATTRIBUTE{
-  TF_DA_COLOR crText;
-  TF_DA_COLOR crBk;
-  TF_DA_LINESTYLE lsStyle;
-  BOOL fBoldLine;
-  TF_DA_COLOR crLine;
-  TF_DA_ATTR_INFO bAttr;
-}
-
-struct NMTTCUSTOMDRAW {
-    NMCUSTOMDRAW nmcd;
-    UINT uDrawFlags;
-}
-alias NMTTCUSTOMDRAW* LPNMTTCUSTOMDRAW;
-
-struct SHDRAGIMAGE {
-    SIZE sizeDragImage;
-    POINT ptOffset;
-    HBITMAP hbmpDragImage;
-    COLORREF crColorKey;
-}
-
-const CCHILDREN_SCROLLBAR = 5;
-struct SCROLLBARINFO {
-    DWORD cbSize;
-    RECT rcScrollBar;
-    int dxyLineButton;
-    int xyThumbTop;
-    int xyThumbBottom;
-    int reserved;
-    DWORD rgstate[CCHILDREN_SCROLLBAR+1];
-}
-alias SCROLLBARINFO* PSCROLLBARINFO;
-
-}   // end of extern(Windows)
-
-
-
-
-
-// shlwapi.h
-enum {ASSOCF_INIT_BYEXENAME,
-    ASSOCF_OPEN_BYEXENAME,
-    ASSOCF_INIT_DEFAULTTOSTAR,
-    ASSOCF_INIT_DEFAULTTOFOLDER,
-    ASSOCF_NOUSERSETTINGS,
-    ASSOCF_NOTRUNCATE,
-    ASSOCF_VERIFY,
-    ASSOCF_REMAPRUNDLL,
-    ASSOCF_NOFIXUPS,
-    ASSOCF_IGNOREBASECLASS
-};
-
-alias DWORD ASSOCF;
+/*
+ * This module declared types required by DWT but not in std.c.windows.windows
+ */
+
+module dwt.internal.win32.WINTYPES;
+
+/*
+    adopted form tango
+    Author:     Trevor Parscal
+*/
+
+/+ Aliases, Types, and Constants +/
+const void* NULL = null;
+alias int SCODE;
+alias void VOID;
+alias void* POINTER;
+alias ushort ATOM;
+alias int WINBOOL;
+alias WINBOOL BOOL;
+alias uint CALTYPE;
+alias uint CALID;
+alias ubyte CCHAR;
+alias ubyte* PCHAR;
+alias uint COLORREF;
+alias uint TCOLORREF;
+alias ubyte CHAR;
+alias ubyte BYTE;
+alias short INT16;
+alias ushort UINT16;
+alias short SHORT;
+alias int INT;
+alias int WINT;
+alias int LONG;
+alias ushort WORD;
+alias uint DWORD;
+alias int INT_PTR;
+alias uint UINT_PTR;
+alias int LONG_PTR;
+alias uint ULONG_PTR;
+alias uint PROPID;
+const BOOL FALSE = 0;
+const BOOL TRUE = -1;
+alias ubyte* PANSICHAR;
+alias wchar* PWIDECHAR;
+alias int* PINTEGER;
+alias long LONGLONG;
+alias LONGLONG* PLONGLONG;
+alias ulong DWORDLONG;
+alias DWORDLONG* PDWORDLONG;
+alias float FLOAT;
+alias void* HANDLE;
+alias HANDLE HACCEL;
+alias HANDLE HBITMAP;
+alias HANDLE HBRUSH;
+alias HANDLE HCOLORSPACE;
+alias HANDLE HCONV;
+alias HANDLE HCONVLIST;
+alias HANDLE HCURSOR;
+alias HANDLE HDBC;
+alias HANDLE HDC;
+alias HANDLE HDDEDATA;
+alias HANDLE HDESK;
+alias HANDLE HDROP;
+alias HANDLE HDWP;
+alias HANDLE HENHMETAFILE;
+alias HANDLE HENV;
+alias HANDLE HFILE;
+alias HANDLE HFONT;
+alias HANDLE HGDIOBJ;
+alias HANDLE HGLOBAL;
+alias HANDLE HGLRC;
+alias HANDLE HHOOK;
+alias HANDLE HICON;
+alias HANDLE HIMAGELIST;
+alias HANDLE HINST;
+alias HINST HINSTANCE;
+alias HANDLE HKEY;
+alias HANDLE HKL;
+alias HANDLE HLOCAL;
+alias HANDLE HMENU;
+alias HANDLE HMETAFILE;
+alias HANDLE HMODULE;
+alias HANDLE HPALETTE;
+alias HANDLE HPEN;
+alias HANDLE HRASCONN;
+alias int HRESULT;
+alias HANDLE HRGN;
+alias HANDLE HRSRC;
+alias HANDLE HSTMT;
+alias HANDLE HSZ;
+alias HANDLE HWINSTA;
+alias HANDLE HWND;
+alias ushort LANGID;
+alias DWORD LCID;
+alias DWORD LCTYPE;
+alias int LPARAM;
+alias ushort* LP;
+alias WINBOOL* LPBOOL;
+alias ubyte* LPBYTE;
+alias PCHAR LPCCH;
+alias PCHAR LPCH;
+alias COLORREF* LPCOLORREF;
+alias PCHAR LPCSTR;
+alias TCHAR* LPCTSTR;
+alias wchar* LPCWCH;
+alias wchar* LPCWSTR;
+alias DWORD* LPDWORD;
+alias HANDLE* LPHANDLE;
+alias int* LPINT;
+alias int* LPLONG;
+alias PCHAR LPSTR;
+alias PCHAR LPTCH;
+alias TCHAR* LPTSTR;
+alias int LRESULT;
+alias POINTER LPVOID;
+alias POINTER LPCVOID;
+alias wchar* LPWCH;
+alias wchar* LPWORD;
+alias wchar* LPWSTR;
+alias wchar* NWPSTR;
+alias WINBOOL* PWINBOOL;
+alias ubyte* PBOOLEAN;
+alias ubyte* PBYTE;
+alias PCHAR PCCH;
+alias PCHAR PCH;
+alias PCHAR PCSTR;
+alias wchar* PCWCH;
+alias wchar* PCWSTR;
+alias DWORD* PDWORD;
+alias float* PFLOAT;
+alias HANDLE* PHANDLE;
+alias HKEY* PHKEY;
+alias int* PINT;
+alias int* PLONG;
+alias int* PSHORT;
+alias PCHAR PSTR;
+alias PCHAR PSZ;
+alias ubyte* PTBYTE;
+alias PCHAR PTCH;
+alias PCHAR PTCHAR;
+alias PCHAR PTSTR;
+alias ubyte* PUCHAR;
+alias wchar* PWCH;
+alias wchar* PWCHAR;
+alias ushort* PWORD;
+alias uint* PUINT;
+alias uint* PULONG;
+alias ushort* PUSHORT;
+alias POINTER PVOID;
+// NOTE: This is defined in sqltypes.  Probably shouldn't be here.  Commenting for now.
+//alias int RETCODE;
+alias HANDLE SC_HANDLE;
+alias LPVOID SC_LOCK;
+alias SC_HANDLE* LPSC_HANDLE;
+alias DWORD SERVICE_STATUS_HANDLE;
+alias ubyte TBYTE;
+
+version(Win32SansUnicode){
+    alias ubyte  TCHAR;
+}else{
+    alias wchar TCHAR;
+}
+
+alias ubyte BCHAR;
+alias ubyte UCHAR;
+alias wchar WCHAR;
+alias uint UINT;
+alias uint ULONG;
+alias ushort USHORT;
+alias uint WPARAM;
+alias int ACL_INFORMATION_CLASS;
+
+alias GUID IID;
+alias IID* REFIID;
+
+// Cast a string literal to a ubyte*=PCHAR
+template _PCHAR( char[] a ){
+    const PCHAR _PCHAR = cast(PCHAR)a.ptr;
+}
+
+enum { AclRevisionInformation = 1, AclSizeInformation,  };
+alias ACL_INFORMATION_CLASS _ACL_INFORMATION_CLASS;
+alias int MEDIA_TYPE;
+enum { Unknown, F5_1Pt2_512, F3_1Pt44_512, F3_2Pt88_512, F3_20Pt8_512, F3_720_512, F5_360_512, F5_320_512, F5_320_1024, F5_180_512, F5_160_512, RemovableMedia, FixedMedia,  };
+alias MEDIA_TYPE _MEDIA_TYPE;
+const int RASCS_DONE = (0x2000);
+const int RASCS_PAUSED = (0x1000);
+alias int RASCONNSTATE;
+enum { RASCS_OpenPort = 0, RASCS_PortOpened, RASCS_ConnectDevice, RASCS_DeviceConnected, RASCS_AllDevicesConnected, RASCS_Authenticate, RASCS_AuthNotify, RASCS_AuthRetry, RASCS_AuthCallback, RASCS_AuthChangePassword, RASCS_AuthProject, RASCS_AuthLinkSpeed, RASCS_AuthAck, RASCS_ReAuthenticate, RASCS_Authenticated, RASCS_PrepareForCallback, RASCS_WaitForModemReset, RASCS_WaitForCallback, RASCS_Projected, RASCS_StartAuthentication, RASCS_CallbackComplete, RASCS_LogonNetwork, RASCS_Interactive = RASCS_PAUSED, RASCS_RetryAuthentication, RASCS_CallbackSetByCaller, RASCS_PasswordExpired, RASCS_Connected = RASCS_DONE, RASCS_Disconnected,  };
+alias RASCONNSTATE _RASCONNSTATE;
+alias int RASPROJECTION;
+enum { RASP_Amb = 0x10000, RASP_PppNbf = 0x803F, RASP_PppIpx = 0x802B, RASP_PppIp = 0x8021,  };
+alias RASPROJECTION _RASPROJECTION;
+alias int SECURITY_IMPERSONATION_LEVEL;
+enum { SecurityAnonymous, SecurityIdentification, SecurityImpersonation, SecurityDelegation,  };
+alias SECURITY_IMPERSONATION_LEVEL _SECURITY_IMPERSONATION_LEVEL;
+alias int SID_NAME_USE;
+enum { SidTypeUser = 1, SidTypeGroup, SidTypeDomain, SidTypeAlias, SidTypeWellKnownGroup, SidTypeDeletedAccount, SidTypeInvalid, SidTypeUnknown,  };
+alias SID_NAME_USE* PSID_NAME_USE;
+alias SID_NAME_USE _SID_NAME_USE;
+alias int TOKEN_INFORMATION_CLASS;
+enum { TokenUser = 1, TokenGroups, TokenPrivileges, TokenOwner, TokenPrimaryGroup, TokenDefaultDacl, TokenSource, TokenType, TokenImpersonationLevel, TokenStatistics,  };
+alias TOKEN_INFORMATION_CLASS _TOKEN_INFORMATION_CLASS;
+alias int TOKEN_TYPE;
+enum { TokenPrimary = 1, TokenImpersonation,  };
+alias TOKEN_TYPE TAGTOKEN_TYPE;
+
+extern(Windows){
+alias int (*BFFCALLBACK)(HWND, UINT, LPARAM, LPARAM);
+alias UINT (*LPCCHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
+alias UINT (*LPCFHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
+alias POINTER PTHREAD_START_ROUTINE;
+alias PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
+alias DWORD (*EDITSTREAMCALLBACK)(DWORD, LPBYTE, LONG, LONG);
+alias UINT (*LPFRHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
+alias UINT (*LPOFNHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
+alias UINT (*LPPRINTHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
+alias UINT (*LPSETUPHOOKPROC)(HWND, UINT, WPARAM, LPARAM);
+alias LRESULT (*DLGPROC)(HWND, UINT, WPARAM, LPARAM);
+alias int (*PFNPROPSHEETCALLBACK)(HWND, UINT, LPARAM);
+alias void (*LPSERVICE_MAIN_FUNCTION)(DWORD);
+alias int (*PFNTVCOMPARE)(LPARAM, LPARAM, LPARAM);
+alias LRESULT (*WNDPROC)(HWND, UINT, WPARAM, LPARAM);
+alias POINTER FARPROC;
+alias FARPROC PROC;
+alias WINBOOL (*ENUMRESTYPEPROC)(HANDLE, LPTSTR, LONG);
+alias WINBOOL (*ENUMRESNAMEPROC)(HANDLE, LPCTSTR, LPTSTR, LONG);
+alias WINBOOL (*ENUMRESLANGPROC)(HANDLE, LPCTSTR, LPCTSTR, ushort, LONG);
+alias FARPROC DESKTOPENUMPROC;
+alias WINBOOL (*ENUMWINDOWSPROC)(HWND, LPARAM);
+alias WINBOOL (*ENUMWINDOWSTATIONPROC)(LPTSTR, LPARAM);
+alias void (*SENDASYNCPROC)(HWND, UINT, DWORD);
+alias void (*TIMERPROC)(HWND, UINT, UINT, DWORD);
+alias BOOL(*MONITORENUMPROC)(HMONITOR, HDC, RECT*, LPARAM);
+alias FARPROC GRAYSTRINGPROC;
+alias WINBOOL (*DRAWSTATEPROC)(HDC, LPARAM, WPARAM, int, int);
+alias WINBOOL (*PROPENUMPROCEX)(HWND, LPCTSTR, HANDLE, DWORD);
+alias WINBOOL (*PROPENUMPROC)(HWND, LPCTSTR, HANDLE);
+alias LRESULT (*HOOKPROC)(int, WPARAM, LPARAM);
+alias void (*ENUMOBJECTSPROC)(LPVOID);
+alias void (*LINEDDAPROC)(int, int);
+alias WINBOOL (*TABORTPROC)(HDC, int);
+alias UINT (*LPPAGEPAINTHOOK)(HWND, UINT, WPARAM, LPARAM);
+alias UINT (*LPPAGESETUPHOOK)(HWND, UINT, WPARAM, LPARAM);
+alias int (*ICMENUMPROC)(LPTSTR, LPARAM);
+alias LONG (*EDITWORDBREAKPROCEX)(PCHAR, LONG, ubyte, INT);
+alias int (*PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
+alias WINBOOL (*LOCALE_ENUMPROC)(LPTSTR);
+alias WINBOOL (*CODEPAGE_ENUMPROC)(LPTSTR);
+alias WINBOOL (*DATEFMT_ENUMPROC)(LPTSTR);
+alias WINBOOL (*TIMEFMT_ENUMPROC)(LPTSTR);
+alias WINBOOL (*CALINFO_ENUMPROC)(LPTSTR);
+alias WINBOOL (*PHANDLER_ROUTINE)(DWORD);
+alias WINBOOL (*LPHANDLER_FUNCTION)(DWORD);
+alias void (*PTIMERAPCROUTINE)(LPVOID, DWORD, DWORD);
+alias UINT (*PFNGETPROFILEPATH)(LPCTSTR, LPSTR, UINT);
+alias UINT (*PFNRECONCILEPROFILE)(LPCTSTR, LPCTSTR, DWORD);
+alias WINBOOL (*PFNPROCESSPOLICIES)(HWND, LPCTSTR, LPCTSTR, LPCTSTR, DWORD);
+}
+
+const {
+    LPCTSTR SE_CREATE_TOKEN_NAME = ("SeCreateTokenPrivilege");
+    LPCTSTR SE_ASSIGNPRIMARYTOKEN_NAME = ("SeAssignPrimaryTokenPrivilege");
+    LPCTSTR SE_LOCK_MEMORY_NAME = ("SeLockMemoryPrivilege");
+    LPCTSTR SE_INCREASE_QUOTA_NAME = ("SeIncreaseQuotaPrivilege");
+    LPCTSTR SE_UNSOLICITED_INPUT_NAME = ("SeUnsolicitedInputPrivilege");
+    LPCTSTR SE_MACHINE_ACCOUNT_NAME = ("SeMachineAccountPrivilege");
+    LPCTSTR SE_TCB_NAME = ("SeTcbPrivilege");
+    LPCTSTR SE_SECURITY_NAME = ("SeSecurityPrivilege");
+    LPCTSTR SE_TAKE_OWNERSHIP_NAME = ("SeTakeOwnershipPrivilege");
+    LPCTSTR SE_LOAD_DRIVER_NAME = ("SeLoadDriverPrivilege");
+    LPCTSTR SE_SYSTEM_PROFILE_NAME = ("SeSystemProfilePrivilege");
+    LPCTSTR SE_SYSTEMTIME_NAME = ("SeSystemtimePrivilege");
+    LPCTSTR SE_PROF_SINGLE_PROCESS_NAME = ("SeProfileSingleProcessPrivilege");
+    LPCTSTR SE_INC_BASE_PRIORITY_NAME = ("SeIncreaseBasePriorityPrivilege");
+    LPCTSTR SE_CREATE_PAGEFILE_NAME = ("SeCreatePagefilePrivilege");
+    LPCTSTR SE_CREATE_PERMANENT_NAME = ("SeCreatePermanentPrivilege");
+    LPCTSTR SE_BACKUP_NAME = ("SeBackupPrivilege");
+    LPCTSTR SE_RESTORE_NAME = ("SeRestorePrivilege");
+    LPCTSTR SE_SHUTDOWN_NAME = ("SeShutdownPrivilege");
+    LPCTSTR SE_DEBUG_NAME = ("SeDebugPrivilege");
+    LPCTSTR SE_AUDIT_NAME = ("SeAuditPrivilege");
+    LPCTSTR SE_SYSTEM_ENVIRONMENT_NAME = ("SeSystemEnvironmentPrivilege");
+    LPCTSTR SE_CHANGE_NOTIFY_NAME = ("SeChangeNotifyPrivilege");
+    LPCTSTR SE_REMOTE_SHUTDOWN_NAME = ("SeRemoteShutdownPrivilege");
+
+    LPCSTR  SERVICES_ACTIVE_DATABASEA = _PCHAR!("ServicesActive");
+    LPCWSTR SERVICES_ACTIVE_DATABASEW = ("ServicesActive");
+    LPCSTR  SERVICES_FAILED_DATABASEA = _PCHAR!("ServicesFailed");
+    LPCWSTR SERVICES_FAILED_DATABASEW = ("ServicesFailed");
+    LPCSTR  SC_GROUP_IDENTIFIERA = _PCHAR!("+");
+    LPCWSTR SC_GROUP_IDENTIFIERW = ("+");
+    version(Win32SansUnicode){
+        alias SERVICES_ACTIVE_DATABASEA SERVICES_ACTIVE_DATABASE;
+        alias SERVICES_FAILED_DATABASEA SERVICES_FAILED_DATABASE;
+        alias SC_GROUP_IDENTIFIERA SC_GROUP_IDENTIFIER;
+    }
+    else{
+        alias SERVICES_ACTIVE_DATABASEW SERVICES_ACTIVE_DATABASE;
+        alias SERVICES_FAILED_DATABASEW SERVICES_FAILED_DATABASE;
+        alias SC_GROUP_IDENTIFIERW SC_GROUP_IDENTIFIER;
+    }
+}
+
+extern(Windows){
+alias HDDEDATA (*PFNCALLBACK)(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, DWORD, DWORD);
+}
+alias PFNCALLBACK CALLB;
+alias WINBOOL SECURITY___FILE___TRACKING_MODE;
+alias FARPROC WNDENUMPROC;
+alias FARPROC ENHMFENUMPROC;
+alias DWORD CCSTYLE;
+alias CCSTYLE* PCCSTYLE;
+alias CCSTYLE* LPCCSTYLE;
+alias DWORD CCSTYLEFLAGA;
+alias CCSTYLEFLAGA* PCCSTYLEFLAGA;
+alias CCSTYLEFLAGA* LPCCSTYLEFLAGA;
+
+const HANDLE INVALID_HANDLE_VALUE = cast(HANDLE) -1;
+
+
+enum : DWORD {
+    SM_CXVIRTUALSCREEN = (76),
+    SM_CYVIRTUALSCREEN = (77),
+    MONITORINFOF_PRIMARY = (1),
+    LZERROR_UNKNOWNALG = -((8)),
+    LZERROR_BADVALUE = -((7)),
+    LZERROR_GLOBLOCK = -((6)),
+    LZERROR_GLOBALLOC = -((5)),
+    LZERROR_WRITE = -((4)),
+    LZERROR_READ = -((3)),
+    LZERROR_BADOUTHANDLE = -((2)),
+    LZERROR_BADINHANDLE = -((1)),
+    NO_ERROR = (0),
+    ERROR_SUCCESS = (0),
+    ERROR_INVALID_FUNCTION = (1),
+    ERROR_FILE_NOT_FOUND = (2),
+    ERROR_PATH_NOT_FOUND = (3),
+    ERROR_TOO_MANY_OPEN_FILES = (4),
+    ERROR_ACCESS_DENIED = (5),
+    ERROR_INVALID_HANDLE = (6),
+    ERROR_ARENA_TRASHED = (7),
+    ERROR_NOT_ENOUGH_MEMORY = (8),
+    ERROR_INVALID_BLOCK = (9),
+    ERROR_BAD_ENVIRONMENT = (10),
+    ERROR_BAD_FORMAT = (11),
+    ERROR_INVALID_ACCESS = (12),
+    ERROR_INVALID_DATA = (13),
+    ERROR_OUTOFMEMORY = (14),
+    ERROR_INVALID_DRIVE = (15),
+    ERROR_CURRENT_DIRECTORY = (16),
+    ERROR_NOT_SAME_DEVICE = (17),
+    ERROR_NO_MORE_FILES = (18),
+    ERROR_WRITE_PROTECT = (19),
+    ERROR_BAD_UNIT = (20),
+    ERROR_NOT_READY = (21),
+    ERROR_BAD_COMMAND = (22),
+    ERROR_CRC = (23),
+    ERROR_BAD_LENGTH = (24),
+    ERROR_SEEK = (25),
+    ERROR_NOT_DOS_DISK = (26),
+    ERROR_SECTOR_NOT_FOUND = (27),
+    ERROR_OUT_OF_PAPER = (28),
+    ERROR_WRITE_FAULT = (29),
+    ERROR_READ_FAULT = (30),
+    ERROR_GEN_FAILURE = (31),
+    ERROR_SHARING_VIOLATION = (32),
+    ERROR_LOCK_VIOLATION = (33),
+    ERROR_WRONG_DISK = (34),
+    ERROR_SHARING_BUFFER_EXCEEDED = (36),
+    ERROR_HANDLE_EOF = (38),
+    ERROR_HANDLE_DISK_FULL = (39),
+    ERROR_NOT_SUPPORTED = (50),
+    ERROR_REM_NOT_LIST = (51),
+    ERROR_DUP_NAME = (52),
+    ERROR_BAD_NETPATH = (53),
+    ERROR_NETWORK_BUSY = (54),
+    ERROR_DEV_NOT_EXIST = (55),
+    ERROR_TOO_MANY_CMDS = (56),
+    ERROR_ADAP_HDW_ERR = (57),
+    ERROR_BAD_NET_RESP = (58),
+    ERROR_UNEXP_NET_ERR = (59),
+    ERROR_BAD_REM_ADAP = (60),
+    ERROR_PRINTQ_FULL = (61),
+    ERROR_NO_SPOOL_SPACE = (62),
+    ERROR_PRINT_CANCELLED = (63),
+    ERROR_NETNAME_DELETED = (64),
+    ERROR_NETWORK_ACCESS_DENIED = (65),
+    ERROR_BAD_DEV_TYPE = (66),
+    ERROR_BAD_NET_NAME = (67),
+    ERROR_TOO_MANY_NAMES = (68),
+    ERROR_TOO_MANY_SESS = (69),
+    ERROR_SHARING_PAUSED = (70),
+    ERROR_REQ_NOT_ACCEP = (71),
+    ERROR_REDIR_PAUSED = (72),
+    ERROR_FILE_EXISTS = (80),
+    ERROR_CANNOT_MAKE = (82),
+    ERROR_FAIL_I24 = (83),
+    ERROR_OUT_OF_STRUCTURES = (84),
+    ERROR_ALREADY_ASSIGNED = (85),
+    ERROR_INVALID_PASSWORD = (86),
+    ERROR_INVALID_PARAMETER = (87),
+    ERROR_NET_WRITE_FAULT = (88),
+    ERROR_NO_PROC_SLOTS = (89),
+    ERROR_TOO_MANY_SEMAPHORES = (100),
+    ERROR_EXCL_SEM_ALREADY_OWNED = (101),
+    ERROR_SEM_IS_SET = (102),
+    ERROR_TOO_MANY_SEM_REQUESTS = (103),
+    ERROR_INVALID_AT_INTERRUPT_TIME = (104),
+    ERROR_SEM_OWNER_DIED = (105),
+    ERROR_SEM_USER_LIMIT = (106),
+    ERROR_DISK_CHANGE = (107),
+    ERROR_DRIVE_LOCKED = (108),
+    ERROR_BROKEN_PIPE = (109),
+    ERROR_OPEN_FAILED = (110),
+    ERROR_BUFFER_OVERFLOW = (111),
+    ERROR_DISK_FULL = (112),
+    ERROR_NO_MORE_SEARCH_HANDLES = (113),
+    ERROR_INVALID_TARGET_HANDLE = (114),
+    ERROR_INVALID_CATEGORY = (117),
+    ERROR_INVALID_VERIFY_SWITCH = (118),
+    ERROR_BAD_DRIVER_LEVEL = (119),
+    ERROR_CALL_NOT_IMPLEMENTED = (120),
+    ERROR_SEM_TIMEOUT = (121),
+    ERROR_INSUFFICIENT_BUFFER = (122),
+    ERROR_INVALID_NAME = (123),
+    ERROR_INVALID_LEVEL = (124),
+    ERROR_NO_VOLUME_LABEL = (125),
+    ERROR_MOD_NOT_FOUND = (126),
+    ERROR_PROC_NOT_FOUND = (127),
+    ERROR_WAIT_NO_CHILDREN = (128),
+    ERROR_CHILD_NOT_COMPLETE = (129),
+    ERROR_DIRECT_ACCESS_HANDLE = (130),
+    ERROR_NEGATIVE_SEEK = (131),
+    ERROR_SEEK_ON_DEVICE = (132),
+    ERROR_IS_JOIN_TARGET = (133),
+    ERROR_IS_JOINED = (134),
+    ERROR_IS_SUBSTED = (135),
+    ERROR_NOT_JOINED = (136),
+    ERROR_NOT_SUBSTED = (137),
+    ERROR_JOIN_TO_JOIN = (138),
+    ERROR_SUBST_TO_SUBST = (139),
+    ERROR_JOIN_TO_SUBST = (140),
+    ERROR_SUBST_TO_JOIN = (141),
+    ERROR_BUSY_DRIVE = (142),
+    ERROR_SAME_DRIVE = (143),
+    ERROR_DIR_NOT_ROOT = (144),
+    ERROR_DIR_NOT_EMPTY = (145),
+    ERROR_IS_SUBST_PATH = (146),
+    ERROR_IS_JOIN_PATH = (147),
+    ERROR_PATH_BUSY = (148),
+    ERROR_IS_SUBST_TARGET = (149),
+    ERROR_SYSTEM_TRACE = (150),
+    ERROR_INVALID_EVENT_COUNT = (151),
+    ERROR_TOO_MANY_MUXWAITERS = (152),
+    ERROR_INVALID_LIST_FORMAT = (153),
+    ERROR_LABEL_TOO_LONG = (154),
+    ERROR_TOO_MANY_TCBS = (155),
+    ERROR_SIGNAL_REFUSED = (156),
+    ERROR_DISCARDED = (157),
+    ERROR_NOT_LOCKED = (158),
+    ERROR_BAD_THREADID_ADDR = (159),
+    ERROR_BAD_ARGUMENTS = (160),
+    ERROR_BAD_PATHNAME = (161),
+    ERROR_SIGNAL_PENDING = (162),
+    ERROR_MAX_THRDS_REACHED = (164),
+    ERROR_LOCK_FAILED = (167),
+    ERROR_BUSY = (170),
+    ERROR_CANCEL_VIOLATION = (173),
+    ERROR_ATOMIC_LOCKS_NOT_SUPPORTED = (174),
+    ERROR_INVALID_SEGMENT_NUMBER = (180),
+    ERROR_INVALID_ORDINAL = (182),
+    ERROR_ALREADY_EXISTS = (183),
+    ERROR_INVALID_FLAG_NUMBER = (186),
+    ERROR_SEM_NOT_FOUND = (187),
+    ERROR_INVALID_STARTING_CODESEG = (188),
+    ERROR_INVALID_STACKSEG = (189),
+    ERROR_INVALID_MODULETYPE = (190),
+    ERROR_INVALID_EXE_SIGNATURE = (191),
+    ERROR_EXE_MARKED_INVALID = (192),
+    ERROR_BAD_EXE_FORMAT = (193),
+    ERROR_ITERATED_DATA_EXCEEDS_64k = (194),
+    ERROR_INVALID_MINALLOCSIZE = (195),
+    ERROR_DYNLINK_FROM_INVALID_RING = (196),
+    ERROR_IOPL_NOT_ENABLED = (197),
+    ERROR_INVALID_SEGDPL = (198),
+    ERROR_AUTODATASEG_EXCEEDS_64k = (199),
+    ERROR_RING2SEG_MUST_BE_MOVABLE = (200),
+    ERROR_RELOC_CHAIN_XEEDS_SEGLIM = (201),
+    ERROR_INFLOOP_IN_RELOC_CHAIN = (202),
+    ERROR_ENVVAR_NOT_FOUND = (203),
+    ERROR_NO_SIGNAL_SENT = (205),
+    ERROR_FILENAME_EXCED_RANGE = (206),
+    ERROR_RING2_STACK_IN_USE = (207),
+    ERROR_META_EXPANSION_TOO_LONG = (208),
+    ERROR_INVALID_SIGNAL_NUMBER = (209),
+    ERROR_THREAD_1_INACTIVE = (210),
+    ERROR_LOCKED = (212),
+    ERROR_TOO_MANY_MODULES = (214),
+    ERROR_NESTING_NOT_ALLOWED = (215),
+    ERROR_BAD_PIPE = (230),
+    ERROR_PIPE_BUSY = (231),
+    ERROR_NO_DATA = (232),
+    ERROR_PIPE_NOT_CONNECTED = (233),
+    ERROR_MORE_DATA = (234),
+    ERROR_VC_DISCONNECTED = (240),
+    ERROR_INVALID_EA_NAME = (254),
+    ERROR_EA_LIST_INCONSISTENT = (255),
+    ERROR_NO_MORE_ITEMS = (259),
+    ERROR_CANNOT_COPY = (266),
+    ERROR_DIRECTORY = (267),
+    ERROR_EAS_DIDNT_FIT = (275),
+    ERROR_EA_FILE_CORRUPT = (276),
+    ERROR_EA_TABLE_FULL = (277),
+    ERROR_INVALID_EA_HANDLE = (278),
+    ERROR_EAS_NOT_SUPPORTED = (282),
+    ERROR_NOT_OWNER = (288),
+    ERROR_TOO_MANY_POSTS = (298),
+    ERROR_PARTIAL_COPY = (299),
+    ERROR_MR_MID_NOT_FOUND = (317),
+    ERROR_INVALID_ADDRESS = (487),
+    ERROR_ARITHMETIC_OVERFLOW = (534),
+    ERROR_PIPE_CONNECTED = (535),
+    ERROR_PIPE_LISTENING = (536),
+    ERROR_EA_ACCESS_DENIED = (994),
+    ERROR_OPERATION_ABORTED = (995),
+    ERROR_IO_INCOMPLETE = (996),
+    ERROR_IO_PENDING = (997),
+    ERROR_NOACCESS = (998),
+    ERROR_SWAPERROR = (999),
+    ERROR_STACK_OVERFLOW = (1001),
+    ERROR_INVALID_MESSAGE = (1002),
+    ERROR_CAN_NOT_COMPLETE = (1003),
+    ERROR_INVALID_FLAGS = (1004),
+    ERROR_UNRECOGNIZED_VOLUME = (1005),
+    ERROR_FILE_INVALID = (1006),
+    ERROR_FULLSCREEN_MODE = (1007),
+    ERROR_NO_TOKEN = (1008),
+    ERROR_BADDB = (1009),
+    ERROR_BADKEY = (1010),
+    ERROR_CANTOPEN = (1011),
+    ERROR_CANTREAD = (1012),
+    ERROR_CANTWRITE = (1013),
+    ERROR_REGISTRY_RECOVERED = (1014),
+    ERROR_REGISTRY_CORRUPT = (1015),
+    ERROR_REGISTRY_IO_FAILED = (1016),
+    ERROR_NOT_REGISTRY_FILE = (1017),
+    ERROR_KEY_DELETED = (1018),
+    ERROR_NO_LOG_SPACE = (1019),
+    ERROR_KEY_HAS_CHILDREN = (1020),
+    ERROR_CHILD_MUST_BE_VOLATILE = (1021),
+    ERROR_NOTIFY_ENUM_DIR = (1022),
+    ERROR_DEPENDENT_SERVICES_RUNNING = (1051),
+    ERROR_INVALID_SERVICE_CONTROL = (1052),
+    ERROR_SERVICE_REQUEST_TIMEOUT = (1053),
+    ERROR_SERVICE_NO_THREAD = (1054),
+    ERROR_SERVICE_DATABASE_LOCKED = (1055),
+    ERROR_SERVICE_ALREADY_RUNNING = (1056),
+    ERROR_INVALID_SERVICE_ACCOUNT = (1057),
+    ERROR_SERVICE_DISABLED = (1058),
+    ERROR_CIRCULAR_DEPENDENCY = (1059),
+    ERROR_SERVICE_DOES_NOT_EXIST = (1060),
+    ERROR_SERVICE_CANNOT_ACCEPT_CTRL = (1061),
+    ERROR_SERVICE_NOT_ACTIVE = (1062),
+    ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = (1063),
+    ERROR_EXCEPTION_IN_SERVICE = (1064),
+    ERROR_DATABASE_DOES_NOT_EXIST = (1065),
+    ERROR_SERVICE_SPECIFIC_ERROR = (1066),
+    ERROR_PROCESS_ABORTED = (1067),
+    ERROR_SERVICE_DEPENDENCY_FAIL = (1068),
+    ERROR_SERVICE_LOGON_FAILED = (1069),
+    ERROR_SERVICE_START_HANG = (1070),
+    ERROR_INVALID_SERVICE_LOCK = (1071),
+    ERROR_SERVICE_MARKED_FOR_DELETE = (1072),
+    ERROR_SERVICE_EXISTS = (1073),
+    ERROR_ALREADY_RUNNING_LKG = (1074),
+    ERROR_SERVICE_DEPENDENCY_DELETED = (1075),
+    ERROR_BOOT_ALREADY_ACCEPTED = (1076),
+    ERROR_SERVICE_NEVER_STARTED = (1077),
+    ERROR_DUPLICATE_SERVICE_NAME = (1078),
+    ERROR_END_OF_MEDIA = (1100),
+    ERROR_FILEMARK_DETECTED = (1101),
+    ERROR_BEGINNING_OF_MEDIA = (1102),
+    ERROR_SETMARK_DETECTED = (1103),
+    ERROR_NO_DATA_DETECTED = (1104),
+    ERROR_PARTITION_FAILURE = (1105),
+    ERROR_INVALID_BLOCK_LENGTH = (1106),
+    ERROR_DEVICE_NOT_PARTITIONED = (1107),
+    ERROR_UNABLE_TO_LOCK_MEDIA = (1108),
+    ERROR_UNABLE_TO_UNLOAD_MEDIA = (1109),
+    ERROR_MEDIA_CHANGED = (1110),
+    ERROR_BUS_RESET = (1111),
+    ERROR_NO_MEDIA_IN_DRIVE = (1112),
+    ERROR_NO_UNICODE_TRANSLATION = (1113),
+    ERROR_DLL_INIT_FAILED = (1114),
+    ERROR_SHUTDOWN_IN_PROGRESS = (1115),
+    ERROR_NO_SHUTDOWN_IN_PROGRESS = (1116),
+    ERROR_IO_DEVICE = (1117),
+    ERROR_SERIAL_NO_DEVICE = (1118),
+    ERROR_IRQ_BUSY = (1119),
+    ERROR_MORE_WRITES = (1120),
+    ERROR_COUNTER_TIMEOUT = (1121),
+    ERROR_FLOPPY_ID_MARK_NOT_FOUND = (1122),
+    ERROR_FLOPPY_WRONG_CYLINDER = (1123),
+    ERROR_FLOPPY_UNKNOWN_ERROR = (1124),
+    ERROR_FLOPPY_BAD_REGISTERS = (1125),
+    ERROR_DISK_RECALIBRATE_FAILED = (1126),
+    ERROR_DISK_OPERATION_FAILED = (1127),
+    ERROR_DISK_RESET_FAILED = (1128),
+    ERROR_EOM_OVERFLOW = (1129),
+    ERROR_NOT_ENOUGH_SERVER_MEMORY = (1130),
+    ERROR_POSSIBLE_DEADLOCK = (1131),
+    ERROR_MAPPED_ALIGNMENT = (1132),
+    ERROR_SET_POWER_STATE_VETOED = (1140),
+    ERROR_SET_POWER_STATE_FAILED = (1141),
+    ERROR_OLD_WIN_VERSION = (1150),
+    ERROR_APP_WRONG_OS = (1151),
+    ERROR_SINGLE_INSTANCE_APP = (1152),
+    ERROR_RMODE_APP = (1153),
+    ERROR_INVALID_DLL = (1154),
+    ERROR_NO_ASSOCIATION = (1155),
+    ERROR_DDE_FAIL = (1156),
+    ERROR_DLL_NOT_FOUND = (1157),
+    ERROR_BAD_USERNAME = (2202),
+    ERROR_NOT_CONNECTED = (2250),
+    ERROR_OPEN_FILES = (2401),
+    ERROR_ACTIVE_CONNECTIONS = (2402),
+    ERROR_DEVICE_IN_USE = (2404),
+    ERROR_BAD_DEVICE = (1200),
+    ERROR_CONNECTION_UNAVAIL = (1201),
+    ERROR_DEVICE_ALREADY_REMEMBERED = (1202),
+    ERROR_NO_NET_OR_BAD_PATH = (1203),
+    ERROR_BAD_PROVIDER = (1204),
+    ERROR_CANNOT_OPEN_PROFILE = (1205),
+    ERROR_BAD_PROFILE = (1206),
+    ERROR_NOT_CONTAINER = (1207),
+    ERROR_EXTENDED_ERROR = (1208),
+    ERROR_INVALID_GROUPNAME = (1209),
+    ERROR_INVALID_COMPUTERNAME = (1210),
+    ERROR_INVALID_EVENTNAME = (1211),
+    ERROR_INVALID_DOMAINNAME = (1212),
+    ERROR_INVALID_SERVICENAME = (1213),
+    ERROR_INVALID_NETNAME = (1214),
+    ERROR_INVALID_SHARENAME = (1215),
+    ERROR_INVALID_PASSWORDNAME = (1216),
+    ERROR_INVALID_MESSAGENAME = (1217),
+    ERROR_INVALID_MESSAGEDEST = (1218),
+    ERROR_SESSION_CREDENTIAL_CONFLICT = (1219),
+    ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = (1220),
+    ERROR_DUP_DOMAINNAME = (1221),
+    ERROR_NO_NETWORK = (1222),
+    ERROR_CANCELLED = (1223),
+    ERROR_USER_MAPPED_FILE = (1224),
+    ERROR_CONNECTION_REFUSED = (1225),
+    ERROR_GRACEFUL_DISCONNECT = (1226),
+    ERROR_ADDRESS_ALREADY_ASSOCIATED = (1227),
+    ERROR_ADDRESS_NOT_ASSOCIATED = (1228),
+    ERROR_CONNECTION_INVALID = (1229),
+    ERROR_CONNECTION_ACTIVE = (1230),
+    ERROR_NETWORK_UNREACHABLE = (1231),
+    ERROR_HOST_UNREACHABLE = (1232),
+    ERROR_PROTOCOL_UNREACHABLE = (1233),
+    ERROR_PORT_UNREACHABLE = (1234),
+    ERROR_REQUEST_ABORTED = (1235),
+    ERROR_CONNECTION_ABORTED = (1236),
+    ERROR_RETRY = (1237),
+    ERROR_CONNECTION_COUNT_LIMIT = (1238),
+    ERROR_LOGIN_TIME_RESTRICTION = (1239),
+    ERROR_LOGIN_WKSTA_RESTRICTION = (1240),
+    ERROR_INCORRECT_ADDRESS = (1241),
+    ERROR_ALREADY_REGISTERED = (1242),
+    ERROR_SERVICE_NOT_FOUND = (1243),
+    ERROR_NOT_AUTHENTICATED = (1244),
+    ERROR_NOT_LOGGED_ON = (1245),
+    ERROR_CONTINUE = (1246),
+    ERROR_ALREADY_INITIALIZED = (1247),
+    ERROR_NO_MORE_DEVICES = (1248),
+    ERROR_NOT_ALL_ASSIGNED = (1300),
+    ERROR_SOME_NOT_MAPPED = (1301),
+    ERROR_NO_QUOTAS_FOR_ACCOUNT = (1302),
+    ERROR_LOCAL_USER_SESSION_KEY = (1303),
+    ERROR_NULL_LM_PASSWORD = (1304),
+    ERROR_UNKNOWN_REVISION = (1305),
+    ERROR_REVISION_MISMATCH = (1306),
+    ERROR_INVALID_OWNER = (1307),
+    ERROR_INVALID_PRIMARY_GROUP = (1308),
+    ERROR_NO_IMPERSONATION_TOKEN = (1309),
+    ERROR_CANT_DISABLE_MANDATORY = (1310),
+    ERROR_NO_LOGON_SERVERS = (1311),
+    ERROR_NO_SUCH_LOGON_SESSION = (1312),
+    ERROR_NO_SUCH_PRIVILEGE = (1313),
+    ERROR_PRIVILEGE_NOT_HELD = (1314),
+    ERROR_INVALID_ACCOUNT_NAME = (1315),
+    ERROR_USER_EXISTS = (1316),
+    ERROR_NO_SUCH_USER = (1317),
+    ERROR_GROUP_EXISTS = (1318),
+    ERROR_NO_SUCH_GROUP = (1319),
+    ERROR_MEMBER_IN_GROUP = (1320),
+    ERROR_MEMBER_NOT_IN_GROUP = (1321),
+    ERROR_LAST_ADMIN = (1322),
+    ERROR_WRONG_PASSWORD = (1323),
+    ERROR_ILL_FORMED_PASSWORD = (1324),
+    ERROR_PASSWORD_RESTRICTION = (1325),
+    ERROR_LOGON_FAILURE = (1326),
+    ERROR_ACCOUNT_RESTRICTION = (1327),
+    ERROR_INVALID_LOGON_HOURS = (1328),
+    ERROR_INVALID_WORKSTATION = (1329),
+    ERROR_PASSWORD_EXPIRED = (1330),
+    ERROR_ACCOUNT_DISABLED = (1331),
+    ERROR_NONE_MAPPED = (1332),
+    ERROR_TOO_MANY_LUIDS_REQUESTED = (1333),
+    ERROR_LUIDS_EXHAUSTED = (1334),
+    ERROR_INVALID_SUB_AUTHORITY = (1335),
+    ERROR_INVALID_ACL = (1336),
+    ERROR_INVALID_SID = (1337),
+    ERROR_INVALID_SECURITY_DESCR = (1338),
+    ERROR_BAD_INHERITANCE_ACL = (1340),
+    ERROR_SERVER_DISABLED = (1341),
+    ERROR_SERVER_NOT_DISABLED = (1342),
+    ERROR_INVALID_ID_AUTHORITY = (1343),
+    ERROR_ALLOTTED_SPACE_EXCEEDED = (1344),
+    ERROR_INVALID_GROUP_ATTRIBUTES = (1345),
+    ERROR_BAD_IMPERSONATION_LEVEL = (1346),
+    ERROR_CANT_OPEN_ANONYMOUS = (1347),
+    ERROR_BAD_VALIDATION_CLASS = (1348),
+    ERROR_BAD_TOKEN_TYPE = (1349),
+    ERROR_NO_SECURITY_ON_OBJECT = (1350),
+    ERROR_CANT_ACCESS_DOMAIN_INFO = (1351),
+    ERROR_INVALID_SERVER_STATE = (1352),
+    ERROR_INVALID_DOMAIN_STATE = (1353),
+    ERROR_INVALID_DOMAIN_ROLE = (1354),
+    ERROR_NO_SUCH_DOMAIN = (1355),
+    ERROR_DOMAIN_EXISTS = (1356),
+    ERROR_DOMAIN_LIMIT_EXCEEDED = (1357),
+    ERROR_INTERNAL_DB_CORRUPTION = (1358),
+    ERROR_INTERNAL_ERROR = (1359),
+    ERROR_GENERIC_NOT_MAPPED = (1360),
+    ERROR_BAD_DESCRIPTOR_FORMAT = (1361),
+    ERROR_NOT_LOGON_PROCESS = (1362),
+    ERROR_LOGON_SESSION_EXISTS = (1363),
+    ERROR_NO_SUCH_PACKAGE = (1364),
+    ERROR_BAD_LOGON_SESSION_STATE = (1365),
+    ERROR_LOGON_SESSION_COLLISION = (1366),
+    ERROR_INVALID_LOGON_TYPE = (1367),
+    ERROR_CANNOT_IMPERSONATE = (1368),
+    ERROR_RXACT_INVALID_STATE = (1369),
+    ERROR_RXACT_COMMIT_FAILURE = (1370),
+    ERROR_SPECIAL_ACCOUNT = (1371),
+    ERROR_SPECIAL_GROUP = (1372),
+    ERROR_SPECIAL_USER = (1373),
+    ERROR_MEMBERS_PRIMARY_GROUP = (1374),
+    ERROR_TOKEN_ALREADY_IN_USE = (1375),
+    ERROR_NO_SUCH_ALIAS = (1376),
+    ERROR_MEMBER_NOT_IN_ALIAS = (1377),
+    ERROR_MEMBER_IN_ALIAS = (1378),
+    ERROR_ALIAS_EXISTS = (1379),
+    ERROR_LOGON_NOT_GRANTED = (1380),
+    ERROR_TOO_MANY_SECRETS = (1381),
+    ERROR_SECRET_TOO_LONG = (1382),
+    ERROR_INTERNAL_DB_ERROR = (1383),
+    ERROR_TOO_MANY___FILE___IDS = (1384),
+    ERROR_LOGON_TYPE_NOT_GRANTED = (1385),
+    ERROR_NT_CROSS_ENCRYPTION_REQUIRED = (1386),
+    ERROR_NO_SUCH_MEMBER = (1387),
+    ERROR_INVALID_MEMBER = (1388),
+    ERROR_TOO_MANY_SIDS = (1389),
+    ERROR_LM_CROSS_ENCRYPTION_REQUIRED = (1390),
+    ERROR_NO_INHERITANCE = (1391),
+    ERROR_FILE_CORRUPT = (1392),
+    ERROR_DISK_CORRUPT = (1393),
+    ERROR_NO_USER_SESSION_KEY = (1394),
+    ERROR_LICENSE_QUOTA_EXCEEDED = (1395),
+    ERROR_INVALID_WINDOW_HANDLE = (1400),
+    ERROR_INVALID_MENU_HANDLE = (1401),
+    ERROR_INVALID_CURSOR_HANDLE = (1402),
+    ERROR_INVALID_ACCEL_HANDLE = (1403),
+    ERROR_INVALID_HOOK_HANDLE = (1404),
+    ERROR_INVALID_DWP_HANDLE = (1405),
+    ERROR_TLW_WITH_WSCHILD = (1406),
+    ERROR_CANNOT_FIND_WND_CLASS = (1407),
+    ERROR_WINDOW_OF_OTHER_THREAD = (1408),
+    ERROR_HOTKEY_ALREADY_REGISTERED = (1409),
+    ERROR_CLASS_ALREADY_EXISTS = (1410),
+    ERROR_CLASS_DOES_NOT_EXIST = (1411),
+    ERROR_CLASS_HAS_WINDOWS = (1412),
+    ERROR_INVALID_INDEX = (1413),
+    ERROR_INVALID_ICON_HANDLE = (1414),
+    ERROR_PRIVATE_DIALOG_INDEX = (1415),
+    ERROR_LISTBOX_ID_NOT_FOUND = (1416),
+    ERROR_NO_WILDCARD_CHARACTERS = (1417),
+    ERROR_CLIPBOARD_NOT_OPEN = (1418),
+    ERROR_HOTKEY_NOT_REGISTERED = (1419),
+    ERROR_WINDOW_NOT_DIALOG = (1420),
+    ERROR_CONTROL_ID_NOT_FOUND = (1421),
+    ERROR_INVALID_COMBOBOX_MESSAGE = (1422),
+    ERROR_WINDOW_NOT_COMBOBOX = (1423),
+    ERROR_INVALID_EDIT_HEIGHT = (1424),
+    ERROR_DC_NOT_FOUND = (1425),
+    ERROR_INVALID_HOOK_FILTER = (1426),
+    ERROR_INVALID_FILTER_PROC = (1427),
+    ERROR_HOOK_NEEDS_HMOD = (1428),
+    ERROR_GLOBAL_ONLY_HOOK = (1429),
+    ERROR_JOURNAL_HOOK_SET = (1430),
+    ERROR_HOOK_NOT_INSTALLED = (1431),
+    ERROR_INVALID_LB_MESSAGE = (1432),
+    ERROR_SETCOUNT_ON_BAD_LB = (1433),
+    ERROR_LB_WITHOUT_TABSTOPS = (1434),
+    ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = (1435),
+    ERROR_CHILD_WINDOW_MENU = (1436),
+    ERROR_NO_SYSTEM_MENU = (1437),
+    ERROR_INVALID_MSGBOX_STYLE = (1438),
+    ERROR_INVALID_SPI_VALUE = (1439),
+    ERROR_SCREEN_ALREADY_LOCKED = (1440),
+    ERROR_HWNDS_HAVE_DIFF_PARENT = (1441),
+    ERROR_NOT_CHILD_WINDOW = (1442),
+    ERROR_INVALID_GW_COMMAND = (1443),
+    ERROR_INVALID_THREAD_ID = (1444),
+    ERROR_NON_MDICHILD_WINDOW = (1445),
+    ERROR_POPUP_ALREADY_ACTIVE = (1446),
+    ERROR_NO_SCROLLBARS = (1447),
+    ERROR_INVALID_SCROLLBAR_RANGE = (1448),
+    ERROR_INVALID_SHOWWIN_COMMAND = (1449),
+    ERROR_NO_SYSTEM_RESOURCES = (1450),
+    ERROR_NONPAGED_SYSTEM_RESOURCES = (1451),
+    ERROR_PAGED_SYSTEM_RESOURCES = (1452),
+    ERROR_WORKING_SET_QUOTA = (1453),
+    ERROR_PAGEFILE_QUOTA = (1454),
+    ERROR_COMMITMENT_LIMIT = (1455),
+    ERROR_MENU_ITEM_NOT_FOUND = (1456),
+    ERROR_EVENTLOG_FILE_CORRUPT = (1500),
+    ERROR_EVENTLOG_CANT_START = (1501),
+    ERROR_LOG_FILE_FULL = (1502),
+    ERROR_EVENTLOG_FILE_CHANGED = (1503),
+    RPC_S_INVALID_STRING_BINDING = (1700),
+    RPC_S_WRONG_KIND_OF_BINDING = (1701),
+    RPC_S_INVALID_BINDING = (1702),
+    RPC_S_PROTSEQ_NOT_SUPPORTED = (1703),
+    RPC_S_INVALID_RPC_PROTSEQ = (1704),
+    RPC_S_INVALID_STRING_UUID = (1705),
+    RPC_S_INVALID_ENDPOINT_FORMAT = (1706),
+    RPC_S_INVALID_NET_ADDR = (1707),
+    RPC_S_NO_ENDPOINT_FOUND = (1708),
+    RPC_S_INVALID_TIMEOUT = (1709),
+    RPC_S_OBJECT_NOT_FOUND = (1710),
+    RPC_S_ALREADY_REGISTERED = (1711),
+    RPC_S_TYPE_ALREADY_REGISTERED = (1712),
+    RPC_S_ALREADY_LISTENING = (1713),
+    RPC_S_NO_PROTSEQS_REGISTERED = (1714),
+    RPC_S_NOT_LISTENING = (1715),
+    RPC_S_UNKNOWN_MGR_TYPE = (1716),
+    RPC_S_UNKNOWN_IF = (1717),
+    RPC_S_NO_BINDINGS = (1718),
+    RPC_S_NO_PROTSEQS = (1719),
+    RPC_S_CANT_CREATE_ENDPOINT = (1720),
+    RPC_S_OUT_OF_RESOURCES = (1721),
+    RPC_S_SERVER_UNAVAILABLE = (1722),
+    RPC_S_SERVER_TOO_BUSY = (1723),
+    RPC_S_INVALID_NETWORK_OPTIONS = (1724),
+    RPC_S_NO_CALL_ACTIVE = (1725),
+    RPC_S_CALL_FAILED = (1726),
+    RPC_S_CALL_FAILED_DNE = (1727),
+    RPC_S_PROTOCOL_ERROR = (1728),
+    RPC_S_UNSUPPORTED_TRANS_SYN = (1730),
+    RPC_S_UNSUPPORTED_TYPE = (1732),
+    RPC_S_INVALID_TAG = (1733),
+    RPC_S_INVALID_BOUND = (1734),
+    RPC_S_NO_ENTRY_NAME = (1735),
+    RPC_S_INVALID_NAME_SYNTAX = (1736),
+    RPC_S_UNSUPPORTED_NAME_SYNTAX = (1737),
+    RPC_S_UUID_NO_ADDRESS = (1739),
+    RPC_S_DUPLICATE_ENDPOINT = (1740),
+    RPC_S_UNKNOWN_AUTHN_TYPE = (1741),
+    RPC_S_MAX_CALLS_TOO_SMALL = (1742),
+    RPC_S_STRING_TOO_LONG = (1743),
+    RPC_S_PROTSEQ_NOT_FOUND = (1744),
+    RPC_S_PROCNUM_OUT_OF_RANGE = (1745),
+    RPC_S_BINDING_HAS_NO_AUTH = (1746),
+    RPC_S_UNKNOWN_AUTHN_SERVICE = (1747),
+    RPC_S_UNKNOWN_AUTHN_LEVEL = (1748),
+    RPC_S_INVALID_AUTH_IDENTITY = (1749),
+    RPC_S_UNKNOWN_AUTHZ_SERVICE = (1750),
+    EPT_S_INVALID_ENTRY = (1751),
+    EPT_S_CANT_PERFORM_OP = (1752),
+    EPT_S_NOT_REGISTERED = (1753),
+    RPC_S_NOTHING_TO_EXPORT = (1754),
+    RPC_S_INCOMPLETE_NAME = (1755),
+    RPC_S_INVALID_VERS_OPTION = (1756),
+    RPC_S_NO_MORE_MEMBERS = (1757),
+    RPC_S_NOT_ALL_OBJS_UNEXPORTED = (1758),
+    RPC_S_INTERFACE_NOT_FOUND = (1759),
+    RPC_S_ENTRY_ALREADY_EXISTS = (1760),
+    RPC_S_ENTRY_NOT_FOUND = (1761),
+    RPC_S_NAME_SERVICE_UNAVAILABLE = (1762),
+    RPC_S_INVALID_NAF_ID = (1763),
+    RPC_S_CANNOT_SUPPORT = (1764),
+    RPC_S_NO___FILE___AVAILABLE = (1765),
+    RPC_S_INTERNAL_ERROR = (1766),
+    RPC_S_ZERO_DIVIDE = (1767),
+    RPC_S_ADDRESS_ERROR = (1768),
+    RPC_S_FP_DIV_ZERO = (1769),
+    RPC_S_FP_UNDERFLOW = (1770),
+    RPC_S_FP_OVERFLOW = (1771),
+    RPC_X_NO_MORE_ENTRIES = (1772),
+    RPC_X_SS_CHAR_TRANS_OPEN_FAIL = (1773),
+    RPC_X_SS_CHAR_TRANS_SHORT_FILE = (1774),
+    RPC_X_SS_IN_NULL___FILE__ = (1775),
+    RPC_X_SS___FILE___DAMAGED = (1777),
+    RPC_X_SS_HANDLES_MISMATCH = (1778),
+    RPC_X_SS_CANNOT_GET_CALL_HANDLE = (1779),
+    RPC_X_NULL_REF_POINTER = (1780),
+    RPC_X_ENUM_VALUE_OUT_OF_RANGE = (1781),
+    RPC_X_BYTE_COUNT_TOO_SMALL = (1782),
+    RPC_X_BAD_STUB_DATA = (1783),
+    ERROR_INVALID_USER_BUFFER = (1784),
+    ERROR_UNRECOGNIZED_MEDIA = (1785),
+    ERROR_NO_TRUST_LSA_SECRET = (1786),
+    ERROR_NO_TRUST_SAM_ACCOUNT = (1787),
+    ERROR_TRUSTED_DOMAIN_FAILURE = (1788),
+    ERROR_TRUSTED_RELATIONSHIP_FAILURE = (1789),
+    ERROR_TRUST_FAILURE = (1790),
+    RPC_S_CALL_IN_PROGRESS = (1791),
+    ERROR_NETLOGON_NOT_STARTED = (1792),
+    ERROR_ACCOUNT_EXPIRED = (1793),
+    ERROR_REDIRECTOR_HAS_OPEN_HANDLES = (1794),
+    ERROR_PRINTER_DRIVER_ALREADY_INSTALLED = (1795),
+    ERROR_UNKNOWN_PORT = (1796),
+    ERROR_UNKNOWN_PRINTER_DRIVER = (1797),
+    ERROR_UNKNOWN_PRINTPROCESSOR = (1798),
+    ERROR_INVALID_SEPARATOR_FILE = (1799),
+    ERROR_INVALID_PRIORITY = (1800),
+    ERROR_INVALID_PRINTER_NAME = (1801),
+    ERROR_PRINTER_ALREADY_EXISTS = (1802),
+    ERROR_INVALID_PRINTER_COMMAND = (1803),
+    ERROR_INVALID_DATATYPE = (1804),
+    ERROR_INVALID_ENVIRONMENT = (1805),
+    RPC_S_NO_MORE_BINDINGS = (1806),
+    ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = (1807),
+    ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = (1808),
+    ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = (1809),
+    ERROR_DOMAIN_TRUST_INCONSISTENT = (1810),
+    ERROR_SERVER_HAS_OPEN_HANDLES = (1811),
+    ERROR_RESOURCE_DATA_NOT_FOUND = (1812),
+    ERROR_RESOURCE_TYPE_NOT_FOUND = (1813),
+    ERROR_RESOURCE_NAME_NOT_FOUND = (1814),
+    ERROR_RESOURCE_LANG_NOT_FOUND = (1815),
+    ERROR_NOT_ENOUGH_QUOTA = (1816),
+    RPC_S_NO_INTERFACES = (1817),
+    RPC_S_CALL_CANCELLED = (1818),
+    RPC_S_BINDING_INCOMPLETE = (1819),
+    RPC_S_COMM_FAILURE = (1820),
+    RPC_S_UNSUPPORTED_AUTHN_LEVEL = (1821),
+    RPC_S_NO_PRINC_NAME = (1822),
+    RPC_S_NOT_RPC_ERROR = (1823),
+    RPC_S_UUID_LOCAL_ONLY = (1824),
+    RPC_S_SEC_PKG_ERROR = (1825),
+    RPC_S_NOT_CANCELLED = (1826),
+    RPC_X_INVALID_ES_ACTION = (1827),
+    RPC_X_WRONG_ES_VERSION = (1828),
+    RPC_X_WRONG_STUB_VERSION = (1829),
+    RPC_S_GROUP_MEMBER_NOT_FOUND = (1898),
+    EPT_S_CANT_CREATE = (1899),
+    RPC_S_INVALID_OBJECT = (1900),
+    ERROR_INVALID_TIME = (1901),
+    ERROR_INVALID_FORM_NAME = (1902),
+    ERROR_INVALID_FORM_SIZE = (1903),
+    ERROR_ALREADY_WAITING = (1904),
+    ERROR_PRINTER_DELETED = (1905),
+    ERROR_INVALID_PRINTER_STATE = (1906),
+    ERROR_PASSWORD_MUST_CHANGE = (1907),
+    ERROR_DOMAIN_CONTROLLER_NOT_FOUND = (1908),
+    ERROR_ACCOUNT_LOCKED_OUT = (1909),
+    ERROR_NO_BROWSER_SERVERS_FOUND = (6118),
+    ERROR_INVALID_PIXEL_FORMAT = (2000),
+    ERROR_BAD_DRIVER = (2001),
+    ERROR_INVALID_WINDOW_STYLE = (2002),
+    ERROR_METAFILE_NOT_SUPPORTED = (2003),
+    ERROR_TRANSFORM_NOT_SUPPORTED = (2004),
+    ERROR_CLIPPING_NOT_SUPPORTED = (2005),
+    ERROR_UNKNOWN_PRINT_MONITOR = (3000),
+    ERROR_PRINTER_DRIVER_IN_USE = (3001),
+    ERROR_SPOOL_FILE_NOT_FOUND = (3002),
+    ERROR_SPL_NO_STARTDOC = (3003),
+    ERROR_SPL_NO_ADDJOB = (3004),
+    ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED = (3005),
+    ERROR_PRINT_MONITOR_ALREADY_INSTALLED = (3006),
+    ERROR_WINS_INTERNAL = (4000),
+    ERROR_CAN_NOT_DEL_LOCAL_WINS = (4001),
+    ERROR_STATIC_INIT = (4002),
+    ERROR_INC_BACKUP = (4003),
+    ERROR_FULL_BACKUP = (4004),
+    ERROR_REC_NON_EXISTENT = (4005),
+    ERROR_RPL_NOT_ALLOWED = (4006),
+    MAX_PATH = (260),
+    LF_FACESIZE = (32),
+    LF_FULLFACESIZE = (64),
+    ELF_VENDOR_SIZE = (4),
+    SECURITY_STATIC_TRACKING = (0),
+    SECURITY_DYNAMIC_TRACKING = (1),
+    MAX_DEFAULTCHAR = (2),
+    MAX_LEADBYTES = (12),
+    EXCEPTION_MAXIMUM_PARAMETERS = (15),
+    CCHDEVICENAME = (32),
+    CCHFORMNAME = (32),
+    MENU_TEXT_LEN = (40),
+    MAX_LANA = (254),
+    NCBNAMSZ = (16),
+    NETBIOS_NAME_LEN = (16),
+    OFS_MAXPATHNAME = (128),
+    MAX_TAB_STOPS = (32),
+    ANYSIZE_ARRAY = (1),
+    RAS_MaxCallbackNumber = (128),
+    RAS_MaxDeviceName = (128),
+    RAS_MaxDeviceType = (16),
+    RAS_MaxEntryName = (256),
+    RAS_MaxIpAddress = (15),
+    RAS_MaxIpxAddress = (21),
+    RAS_MaxPhoneNumber = (128),
+    UNLEN = (256),
+    PWLEN = (256),
+    CNLEN = (15),
+    DNLEN = (15),
+    MAXDWORD = (0xFFFFFFFF),
+    MAXWORD = (0xFFFF),
+    MAXBYTE = (0xFF),
+    MINCHAR = (0x80),
+    MAXCHAR = (0x7F),
+    MINSHORT = (0x8000),
+    MAXSHORT = (0x7FFF),
+    MINLONG = (0x80000000),
+    MAXLONG = (0x7FFFFFFF),
+    FILE_BEGIN = (0),
+    FILE_CURRENT = (1),
+    FILE_END = (2),
+    OF_READ = (0),
+    OF_READWRITE = (2),
+    OF_WRITE = (1),
+    OF_SHARE_COMPAT = (0),
+    OF_SHARE_DENY_NONE = (64),
+    OF_SHARE_DENY_READ = (48),
+    OF_SHARE_DENY_WRITE = (32),
+    OF_SHARE_EXCLUSIVE = (16),
+    OF_CANCEL = (2048),
+    OF_CREATE = (4096),
+    OF_DELETE = (512),
+    OF_EXIST = (16384),
+    OF_PARSE = (256),
+    OF_PROMPT = (8192),
+    OF_REOPEN = (32768),
+    OF_VERIFY = (1024),
+    HKL_NEXT = (1),
+    HKL_PREV = (0),
+    KLF_REORDER = (8),
+    KLF_UNLOADPREVIOUS = (4),
+    KLF_ACTIVATE = (1),
+    KLF_NOTELLSHELL = (128),
+    KLF_REPLACELANG = (16),
+    KLF_SUBSTITUTE_OK = (2),
+    MF_BITMAP = (0x4),
+    MF_DISABLED = (0x2),
+    MF_ENABLED = (0),
+    MF_GRAYED = (0x1),
+    MF_HELP = (0x4000),
+    MF_MENUBARBREAK = (0x20),
+    MF_MENUBREAK = (0x40),
+    MF_MOUSESELECT = (0x8000),
+    MF_OWNERDRAW = (0x100),
+    MF_POPUP = (0x10),
+    MF_SEPARATOR = (0x800),
+    MF_STRING = (0),
+    MF_SYSMENU = (0x2000),
+    MF_USECHECKBITMAPS = (0x200),
+    BLACKNESS = (0x00000042),
+    NOTSRCERASE = (0x001100A6),
+    NOTSRCCOPY = (0x00330008),
+    SRCERASE = (0x00440328),
+    DSTINVERT = (0x00550009),
+    PATINVERT = (0x005A0049),
+    SRCINVERT = (0x00660046),
+    SRCAND = (0x008800C6),
+    MERGEPAINT = (0x00BB0226),
+    MERGECOPY = (0x00C000CA),
+    SRCCOPY = (0x00CC0020),
+    SRCPAINT = (0x00EE0086),
+    PATCOPY = (0x00F00021),
+    PATPAINT = (0x00FB0A09),
+    WHITENESS = (0x00FF0062),
+    R2_BLACK = (1),
+    R2_COPYPEN = (13),
+    R2_MASKNOTPEN = (3),
+    R2_MASKPEN = (9),
+    R2_MASKPENNOT = (5),
+    R2_MERGENOTPEN = (12),
+    R2_MERGEPEN = (15),
+    R2_MERGEPENNOT = (14),
+    R2_NOP = (11),
+    R2_NOT = (6),
+    R2_NOTCOPYPEN = (4),
+    R2_NOTMASKPEN = (8),
+    R2_NOTMERGEPEN = (2),
+    R2_NOTXORPEN = (10),
+    R2_WHITE = (16),
+    R2_XORPEN = (7),
+    BSF_FLUSHDISK = (4),
+    BSF_FORCEIFHUNG = (32),
+    BSF_IGNORECURRENTTASK = (2),
+    BSF_NOHANG = (8),
+    BSF_POSTMESSAGE = (16),
+    BSF_QUERY = (1),
+    BSM_ALLCOMPONENTS = (0),
+    BSM_APPLICATIONS = (8),
+    BSM_INSTALLABLEDRIVERS = (4),
+    BSM_NETDRIVER = (2),
+    BSM_VXDS = (1),
+    BROADCAST_QUERY_DENY = (1112363332),
+    NMPWAIT_NOWAIT = (1),
+    NMPWAIT_WAIT_FOREVER = -((1)),
+    NMPWAIT_USE_DEFAULT_WAIT = (0),
+    MDITILE_SKIPDISABLED = (2),
+    MDITILE_HORIZONTAL = (1),
+    MDITILE_VERTICAL = (0),
+    HCBT_ACTIVATE = (5),
+    HCBT_CLICKSKIPPED = (6),
+    HCBT_CREATEWND = (3),
+    HCBT_DESTROYWND = (4),
+    HCBT_KEYSKIPPED = (7),
+    HCBT_MINMAX = (1),
+    HCBT_MOVESIZE = (0),
+    HCBT_QS = (2),
+    HCBT_SETFOCUS = (9),
+    HCBT_SYSCOMMAND = (8),
+    DM_BITSPERPEL = (0x40000),
+    DM_PELSWIDTH = (0x80000),
+    DM_PELSHEIGHT = (0x100000),
+    DM_DISPLAYFLAGS = (0x200000),
+    DM_DISPLAYFREQUENCY = (0x400000),
+    CDS_UPDATEREGISTRY = (1),
+    CDS_TEST = (2),
+    DISP_CHANGE_SUCCESSFUL = (0),
+    DISP_CHANGE_RESTART = (1),
+    DISP_CHANGE_BADFLAGS = -((4)),
+    DISP_CHANGE_FAILED = -((1)),
+    DISP_CHANGE_BADMODE = -((2)),
+    DISP_CHANGE_NOTUPDATED = -((3)),
+    SERVICE_NO_CHANGE = -((1)),
+    SERVICE_WIN32_OWN_PROCESS = (16),
+    SERVICE_WIN32_SHARE_PROCESS = (32),
+    SERVICE_KERNEL_DRIVER = (1),
+    SERVICE_FILE_SYSTEM_DRIVER = (2),
+    SERVICE_INTERACTIVE_PROCESS = (256),
+    SERVICE_BOOT_START = (0),
+    SERVICE_SYSTEM_START = (1),
+    SERVICE_AUTO_START = (2),
+    SERVICE_DEMAND_START = (3),
+    SERVICE_DISABLED = (4),
+    SERVICE_STOPPED = (1),
+    SERVICE_START_PENDING = (2),
+    SERVICE_STOP_PENDING = (3),
+    SERVICE_RUNNING = (4),
+    SERVICE_CONTINUE_PENDING = (5),
+    SERVICE_PAUSE_PENDING = (6),
+    SERVICE_PAUSED = (7),
+    SERVICE_ACCEPT_STOP = (1),
+    SERVICE_ACCEPT_PAUSE_CONTINUE = (2),
+    SERVICE_ACCEPT_SHUTDOWN = (4),
+    BST_CHECKED = (1),
+    BST_INDETERMINATE = (2),
+    BST_UNCHECKED = (0),
+    BST_FOCUS = (8),
+    BST_PUSHED = (4),
+    MF_BYCOMMAND = (0),
+    MF_BYPOSITION = (0x400),
+    MF_CHECKED = (0x8),
+    MF_UNCHECKED = (0),
+    MF_HILITE = (0x80),
+    MF_UNHILITE = (0),
+    CWP_ALL = (0),
+    CWP_SKIPINVISIBLE = (1),
+    CWP_SKIPDISABLED = (2),
+    CWP_SKIPTRANSPARENT = (4),
+    CE_BREAK = (16),
+    CE_DNS = (2048),
+    CE_FRAME = (8),
+    CE_IOE = (1024),
+    CE_MODE = (32768),
+    CE_OOP = (4096),
+    CE_OVERRUN = (2),
+    CE_PTO = (512),
+    CE_RXOVER = (1),
+    CE_RXPARITY = (4),
+    CE_TXFULL = (256),
+    RGN_AND = (1),
+    RGN_COPY = (5),
+    RGN_DIFF = (4),
+    RGN_OR = (2),
+    RGN_XOR = (3),
+    NULLREGION = (1),
+    SIMPLEREGION = (2),
+    COMPLEXREGION = (3),
+    ERROR = (0),
+    CDERR_DIALOGFAILURE = (0xffff),
+    CDERR_FINDRESFAILURE = (6),
+    CDERR_INITIALIZATION = (2),
+    CDERR_LOADRESFAILURE = (7),
+    CDERR_LOADSTRFAILURE = (5),
+    CDERR_LOCKRESFAILURE = (8),
+    CDERR_MEMALLOCFAILURE = (9),
+    CDERR_MEMLOCKFAILURE = (10),
+    CDERR_NOHINSTANCE = (4),
+    CDERR_NOHOOK = (11),
+    CDERR_NOTEMPLATE = (3),
+    CDERR_REGISTERMSGFAIL = (12),
+    CDERR_STRUCTSIZE = (1),
+    PDERR_CREATEICFAILURE = (0x1000)+(10),
+    PDERR_DEFAULTDIFFERENT = (0x1000)+(12),
+    PDERR_DNDMMISMATCH = (0x1000)+(9),
+    PDERR_GETDEVMODEFAIL = (0x1000)+(5),
+    PDERR_INITFAILURE = (0x1000)+(6),
+    PDERR_LOADDRVFAILURE = (0x1000)+(4),
+    PDERR_NODEFAULTPRN = (0x1000)+(8),
+    PDERR_NODEVICES = (0x1000)+(7),
+    PDERR_PARSEFAILURE = (0x1000)+(2),
+    PDERR_PRINTERNOTFOUND = (0x1000)+(11),
+    PDERR_RETDEFFAILURE = (0x1000)+(3),
+    PDERR_SETUPFAILURE = (0x1000)+(1),
+    CFERR_MAXLESSTHANMIN = (0x2000)+(2),
+    CFERR_NOFONTS = (0x2000)+(1),
+    FNERR_BUFFERTOOSMALL = (0x3000)+(3),
+    FNERR_INVALIDFILENAME = (0x3000)+(2),
+    FNERR_SUBCLASSFAILURE = (0x3000)+(1),
+    FRERR_BUFFERLENGTHZERO = (0x4000)+(1),
+    LOCALE_SYSTEM_DEFAULT = (0x800),
+    LOCALE_USER_DEFAULT = (0x400),
+    NORM_IGNORECASE = (1),
+    NORM_IGNOREKANATYPE = (65536),
+    NORM_IGNORENONSPACE = (2),
+    NORM_IGNORESYMBOLS = (4),
+    NORM_IGNOREWIDTH = (131072),
+    SORT_STRINGSORT = (4096),
+    LCMAP_BYTEREV = (2048),
+    LCMAP_FULLWIDTH = (8388608),
+    LCMAP_HALFWIDTH = (4194304),
+    LCMAP_HIRAGANA = (1048576),
+    LCMAP_KATAKANA = (2097152),
+    LCMAP_LOWERCASE = (256),
+    LCMAP_SORTKEY = (1024),
+    LCMAP_UPPERCASE = (512),
+    DBG_CONTINUE = (0x10002),
+    DBG_CONTROL_BREAK = (0x40010008),
+    DBG_CONTROL_C = (0x40010005),
+    DBG_EXCEPTION_NOT_HANDLED = (0x80010001),
+    DBG_TERMINATE_THREAD = (0x40010003),
+    DBG_TERMINATE_PROCESS = (0x40010004),
+    SERVICE_CONTROL_STOP = (1),
+    SERVICE_CONTROL_PAUSE = (2),
+    SERVICE_CONTROL_CONTINUE = (3),
+    SERVICE_CONTROL_INTERROGATE = (4),
+    SERVICE_CONTROL_SHUTDOWN = (5),
+    IMAGE_BITMAP = (0),
+    IMAGE_CURSOR = (2),
+    IMAGE_ENHMETAFILE = (1),
+    IMAGE_ICON = (1),
+    LR_COPYDELETEORG = (8),
+    LR_COPYRETURNORG = (4),
+    LR_MONOCHROME = (1),
+    LR_CREATEDIBSECTION = (8192),
+    LR_DEFAULTSIZE = (64),
+    DF_ALLOWOTHERACCOUNTHOOK = (0x1),
+    DESKTOP_CREATEMENU = (0x4),
+    DESKTOP_CREATEWINDOW = (0x2),
+    DESKTOP_ENUMERATE = (0x40),
+    DESKTOP_HOOKCONTROL = (0x8),
+    DESKTOP_JOURNALPLAYBACK = (0x20),
+    DESKTOP_JOURNALRECORD = (0x10),
+    DESKTOP_READOBJECTS = (0x1),
+    DESKTOP_SWITCHDESKTOP = (0x100),
+    DESKTOP_WRITEOBJECTS = (0x80),
+    WSF_VISIBLE = (0x1),
+    CBM_INIT = (0x4),
+    DIB_PAL_COLORS = (1),
+    DIB_RGB_COLORS = (0),
+    GENERIC_READ = (0x80000000),
+    GENERIC_WRITE = (0x40000000),
+    GENERIC_EXECUTE = (0x20000000),
+    FILE_READ_DATA = (0x0001),
+    FILE_LIST_DIRECTORY = (0x0001),
+    FILE_WRITE_DATA = (0x0002),
+    FILE_ADD_FILE = (0x0002),
+    FILE_APPEND_DATA = (0x0004),
+    FILE_ADD_SUBDIRECTORY = (0x0004),
+    FILE_CREATE_PIPE_INSTANCE = (0x0004),
+    FILE_READ_EA = (0x0008),
+    FILE_READ_PROPERTIES = (FILE_READ_EA),
+    FILE_WRITE_EA = (0x0010),
+    FILE_WRITE_PROPERTIES = (FILE_WRITE_EA),
+    FILE_EXECUTE = (0x0020),
+    FILE_TRAVERSE = (0x0020),
+    FILE_DELETE_CHILD = (0x0040),
+    FILE_READ_ATTRIBUTES = (0x0080),
+    FILE_WRITE_ATTRIBUTES = (0x0100),
+    FILE_SHARE_DELETE = (4),
+    FILE_SHARE_READ = (1),
+    FILE_SHARE_WRITE = (2),
+    CONSOLE_TEXTMODE_BUFFER = (1),
+    CREATE_NEW = (1),
+    CREATE_ALWAYS = (2),
+    OPEN_EXISTING = (3),
+    OPEN_ALWAYS = (4),
+    TRUNCATE_EXISTING = (5),
+    INVALID_FILE_ATTRIBUTE = (-1),
+    FILE_ATTRIBUTE_ARCHIVE = (32),
+    FILE_ATTRIBUTE_COMPRESSED = (2048),
+    FILE_ATTRIBUTE_NORMAL = (128),
+    FILE_ATTRIBUTE_DIRECTORY = (16),
+    FILE_ATTRIBUTE_HIDDEN = (2),
+    FILE_ATTRIBUTE_READONLY = (1),
+    FILE_ATTRIBUTE_SYSTEM = (4),
+    FILE_ATTRIBUTE_TEMPORARY = (256),
+    FILE_FLAG_WRITE_THROUGH = (2147483648),
+    FILE_FLAG_OVERLAPPED = (1073741824),
+    FILE_FLAG_NO_BUFFERING = (536870912),
+    FILE_FLAG_RANDOM_ACCESS = (268435456),
+    FILE_FLAG_SEQUENTIAL_SCAN = (134217728),
+    FILE_FLAG_DELETE_ON_CLOSE = (67108864),
+    FILE_FLAG_BACKUP_SEMANTICS = (33554432),
+    FILE_FLAG_POSIX_SEMANTICS = (16777216),
+    SECURITY_ANONYMOUS = (0),
+    SECURITY_IDENTIFICATION = (65536),
+    SECURITY_IMPERSONATION = (131072),
+    SECURITY_DELEGATION = (196608),
+    SECURITY___FILE___TRACKING = (262144),
+    SECURITY_EFFECTIVE_ONLY = (524288),
+    SECURITY_SQOS_PRESENT = (1048576),
+    SEC_COMMIT = (134217728),
+    SEC_IMAGE = (16777216),
+    SEC_NOCACHE = (268435456),
+    SEC_RESERVE = (67108864),
+    PAGE_READONLY = (2),
+    PAGE_READWRITE = (4),
+    PAGE_WRITECOPY = (8),
+    PAGE_EXECUTE = (16),
+    PAGE_EXECUTE_READ = (32),
+    PAGE_EXECUTE_READWRITE = (64),
+    PAGE_EXECUTE_WRITECOPY = (128),
+    PAGE_GUARD = (256),
+    PAGE_NOACCESS = (1),
+    PAGE_NOCACHE = (512),
+    MEM_COMMIT = (4096),
+    MEM_FREE = (65536),
+    MEM_RESERVE = (8192),
+    MEM_IMAGE = (16777216),
+    MEM_MAPPED = (262144),
+    MEM_PRIVATE = (131072),
+    MEM_DECOMMIT = (16384),
+    MEM_RELEASE = (32768),
+    MEM_TOP_DOWN = (1048576),
+    EXCEPTION_GUARD_PAGE = (0x80000001),
+    SECTION_EXTEND_SIZE = (0x10),
+    SECTION_MAP_READ = (0x4),
+    SECTION_MAP_WRITE = (0x2),
+    SECTION_QUERY = (0x1),
+    SECTION_ALL_ACCESS = (0xf001f),
+    FW_DONTCARE = (0),
+    FW_THIN = (100),
+    FW_EXTRALIGHT = (200),
+    FW_LIGHT = (300),
+    FW_NORMAL = (400),
+    FW_REGULAR = (FW_NORMAL),
+    FW_MEDIUM = (500),
+    FW_SEMIBOLD = (600),
+    FW_BOLD = (700),
+    FW_EXTRABOLD = (800),
+    FW_HEAVY = (900),
+    ANSI_CHARSET = (0),
+    DEFAULT_CHARSET = (1),
+    SYMBOL_CHARSET = (2),
+    SHIFTJIS_CHARSET = (128),
+    HANGEUL_CHARSET = (129),
+    GB2312_CHARSET = (134),
+    CHINESEBIG5_CHARSET = (136),
+    GREEK_CHARSET = (161),
+    TURKISH_CHARSET = (162),
+    HEBREW_CHARSET = (177),
+    ARABIC_CHARSET = (178),
+    BALTIC_CHARSET = (186),
+    RUSSIAN_CHARSET = (204),
+    THAI_CHARSET = (222),
+    EASTEUROPE_CHARSET = (238),
+    OEM_CHARSET = (255),
+    OUT_DEFAULT_PRECIS = (0),
+    OUT_STRING_PRECIS = (1),
+    OUT_CHARACTER_PRECIS = (2),
+    OUT_STROKE_PRECIS = (3),
+    OUT_TT_PRECIS = (4),
+    OUT_DEVICE_PRECIS = (5),
+    OUT_RASTER_PRECIS = (6),
+    OUT_TT_ONLY_PRECIS = (7),
+    OUT_OUTLINE_PRECIS = (8),
+    CLIP_DEFAULT_PRECIS = (0),
+    CLIP_CHARACTER_PRECIS = (1),
+    CLIP_STROKE_PRECIS = (2),
+    CLIP_MASK = (15),
+    CLIP_LH_ANGLES = (16),
+    CLIP_TT_ALWAYS = (32),
+    CLIP_EMBEDDED = (128),
+    DEFAULT_QUALITY = (0),
+    DRAFT_QUALITY = (1),
+    PROOF_QUALITY = (2),
+    DEFAULT_PITCH = (0),
+    FIXED_PITCH = (1),
+    VARIABLE_PITCH = (2),
+    FF_DECORATIVE = (80),
+    FF_DONTCARE = (0),
+    FF_MODERN = (48),
+    FF_ROMAN = (16),
+    FF_SCRIPT = (64),
+    FF_SWISS = (32),
+    HS_BDIAGONAL = (3),
+    HS_CROSS = (4),
+    HS_DIAGCROSS = (5),
+    HS_FDIAGONAL = (2),
+    HS_HORIZONTAL = (0),
+    HS_VERTICAL = (1),
+    LR_DEFAULTCOLOR = (0),
+    LR_LOADREALSIZE = (128),
+    MAILSLOT_WAIT_FOREVER = (0xffffffff),
+    MAILSLOT_NO_MESSAGE = (0xffffffff),
+    CMB_MASKED = (2),
+    PIPE_ACCESS_DUPLEX = (3),
+    PIPE_ACCESS_INBOUND = (1),
+    PIPE_ACCESS_OUTBOUND = (2),
+    WRITE_DAC = (0x40000),
+    WRITE_OWNER = (0x80000),
+    ACCESS_SYSTEM_SECURITY = (0x1000000),
+    PIPE_TYPE_BYTE = (0),
+    PIPE_TYPE_MESSAGE = (4),
+    PIPE_READMODE_BYTE = (0),
+    PIPE_READMODE_MESSAGE = (2),
+    PIPE_WAIT = (0),
+    PIPE_NOWAIT = (1),
+    PS_GEOMETRIC = (65536),
+    PS_COSMETIC = (0),
+    PS_ALTERNATE = (8),
+    PS_SOLID = (0),
+    PS_DASH = (1),
+    PS_DOT = (2),
+    PS_DASHDOT = (3),
+    PS_DASHDOTDOT = (4),
+    PS_NULL = (5),
+    PS_USERSTYLE = (7),
+    PS_INSIDEFRAME = (6),
+    PS_ENDCAP_ROUND = (0),
+    PS_ENDCAP_SQUARE = (256),
+    PS_ENDCAP_FLAT = (512),
+    PS_JOIN_BEVEL = (4096),
+    PS_JOIN_MITER = (8192),
+    PS_JOIN_ROUND = (0),
+    PS_STYLE_MASK = (15),
+    PS_ENDCAP_MASK = (3840),
+    PS_TYPE_MASK = (983040),
+    ALTERNATE = (1),
+    WINDING = (2),
+    CREATE_DEFAULT_ERROR_MODE = (67108864),
+    CREATE_NEW_CONSOLE = (16),
+    CREATE_NEW_PROCESS_GROUP = (512),
+    CREATE_NO_WINDOW = (0x8000000),
+    CREATE_SEPARATE_WOW_VDM = (2048),
+    CREATE_SUSPENDED = (4),
+    CREATE_UNICODE_ENVIRONMENT = (1024),
+    DEBUG_PROCESS = (1),
+    DEBUG_ONLY_THIS_PROCESS = (2),
+    DETACHED_PROCESS = (8),
+    HIGH_PRIORITY_CLASS = (128),
+    IDLE_PRIORITY_CLASS = (64),
+    NORMAL_PRIORITY_CLASS = (32),
+    REALTIME_PRIORITY_CLASS = (256),
+    SERVICE_ALL_ACCESS = (0xf01ff),
+    SERVICE_CHANGE_CONFIG = (2),
+    SERVICE_ENUMERATE_DEPENDENTS = (8),
+    SERVICE_INTERROGATE = (128),
+    SERVICE_PAUSE_CONTINUE = (64),
+    SERVICE_QUERY_CONFIG = (1),
+    SERVICE_QUERY_STATUS = (4),
+    SERVICE_START = (16),
+    SERVICE_STOP = (32),
+    SERVICE_USER_DEFINED_CONTROL = (256),
+    SERVICE_DELETE = (0x10000),
+    SERVICE_READ_CONTROL = (0x20000),
+    SERVICE_GENERIC_EXECUTE = (0x20000000),
+    SERVICE_ERROR_IGNORE = (0),
+    SERVICE_ERROR_NORMAL = (1),
+    SERVICE_ERROR_SEVERE = (2),
+    SERVICE_ERROR_CRITICAL = (3),
+    TAPE_FIXED_PARTITIONS = (0),
+    TAPE_INITIATOR_PARTITIONS = (0x2),
+    TAPE_SELECT_PARTITIONS = (0x1),
+    TAPE_FILEMARKS = (0x1),
+    TAPE_LONG_FILEMARKS = (0x3),
+    TAPE_SETMARKS = (0),
+    TAPE_SHORT_FILEMARKS = (0x2),
+    CW_USEDEFAULT = (0x80000000),
+    WS_BORDER = (0x800000),
+    WS_CAPTION = (0xc00000),
+    WS_CHILD = (0x40000000),
+    WS_CHILDWINDOW = (0x40000000),
+    WS_CLIPCHILDREN = (0x2000000),
+    WS_CLIPSIBLINGS = (0x4000000),
+    WS_DISABLED = (0x8000000),
+    WS_DLGFRAME = (0x400000),
+    WS_GROUP = (0x20000),
+    WS_HSCROLL = (0x100000),
+    WS_ICONIC = (0x20000000),
+    WS_MAXIMIZE = (0x1000000),
+    WS_MAXIMIZEBOX = (0x10000),
+    WS_MINIMIZE = (0x20000000),
+    WS_MINIMIZEBOX = (0x20000),
+    WS_OVERLAPPED = (0),
+    WS_OVERLAPPEDWINDOW = (0xcf0000),
+    WS_POPUP = (0x80000000),
+    WS_POPUPWINDOW = (0x80880000),
+    WS_SIZEBOX = (0x40000),
+    WS_SYSMENU = (0x80000),
+    WS_TABSTOP = (0x10000),
+    WS_THICKFRAME = (0x40000),
+    WS_TILED = (0),
+    WS_TILEDWINDOW = (0xcf0000),
+    WS_VISIBLE = (0x10000000),
+    WS_VSCROLL = (0x200000),
+    MDIS_ALLCHILDSTYLES = (0x1),
+    BS_3STATE = (0x5),
+    BS_AUTO3STATE = (0x6),
+    BS_AUTOCHECKBOX = (0x3),
+    BS_AUTORADIOBUTTON = (0x9),
+    BS_BITMAP = (0x80),
+    BS_BOTTOM = (0x800),
+    BS_CENTER = (0x300),
+    BS_CHECKBOX = (0x2),
+    BS_DEFPUSHBUTTON = (0x1),
+    BS_GROUPBOX = (0x7),
+    BS_ICON = (0x40),
+    BS_LEFT = (0x100),
+    BS_LEFTTEXT = (0x20),
+    BS_MULTILINE = (0x2000),
+    BS_NOTIFY = (0x4000),
+    BS_OWNERDRAW = (0xb),
+    BS_PUSHBUTTON = (0),
+    BS_PUSHLIKE = (0x1000),
+    BS_RADIOBUTTON = (0x4),
+    BS_RIGHT = (0x200),
+    BS_RIGHTBUTTON = (0x20),
+    BS_TEXT = (0),
+    BS_TOP = (0x400),
+    BS_USERBUTTON = (0x8),
+    BS_VCENTER = (0xc00),
+    CBS_AUTOHSCROLL = (0x40),
+    CBS_DISABLENOSCROLL = (0x800),
+    CBS_DROPDOWN = (0x2),
+    CBS_DROPDOWNLIST = (0x3),
+    CBS_HASSTRINGS = (0x200),
+    CBS_LOWERCASE = (0x4000),
+    CBS_NOINTEGRALHEIGHT = (0x400),
+    CBS_OEMCONVERT = (0x80),
+    CBS_OWNERDRAWFIXED = (0x10),
+    CBS_OWNERDRAWVARIABLE = (0x20),
+    CBS_SIMPLE = (0x1),
+    CBS_SORT = (0x100),
+    CBS_UPPERCASE = (0x2000),
+    ES_AUTOHSCROLL = (0x80),
+    ES_AUTOVSCROLL = (0x40),
+    ES_CENTER = (0x1),
+    ES_LEFT = (0),
+    ES_LOWERCASE = (0x10),
+    ES_MULTILINE = (0x4),
+    ES_NOHIDESEL = (0x100),
+    ES_NUMBER = (0x2000),
+    ES_OEMCONVERT = (0x400),
+    ES_PASSWORD = (0x20),
+    ES_READONLY = (0x800),
+    ES_RIGHT = (0x2),
+    ES_UPPERCASE = (0x8),
+    ES_WANTRETURN = (0x1000),
+    LBS_DISABLENOSCROLL = (0x1000),
+    LBS_EXTENDEDSEL = (0x800),
+    LBS_HASSTRINGS = (0x40),
+    LBS_MULTICOLUMN = (0x200),
+    LBS_MULTIPLESEL = (0x8),
+    LBS_NODATA = (0x2000),
+    LBS_NOINTEGRALHEIGHT = (0x100),
+    LBS_NOREDRAW = (0x4),
+    LBS_NOSEL = (0x4000),
+    LBS_NOTIFY = (0x1),
+    LBS_OWNERDRAWFIXED = (0x10),
+    LBS_OWNERDRAWVARIABLE = (0x20),
+    LBS_SORT = (0x2),
+    LBS_STANDARD = (0xa00003),
+    LBS_USETABSTOPS = (0x80),
+    LBS_WANTKEYBOARDINPUT = (0x400),
+    SBS_BOTTOMALIGN = (0x4),
+    SBS_HORZ = (0),
+    SBS_LEFTALIGN = (0x2),
+    SBS_RIGHTALIGN = (0x4),
+    SBS_SIZEBOX = (0x8),
+    SBS_SIZEBOXBOTTOMRIGHTALIGN = (0x4),
+    SBS_SIZEBOXTOPLEFTALIGN = (0x2),
+    SBS_SIZEGRIP = (0x10),
+    SBS_TOPALIGN = (0x2),
+    SBS_VERT = (0x1),
+    SS_BITMAP = (0xe),
+    SS_BLACKFRAME = (0x7),
+    SS_BLACKRECT = (0x4),
+    SS_CENTER = (0x1),
+    SS_CENTERIMAGE = (0x200),
+    SS_ENHMETAFILE = (0xf),
+    SS_ETCHEDFRAME = (0x12),
+    SS_ETCHEDHORZ = (0x10),
+    SS_ETCHEDVERT = (0x11),
+    SS_GRAYFRAME = (0x8),
+    SS_GRAYRECT = (0x5),
+    SS_ICON = (0x3),
+    SS_LEFT = (0),
+    SS_LEFTNOWORDWRAP = (0xc),
+    SS_NOPREFIX = (0x80),
+    SS_NOTIFY = (0x100),
+    SS_OWNERDRAW = (0xd),
+    SS_REALSIZEIMAGE = (0x800),
+    SS_RIGHT = (0x2),
+    SS_RIGHTJUST = (0x400),
+    SS_SIMPLE = (0xb),
+    SS_SUNKEN = (0x1000),
+    SS_USERITEM = (0xa),
+    SS_WHITEFRAME = (0x9),
+    SS_WHITERECT = (0x6),
+    DS_3DLOOK = (0x4),
+    DS_ABSALIGN = (0x1),
+    DS_CENTER = (0x800),
+    DS_CENTERMOUSE = (0x1000),
+    DS___FILE__HELP = (0x2000),
+    DS_CONTROL = (0x400),
+    DS_FIXEDSYS = (0x8),
+    DS_LOCALEDIT = (0x20),
+    DS_MODALFRAME = (0x80),
+    DS_NOFAILCREATE = (0x10),
+    DS_NOIDLEMSG = (0x100),
+    DS_SETFONT = (0x40),
+    DS_SETFOREGROUND = (0x200),
+    DS_SYSMODAL = (0x2),
+    WS_EX_ACCEPTFILES = (0x10),
+    WS_EX_APPWINDOW = (0x40000),
+    WS_EX_CLIENTEDGE = (0x200),
+    WS_EX___FILE__HELP = (0x400),
+    WS_EX_CONTROLPARENT = (0x10000),
+    WS_EX_DLGMODALFRAME = (0x1),
+    WS_EX_LEFT = (0),
+    WS_EX_LEFTSCROLLBAR = (0x4000),
+    WS_EX_LTRREADING = (0),
+    WS_EX_MDICHILD = (0x40),
+    WS_EX_NOPARENTNOTIFY = (0x4),
+    WS_EX_OVERLAPPEDWINDOW = (0x300),
+    WS_EX_PALETTEWINDOW = (0x188),
+    WS_EX_RIGHT = (0x1000),
+    WS_EX_RIGHTSCROLLBAR = (0),
+    WS_EX_RTLREADING = (0x2000),
+    WS_EX_STATICEDGE = (0x20000),
+    WS_EX_TOOLWINDOW = (0x80),
+    WS_EX_TOPMOST = (0x8),
+    WS_EX_TRANSPARENT = (0x20),
+    WS_EX_WINDOWEDGE = (0x100),
+    WINSTA_ACCESSCLIPBOARD = (0x4),
+    WINSTA_ACCESSGLOBALATOMS = (0x20),
+    WINSTA_CREATEDESKTOP = (0x8),
+    WINSTA_ENUMDESKTOPS = (0x1),
+    WINSTA_ENUMERATE = (0x100),
+    WINSTA_EXITWINDOWS = (0x40),
+    WINSTA_READATTRIBUTES = (0x2),
+    WINSTA_READSCREEN = (0x200),
+    WINSTA_WRITEATTRIBUTES = (0x10),
+    WH_CALLWNDPROC = (4),
+    WH_CALLWNDPROCRET = (12),
+    WH_CBT = (5),
+    WH_DEBUG = (9),
+    WH_GETMESSAGE = (3),
+    WH_JOURNALPLAYBACK = (1),
+    WH_JOURNALRECORD = (0),
+    WH_KEYBOARD = (2),
+    WH_MOUSE = (7),
+    WH_MSGFILTER = -((1)),
+    WH_SHELL = (10),
+    WH_SYSMSGFILTER = (6),
+    WH_FOREGROUNDIDLE = (11),
+    DDD_RAW_TARGET_PATH = (1),
+    DDD_REMOVE_DEFINITION = (2),
+    DDD_EXACT_MATCH_ON_REMOVE = (4),
+    DC_BINNAMES = (12),
+    DC_BINS = (6),
+    DC_COPIES = (18),
+    DC_DRIVER = (11),
+    DC_DATATYPE_PRODUCED = (21),
+    DC_DUPLEX = (7),
+    DC_EMF_COMPLIANT = (20),
+    DC_ENUMRESOLUTIONS = (13),
+    DC_EXTRA = (9),
+    DC_FIELDS = (1),
+    DC_FILEDEPENDENCIES = (14),
+    DC_MAXEXTENT = (5),
+    DC_MINEXTENT = (4),
+    DC_ORIENTATION = (17),
+    DC_PAPERNAMES = (16),
+    DC_PAPERS = (2),
+    DC_PAPERSIZE = (3),
+    DC_SIZE = (8),
+    DC_TRUETYPE = (15),
+    DCTT_BITMAP = (0x1),
+    DCTT_DOWNLOAD = (0x2),
+    DCTT_SUBDEV = (0x4),
+    DC_VERSION = (10),
+    DC_BINADJUST = (19),
+    DDL_ARCHIVE = (32),
+    DDL_DIRECTORY = (16),
+    DDL_DRIVES = (16384),
+    DDL_EXCLUSIVE = (32768),
+    DDL_HIDDEN = (2),
+    DDL_READONLY = (1),
+    DDL_READWRITE = (0),
+    DDL_SYSTEM = (4),
+    DDL_POSTMSGS = (8192),
+    DLL_PROCESS_ATTACH = (1),
+    DLL_THREAD_ATTACH = (2),
+    DLL_PROCESS_DETACH = (0),
+    DLL_THREAD_DETACH = (3),
+    DM_IN_BUFFER = (8),
+    DM_MODIFY = (8),
+    DM_IN_PROMPT = (4),
+    DM_PROMPT = (4),
+    DM_OUT_BUFFER = (2),
+    DM_COPY = (2),
+    DM_UPDATE = (1),
+    IDANI_OPEN = (1),
+    IDANI_CLOSE = (2),
+    DC_ACTIVE = (1),
+    DC_SMALLCAP = (2),
+    BDR_RAISEDINNER = (4),
+    BDR_SUNKENINNER = (8),
+    BDR_RAISEDOUTER = (1),
+    BDR_SUNKENOUTER = (1),
+    EDGE_BUMP = (9),
+    EDGE_ETCHED = (6),
+    EDGE_RAISED = (5),
+    EDGE_SUNKEN = (10),
+    BF_ADJUST = (8192),
+    BF_BOTTOM = (8),
+    BF_BOTTOMLEFT = (9),
+    BF_BOTTOMRIGHT = (12),
+    BF_DIAGONAL = (16),
+    BF_DIAGONAL_ENDBOTTOMLEFT = (25),
+    BF_DIAGONAL_ENDBOTTOMRIGHT = (28),
+    BF_DIAGONAL_ENDTOPLEFT = (19),
+    BF_DIAGONAL_ENDTOPRIGHT = (22),
+    BF_FLAT = (16384),
+    BF_LEFT = (1),
+    BF_MIDDLE = (2048),
+    BF_MONO = (32768),
+    BF_RECT = (15),
+    BF_RIGHT = (4),
+    BF_SOFT = (4096),
+    BF_TOP = (2),
+    BF_TOPLEFT = (3),
+    BF_TOPRIGHT = (6),
+    DFC_BUTTON = (4),
+    DFC_CAPTION = (1),
+    DFC_MENU = (2),
+    DFC_SCROLL = (3),
+    DFCS_BUTTON3STATE = (8),
+    DFCS_BUTTONCHECK = (0),
+    DFCS_BUTTONPUSH = (16),
+    DFCS_BUTTONRADIO = (4),
+    DFCS_BUTTONRADIOIMAGE = (1),
+    DFCS_BUTTONRADIOMASK = (2),
+    DFCS_CAPTIONCLOSE = (0),
+    DFCS_CAPTIONHELP = (4),
+    DFCS_CAPTIONMAX = (2),
+    DFCS_CAPTIONMIN = (1),
+    DFCS_CAPTIONRESTORE = (3),
+    DFCS_MENUARROW = (0),
+    DFCS_MENUBULLET = (2),
+    DFCS_MENUCHECK = (1),
+    DFCS_SCROLLCOMBOBOX = (5),
+    DFCS_SCROLLDOWN = (1),
+    DFCS_SCROLLLEFT = (2),
+    DFCS_SCROLLRIGHT = (3),
+    DFCS_SCROLLSIZEGRIP = (8),
+    DFCS_SCROLLUP = (0),
+    DFCS_ADJUSTRECT = (8192),
+    DFCS_CHECKED = (1024),
+    DFCS_FLAT = (16384),
+    DFCS_INACTIVE = (256),
+    DFCS_MONO = (32768),
+    DFCS_PUSHED = (512),
+    DI_COMPAT = (4),
+    DI_DEFAULTSIZE = (8),
+    DI_IMAGE = (2),
+    DI_MASK = (1),
+    DI_NORMAL = (3),
+    DST_BITMAP = (4),
+    DST_COMPLEX = (0),
+    DST_ICON = (3),
+    DST_PREFIXTEXT = (2),
+    DST_TEXT = (1),
+    DSS_NORMAL = (0),
+    DSS_UNION = (16),
+    DSS_DISABLED = (32),
+    DSS_MONO = (128),
+    SBT_NOBORDERS = (256),
+    SBT_OWNERDRAW = (4096),
+    SBT_POPOUT = (512),
+    SBT_RTLREADING = (1024),
+    DT_BOTTOM = (8),
+    DT_CALCRECT = (1024),
+    DT_CENTER = (1),
+    DT_EDITCONTROL = (8192),
+    DT_END_ELLIPSIS = (32768),
+    DT_PATH_ELLIPSIS = (16384),
+    DT_EXPANDTABS = (64),
+    DT_EXTERNALLEADING = (512),
+    DT_LEFT = (0),
+    DT_MODIFYSTRING = (65536),
+    DT_NOCLIP = (256),
+    DT_NOPREFIX = (2048),
+    DT_RIGHT = (2),
+    DT_RTLREADING = (131072),
+    DT_SINGLELINE = (32),
+    DT_TABSTOP = (128),
+    DT_TOP = (0),
+    DT_VCENTER = (4),
+    DT_WORDBREAK = (16),
+    DT_INTERNAL = (4096),
+    DUPLICATE_CLOSE_SOURCE = (1),
+    DUPLICATE_SAME_ACCESS = (2),
+    FILE_MAP_ALL_ACCESS = (0xf001f),
+    FILE_MAP_READ = (4),
+    FILE_MAP_WRITE = (2),
+    FILE_MAP_COPY = (1),
+    FILE_MAP_EXECUTE = (0x20),
+    MUTEX_ALL_ACCESS = (0x1f0001),
+    MUTEX_MODIFY_STATE = (1),
+    SYNCHRONIZE = (0x100000),
+    SEMAPHORE_ALL_ACCESS = (0x1f0003),
+    SEMAPHORE_MODIFY_STATE = (2),
+    EVENT_ALL_ACCESS = (0x1f0003),
+    EVENT_MODIFY_STATE = (2),
+    KEY_ALL_ACCESS = (0xf003f),
+    KEY_CREATE_LINK = (32),
+    KEY_CREATE_SUB_KEY = (4),
+    KEY_ENUMERATE_SUB_KEYS = (8),
+    KEY_EXECUTE = (0x20019),
+    KEY_NOTIFY = (16),
+    KEY_QUERY_VALUE = (1),
+    KEY_READ = (0x20019),
+    KEY_SET_VALUE = (2),
+    KEY_WRITE = (0x20006),
+    PROCESS_ALL_ACCESS = (0x1f0fff),
+    PROCESS_CREATE_PROCESS = (128),
+    PROCESS_CREATE_THREAD = (2),
+    PROCESS_DUP_HANDLE = (64),
+    PROCESS_QUERY_INFORMATION = (1024),
+    PROCESS_SET_INFORMATION = (512),
+    PROCESS_TERMINATE = (1),
+    PROCESS_VM_OPERATION = (8),
+    PROCESS_VM_READ = (16),
+    PROCESS_VM_WRITE = (32),
+    THREAD_ALL_ACCESS = (0x1f03ff),
+    THREAD_DIRECT_IMPERSONATION = (512),
+    THREAD_GET___FILE__ = (8),
+    THREAD_IMPERSONATE = (256),
+    THREAD_QUERY_INFORMATION = (64),
+    THREAD_SET___FILE__ = (16),
+    THREAD_SET_INFORMATION = (32),
+    THREAD_SET_THREAD_TOKEN = (128),
+    THREAD_SUSPEND_RESUME = (2),
+    THREAD_TERMINATE = (1),
+    WB_ISDELIMITER = (2),
+    WB_LEFT = (0),
+    WB_RIGHT = (1),
+    SB_BOTH = (3),
+    SB_CTL = (2),
+    SB_HORZ = (0),
+    SB_VERT = (1),
+    ESB_DISABLE_BOTH = (3),
+    ESB_DISABLE_DOWN = (2),
+    ESB_DISABLE_LEFT = (1),
+    ESB_DISABLE_LTUP = (1),
+    ESB_DISABLE_RIGHT = (2),
+    ESB_DISABLE_RTDN = (2),
+    ESB_DISABLE_UP = (1),
+    ESB_ENABLE_BOTH = (0),
+    SB_LINEUP = (0),
+    SB_LINEDOWN = (1),
+    SB_LINELEFT = (0),
+    SB_LINERIGHT = (1),
+    SB_PAGEUP = (2),
+    SB_PAGEDOWN = (3),
+    SB_PAGELEFT = (2),
+    SB_PAGERIGHT = (3),
+    SB_THUMBPOSITION = (4),
+    SB_THUMBTRACK = (5),
+    SB_ENDSCROLL = (8),
+    SB_LEFT = (6),
+    SB_RIGHT = (7),
+    SB_BOTTOM = (7),
+    SB_TOP = (6),
+    ENUM_ALL_CALENDARS = -((1)),
+    DATE_SHORTDATE = (1),
+    DATE_LONGDATE = (2),
+    SERVICE_ACTIVE = (1),
+    SERVICE_INACTIVE = (2),
+    DEVICE_FONTTYPE = (2),
+    RASTER_FONTTYPE = (1),
+    TRUETYPE_FONTTYPE = (4),
+    OBJ_BRUSH = (2),
+    OBJ_PEN = (1),
+    OBJ_PAL = (5),
+    OBJ_FONT = (6),
+    OBJ_BITMAP = (7),
+    OBJ_EXTPEN = (11),
+    OBJ_REGION = (8),
+    OBJ_DC = (3),
+    OBJ_MEMDC = (10),
+    OBJ_METAFILE = (9),
+    OBJ_METADC = (4),
+    OBJ_ENHMETAFILE = (13),
+    OBJ_ENHMETADC = (12),
+    SERVICE_WIN32 = (48),
+    SERVICE_DRIVER = (11),
+    CP_INSTALLED = (1),
+    CP_SUPPORTED = (2),
+    LCID_INSTALLED = (1),
+    LCID_SUPPORTED = (2),
+    TAPE_ERASE_LONG = (0x1),
+    TAPE_ERASE_SHORT = (0),
+    SP_ERROR = -((1)),
+    SP_OUTOFDISK = -((4)),
+    SP_OUTOFMEMORY = -((5)),
+    SP_USERABORT = -((3)),
+    PHYSICALWIDTH = (110),
+    PHYSICALHEIGHT = (111),
+    PHYSICALOFFSETX = (112),
+    PHYSICALOFFSETY = (113),
+    SCALINGFACTORX = (114),
+    SCALINGFACTORY = (115),
+    QUERYESCSUPPORT = (8),
+    cABORTDOC = (2),
+    cENDDOC = (11),
+    GETPHYSPAGESIZE = (12),
+    GETPRINTINGOFFSET = (13),
+    GETSCALINGFACTOR = (14),
+    NEWFRAME = (1),
+    NEXTBAND = (3),
+    PASSTHROUGH = (19),
+    cSETABORTPROC = (9),
+    cSTARTDOC = (10),
+    CLRDTR = (6),
+    CLRRTS = (4),
+    SETDTR = (5),
+    SETRTS = (3),
+    SETXOFF = (1),
+    SETXON = (2),
+    SETBREAK = (8),
+    CLRBREAK = (9),
+    EWX_FORCE = (4),
+    EWX_LOGOFF = (0),
+    EWX_POWEROFF = (8),
+    EWX_REBOOT = (2),
+    EWX_SHUTDOWN = (1),
+    FLOODFILLBORDER = (0),
+    FLOODFILLSURFACE = (1),
+    ETO_CLIPPED = (4),
+    ETO_GLYPH_INDEX = (16),
+    ETO_OPAQUE = (2),
+    ETO_RTLREADING = (128),
+    FOREGROUND_BLUE = (1),
+    FOREGROUND_GREEN = (2),
+    FOREGROUND_RED = (4),
+    FOREGROUND_INTENSITY = (8),
+    BACKGROUND_BLUE = (16),
+    BACKGROUND_GREEN = (32),
+    BACKGROUND_RED = (64),
+    BACKGROUND_INTENSITY = (128),
+    FILE_NOTIFY_CHANGE_FILE_NAME = (1),
+    FILE_NOTIFY_CHANGE_DIR_NAME = (2),
+    FILE_NOTIFY_CHANGE_ATTRIBUTES = (4),
+    FILE_NOTIFY_CHANGE_SIZE = (8),
+    FILE_NOTIFY_CHANGE_LAST_WRITE = (16),
+    FILE_NOTIFY_CHANGE_SECURITY = (256),
+    MAP_FOLDCZONE = (16),
+    MAP_FOLDDIGITS = (128),
+    MAP_PRECOMPOSED = (32),
+    MAP_COMPOSITE = (64),
+    HC_ACTION = (0),
+    FORMAT_MESSAGE_ALLOCATE_BUFFER = (256),
+    FORMAT_MESSAGE_IGNORE_INSERTS = (512),
+    FORMAT_MESSAGE_FROM_STRING = (1024),
+    FORMAT_MESSAGE_FROM_HMODULE = (2048),
+    FORMAT_MESSAGE_FROM_SYSTEM = (4096),
+    FORMAT_MESSAGE_ARGUMENT_ARRAY = (8192),
+    FORMAT_MESSAGE_MAX_WIDTH_MASK = (255),
+    GDICOMMENT_WINDOWS_METAFILE = -((2147483647)),
+    GDICOMMENT_BEGINGROUP = (2),
+    GDICOMMENT_ENDGROUP = (3),
+    GDICOMMENT_MULTIFORMATS = (1073741828),
+    GDICOMMENT_IDENTIFIER = (1128875079),
+    CTRL_C_EVENT = (0),
+    CTRL_BREAK_EVENT = (1),
+    CTRL_CLOSE_EVENT = (2),
+    CTRL_LOGOFF_EVENT = (5),
+    CTRL_SHUTDOWN_EVENT = (6),
+    AD_COUNTERCLOCKWISE = (1),
+    AD_CLOCKWISE = (2),
+    SCS_32BIT_BINARY = (0),
+    SCS_DOS_BINARY = (1),
+    SCS_OS216_BINARY = (5),
+    SCS_PIF_BINARY = (3),
+    SCS_POSIX_BINARY = (4),
+    SCS_WOW_BINARY = (2),
+    DCB_DISABLE = (8),
+    DCB_ENABLE = (4),
+    DCB_RESET = (1),
+    DCB_SET = (3),
+    DCB_ACCUMULATE = (2),
+    GCP_DBCS = (1),
+    GCP_ERROR = (0x8000),
+    GCP_CLASSIN = (0x80000),
+    GCP_DIACRITIC = (256),
+    GCP_DISPLAYZWG = (0x400000),
+    GCP_GLYPHSHAPE = (16),
+    GCP_JUSTIFY = (0x10000),
+    GCP_JUSTIFYIN = (0x200000),
+    GCP_KASHIDA = (1024),
+    GCP_LIGATE = (32),
+    GCP_MAXEXTENT = (0x100000),
+    GCP_NEUTRALOVERRIDE = (0x2000000),
+    GCP_NUMERICOVERRIDE = (0x1000000),
+    GCP_NUMERICSLATIN = (0x4000000),
+    GCP_NUMERICSLOCAL = (0x8000000),
+    GCP_REORDER = (2),
+    GCP_SYMSWAPOFF = (0x800000),
+    GCP_USEKERNING = (8),
+    FLI_GLYPHS = (0x40000),
+    FLI_MASK = (0x103b),
+    GCW_ATOM = -((32)),
+    GCL_CBCLSEXTRA = -((20)),
+    GCL_CBWNDEXTRA = -((18)),
+    GCL_HBRBACKGROUND = -((10)),
+    GCL_HCURSOR = -((12)),
+    GCL_HICON = -((14)),
+    GCL_HICONSM = -((34)),
+    GCL_HMODULE = -((16)),
+    GCL_MENUNAME = -((8)),
+    GCL_STYLE = -((26)),
+    GCL_WNDPROC = -((24)),
+    CF_BITMAP = (2),
+    CF_DIB = (8),
+    CF_PALETTE = (9),
+    CF_ENHMETAFILE = (14),
+    CF_METAFILEPICT = (3),
+    CF_OEMTEXT = (7),
+    CF_TEXT = (1),
+    CF_UNICODETEXT = (13),
+    CF_DIF = (5),
+    CF_DSPBITMAP = (130),
+    CF_DSPENHMETAFILE = (142),
+    CF_DSPMETAFILEPICT = (131),
+    CF_DSPTEXT = (129),
+    CF_GDIOBJFIRST = (768),
+    CF_GDIOBJLAST = (1023),
+    CF_HDROP = (15),
+    CF_LOCALE = (16),
+    CF_OWNERDISPLAY = (128),
+    CF_PENDATA = (10),
+    CF_PRIVATEFIRST = (512),
+    CF_PRIVATELAST = (767),
+    CF_RIFF = (11),
+    CF_SYLK = (4),
+    CF_WAVE = (12),
+    CF_TIFF = (6),
+    EV_BREAK = (64),
+    EV_CTS = (8),
+    EV_DSR = (16),
+    EV_ERR = (128),
+    EV_EVENT1 = (2048),
+    EV_EVENT2 = (4096),
+    EV_PERR = (512),
+    EV_RING = (256),
+    EV_RLSD = (32),
+    EV_RX80FULL = (1024),
+    EV_RXCHAR = (1),
+    EV_RXFLAG = (2),
+    EV_TXEMPTY = (4),
+    MS_CTS_ON = (0x10),
+    MS_DSR_ON = (0x20),
+    MS_RING_ON = (0x40),
+    MS_RLSD_ON = (0x80),
+    MAX_COMPUTERNAME_LENGTH = (15),
+    ENABLE_LINE_INPUT = (2),
+    ENABLE_ECHO_INPUT = (4),
+    ENABLE_PROCESSED_INPUT = (1),
+    ENABLE_WINDOW_INPUT = (8),
+    ENABLE_MOUSE_INPUT = (16),
+    ENABLE_PROCESSED_OUTPUT = (1),
+    ENABLE_WRAP_AT_EOL_OUTPUT = (2),
+    CP_ACP = (0),
+    CP_MACCP = (2),
+    CP_OEMCP = (1),
+    CP_UTF8 = 65001,
+    DATE_USE_ALT_CALENDAR = (4),
+    DCX_WINDOW = (0x1),
+    DCX_CACHE = (0x2),
+    DCX_PARENTCLIP = (0x20),
+    DCX_CLIPSIBLINGS = (0x10),
+    DCX_CLIPCHILDREN = (0x8),
+    DCX_NORESETATTRS = (0x4),
+    DCX_LOCKWINDOWUPDATE = (0x400),
+    DCX_EXCLUDERGN = (0x40),
+    DCX_INTERSECTRGN = (0x80),
+    DCX_VALIDATE = (0x200000),
+    DRIVERVERSION = (0),
+    TECHNOLOGY = (2),
+    DT_PLOTTER = (0),
+    DT_RASDISPLAY = (1),
+    DT_RASPRINTER = (2),
+    DT_RASCAMERA = (3),
+    DT_CHARSTREAM = (4),
+    DT_METAFILE = (5),
+    DT_DISPFILE = (6),
+    HORZSIZE = (4),
+    VERTSIZE = (6),
+    HORZRES = (8),
+    VERTRES = (10),
+    LOGPIXELSX = (88),
+    LOGPIXELSY = (90),
+    BITSPIXEL = (12),
+    PLANES = (14),
+    NUMBRUSHES = (16),
+    NUMPENS = (18),
+    NUMFONTS = (22),
+    NUMCOLORS = (24),
+    ASPECTX = (40),
+    ASPECTY = (42),
+    ASPECTXY = (44),
+    PDEVICESIZE = (26),
+    CLIPCAPS = (36),
+    SIZEPALETTE = (104),
+    NUMRESERVED = (106),
+    COLORRES = (108),
+    VREFRESH = (116),
+    DESKTOPHORZRES = (118),
+    DESKTOPVERTRES = (117),
+    BLTALIGNMENT = (119),
+    RASTERCAPS = (38),
+    RC_BANDING = (2),
+    RC_BITBLT = (1),
+    RC_BITMAP64 = (8),
+    RC_DI_BITMAP = (128),
+    RC_DIBTODEV = (512),
+    RC_FLOODFILL = (4096),
+    RC_GDI20_OUTPUT = (16),
+    RC_PALETTE = (256),
+    RC_SCALING = (4),
+    RC_STRETCHBLT = (2048),
+    RC_STRETCHDIB = (8192),
+    CURVECAPS = (28),
+    CC_NONE = (0),
+    CC_CIRCLES = (1),
+    CC_PIE = (2),
+    CC_CHORD = (4),
+    CC_ELLIPSES = (8),
+    CC_WIDE = (16),
+    CC_STYLED = (32),
+    CC_WIDESTYLED = (64),
+    CC_INTERIORS = (128),
+    CC_ROUNDRECT = (256),
+    LINECAPS = (30),
+    LC_NONE = (0),
+    LC_POLYLINE = (2),
+    LC_MARKER = (4),
+    LC_POLYMARKER = (8),
+    LC_WIDE = (16),
+    LC_STYLED = (32),
+    LC_WIDESTYLED = (64),
+    LC_INTERIORS = (128),
+    POLYGONALCAPS = (32),
+    PC_NONE = (0),
+    PC_POLYGON = (1),
+    PC_RECTANGLE = (2),
+    PC_WINDPOLYGON = (4),
+    PC_SCANLINE = (8),
+    PC_WIDE = (16),
+    PC_STYLED = (32),
+    PC_WIDESTYLED = (64),
+    PC_INTERIORS = (128),
+    TEXTCAPS = (34),
+    TC_OP_CHARACTER = (1),
+    TC_OP_STROKE = (2),
+    TC_CP_STROKE = (4),
+    TC_CR_90 = (8),
+    TC_CR_ANY = (16),
+    TC_SF_X_YINDEP = (32),
+    TC_SA_DOUBLE = (64),
+    TC_SA_INTEGER = (128),
+    TC_SA_CONTIN = (256),
+    TC_EA_DOUBLE = (512),
+    TC_IA_ABLE = (1024),
+    TC_UA_ABLE = (2048),
+    TC_SO_ABLE = (4096),
+    TC_RA_ABLE = (8192),
+    TC_VA_ABLE = (16384),
+    TC_RESERVED = (32768),
+    TC_SCROLLBLT = (65536),
+    PC_PATHS = (512),
+    DRIVE_REMOVABLE = (2),
+    DRIVE_FIXED = (3),
+    DRIVE_REMOTE = (4),
+    DRIVE_CDROM = (5),
+    DRIVE_RAMDISK = (6),
+    DRIVE_UNKNOWN = (0),
+    DRIVE_NO_ROOT_DIR = (1),
+    EXCEPTION_ACCESS_VIOLATION = (0xc0000005),
+    EXCEPTION_BREAKPOINT = (0x80000003),
+    EXCEPTION_DATATYPE_MISALIGNMENT = (0x80000002),
+    EXCEPTION_SINGLE_STEP = (0x80000004),
+    EXCEPTION_ARRAY_BOUNDS_EXCEEDED = (0xc000008c),
+    EXCEPTION_FLT_DENORMAL_OPERAND = (0xc000008d),
+    EXCEPTION_FLT_DIVIDE_BY_ZERO = (0xc000008e),
+    EXCEPTION_FLT_INEXACT_RESULT = (0xc000008f),
+    EXCEPTION_FLT_INVALID_OPERATION = (0xc0000090),
+    EXCEPTION_FLT_OVERFLOW = (0xc0000091),
+    EXCEPTION_FLT_STACK_CHECK = (0xc0000092),
+    EXCEPTION_FLT_UNDERFLOW = (0xc0000093),
+    EXCEPTION_INT_DIVIDE_BY_ZERO = (0xc0000094),
+    EXCEPTION_INT_OVERFLOW = (0xc0000095),
+    EXCEPTION_INVALID_HANDLE = (0xc0000008),
+    EXCEPTION_PRIV_INSTRUCTION = (0xc0000096),
+    EXCEPTION_NONCONTINUABLE_EXCEPTION = (0xc0000025),
+    EXCEPTION_NONCONTINUABLE = (0x1),
+    EXCEPTION_STACK_OVERFLOW = (0xc00000fd),
+    EXCEPTION_INVALID_DISPOSITION = (0xc0000026),
+    FILE_TYPE_UNKNOWN = (0),
+    FILE_TYPE_DISK = (1),
+    FILE_TYPE_CHAR = (2),
+    FILE_TYPE_PIPE = (3),
+    GGO_BITMAP = (1),
+    GGO_NATIVE = (2),
+    GGO_METRICS = (0),
+    GGO_GRAY2_BITMAP = (4),
+    GGO_GRAY4_BITMAP = (5),
+    GGO_GRAY8_BITMAP = (6),
+    GDI_ERROR = (0xffffffff),
+    GM_COMPATIBLE = (1),
+    GM_ADVANCED = (2),
+    HANDLE_FLAG_INHERIT = (1),
+    HANDLE_FLAG_PROTECT_FROM_CLOSE = (2),
+}
+char* RT_ACCELERATOR = cast(char*) ((9));
+char* RT_BITMAP = cast(char*) ((2));
+char* RT_DIALOG = cast(char*) ((5));
+char* RT_FONT = cast(char*) ((8));
+char* RT_FONTDIR = cast(char*) ((7));
+char* RT_MENU = cast(char*) ((4));
+char* RT_RCDATA = cast(char*) ((10));
+char* RT_STRING = cast(char*) ((6));
+char* RT_MESSAGETABLE = cast(char*) ((11));
+char* RT_CURSOR = cast(char*) ((1));
+char* RT_GROUP_CURSOR = cast(char*) ((12));
+char* RT_ICON = cast(char*) ((3));
+char* RT_GROUP_ICON = cast(char*) ((13));
+char* RT_VERSION = cast(char*) ((16));
+char* IDC_ARROW = cast(char*) ((32512));
+char* IDC_IBEAM = cast(char*) ((32513));
+char* IDC_WAIT = cast(char*) ((32514));
+char* IDC_CROSS = cast(char*) ((32515));
+char* IDC_UPARROW = cast(char*) ((32516));
+char* IDC_SIZENWSE = cast(char*) ((32642));
+char* IDC_SIZENESW = cast(char*) ((32643));
+char* IDC_SIZEWE = cast(char*) ((32644));
+char* IDC_SIZENS = cast(char*) ((32645));
+char* IDC_SIZEALL = cast(char*) ((32646));
+char* IDC_NO = cast(char*) ((32648));
+char* IDC_APPSTARTING = cast(char*) ((32650));
+char* IDC_HELP = cast(char*) ((32651));
+char* IDI_APPLICATION = cast(char*) ((32512));
+char* IDI_HAND = cast(char*) ((32513));
+char* IDI_QUESTION = cast(char*) ((32514));
+char* IDI_EXCLAMATION = cast(char*) ((32515));
+char* IDI_ASTERISK = cast(char*) ((32516));
+char* IDI_WINLOGO = cast(char*) ((32517));
+char* IDC_SIZE = cast(char*) ((32640));
+char* IDC_ICON = cast(char*) ((32641));
+enum : DWORD {
+    MM_ANISOTROPIC = (8),
+    MM_HIENGLISH = (5),
+    MM_HIMETRIC = (3),
+    MM_ISOTROPIC = (7),
+    MM_LOENGLISH = (4),
+    MM_LOMETRIC = (2),
+    MM_TEXT = (1),
+    MM_TWIPS = (6),
+    GMDI_GOINTOPOPUPS = (0x2),
+    GMDI_USEDISABLED = (0x1),
+    PM_NOREMOVE = (0),
+    PM_REMOVE = (1),
+    PM_NOYIELD = (2),
+    PIPE_CLIENT_END = (0),
+    PIPE_SERVER_END = (1),
+    GW_HWNDNEXT = (2),
+    GW_HWNDPREV = (3),
+    GW_CHILD = (5),
+    GW_HWNDFIRST = (0),
+    GW_HWNDLAST = (1),
+    GW_OWNER = (4),
+    PT_MOVETO = (6),
+    PT_LINETO = (2),
+    PT_BEZIERTO = (4),
+    PT_CLOSEFIGURE = (1),
+    SHUTDOWN_NORETRY = (1),
+    QS_ALLEVENTS = (191),
+    QS_ALLINPUT = (255),
+    QS_HOTKEY = (128),
+    QS_INPUT = (7),
+    QS_KEY = (1),
+    QS_MOUSE = (6),
+    QS_MOUSEBUTTON = (4),
+    QS_MOUSEMOVE = (2),
+    QS_PAINT = (32),
+    QS_POSTMESSAGE = (8),
+    QS_SENDMESSAGE = (64),
+    QS_TIMER = (16),
+    SIF_ALL = (23),
+    SIF_PAGE = (2),
+    SIF_POS = (4),
+    SIF_RANGE = (1),
+    SIF_DISABLENOSCROLL = (8),
+    STD_INPUT_HANDLE = -(10),
+    STD_OUTPUT_HANDLE = -(11),
+    STD_ERROR_HANDLE = -(12),
+    BLACK_BRUSH = (4),
+    DKGRAY_BRUSH = (3),
+    GRAY_BRUSH = (2),
+    HOLLOW_BRUSH = (5),
+    LTGRAY_BRUSH = (1),
+    NULL_BRUSH = (5),
+    WHITE_BRUSH = (0),
+    BLACK_PEN = (7),
+    NULL_PEN = (8),
+    WHITE_PEN = (6),
+    ANSI_FIXED_FONT = (11),
+    ANSI_VAR_FONT = (12),
+    DEVICE_DEFAULT_FONT = (14),
+    DEFAULT_GUI_FONT = (17),
+    OEM_FIXED_FONT = (10),
+    SYSTEM_FONT = (13),
+    SYSTEM_FIXED_FONT = (16),
+    DEFAULT_PALETTE = (15),
+    CT_CTYPE1 = (1),
+    CT_CTYPE2 = (2),
+    CT_CTYPE3 = (4),
+    C1_UPPER = (1),
+    C1_LOWER = (2),
+    C1_DIGIT = (4),
+    C1_SPACE = (8),
+    C1_PUNCT = (16),
+    C1_CNTRL = (32),
+    C1_BLANK = (64),
+    C1_XDIGIT = (128),
+    C1_ALPHA = (256),
+    C2_LEFTTORIGHT = (1),
+    C2_RIGHTTOLEFT = (2),
+    C2_EUROPENUMBER = (3),
+    C2_EUROPESEPARATOR = (4),
+    C2_EUROPETERMINATOR = (5),
+    C2_ARABICNUMBER = (6),
+    C2_COMMONSEPARATOR = (7),
+    C2_BLOCKSEPARATOR = (8),
+    C2_SEGMENTSEPARATOR = (9),
+    C2_WHITESPACE = (10),
+    C2_OTHERNEUTRAL = (11),
+    C2_NOTAPPLICABLE = (0),
+    C3_NONSPACING = (1),
+    C3_DIACRITIC = (2),
+    C3_VOWELMARK = (4),
+    C3_SYMBOL = (8),
+    C3_KATAKANA = (16),
+    C3_HIRAGANA = (32),
+    C3_HALFWIDTH = (64),
+    C3_FULLWIDTH = (128),
+    C3_IDEOGRAPH = (256),
+    C3_KASHIDA = (512),
+    C3_ALPHA = (32768),
+    C3_NOTAPPLICABLE = (0),
+    COLOR_3DDKSHADOW = (21),
+    COLOR_3DFACE = (15),
+    COLOR_3DHILIGHT = (20),
+    COLOR_3DLIGHT = (22),
+    COLOR_BTNHILIGHT = (20),
+    COLOR_3DSHADOW = (16),
+    COLOR_ACTIVEBORDER = (10),
+    COLOR_ACTIVECAPTION = (2),
+    COLOR_APPWORKSPACE = (12),
+    COLOR_BACKGROUND = (1),
+    COLOR_DESKTOP = (1),
+    COLOR_BTNFACE = (15),
+    COLOR_BTNHIGHLIGHT = (20),
+    COLOR_BTNSHADOW = (16),
+    COLOR_BTNTEXT = (18),
+    COLOR_CAPTIONTEXT = (9),
+    COLOR_GRAYTEXT = (17),
+    COLOR_HIGHLIGHT = (13),
+    COLOR_HIGHLIGHTTEXT = (14),
+    COLOR_INACTIVEBORDER = (11),
+    COLOR_INACTIVECAPTION = (3),
+    COLOR_INACTIVECAPTIONTEXT = (19),
+    COLOR_INFOBK = (24),
+    COLOR_INFOTEXT = (23),
+    COLOR_MENU = (4),
+    COLOR_MENUTEXT = (7),
+    COLOR_SCROLLBAR = (0),
+    COLOR_WINDOW = (5),
+    COLOR_WINDOWFRAME = (6),
+    COLOR_WINDOWTEXT = (8),
+    SM_CYMIN = (29),
+    SM_CXMIN = (28),
+    SM_ARRANGE = (56),
+    SM_CLEANBOOT = (67),
+    SM_CMETRICS = (76),
+    SM_CMOUSEBUTTONS = (43),
+    SM_CXBORDER = (5),
+    SM_CYBORDER = (6),
+    SM_CXCURSOR = (13),
+    SM_CYCURSOR = (14),
+    SM_CXDLGFRAME = (7),
+    SM_CYDLGFRAME = (8),
+    SM_CXDOUBLECLK = (36),
+    SM_CYDOUBLECLK = (37),
+    SM_CXDRAG = (68),
+    SM_CYDRAG = (69),
+    SM_CXEDGE = (45),
+    SM_CYEDGE = (46),
+    SM_CXFIXEDFRAME = (7),
+    SM_CYFIXEDFRAME = (8),
+    SM_CXFRAME = (32),
+    SM_CYFRAME = (33),
+    SM_CXFULLSCREEN = (16),
+    SM_CYFULLSCREEN = (17),
+    SM_CXHSCROLL = (21),
+    SM_CYHSCROLL = (3),
+    SM_CXHTHUMB = (10),
+    SM_CXICON = (11),
+    SM_CYICON = (12),
+    SM_CXICONSPACING = (38),
+    SM_CYICONSPACING = (39),
+    SM_CXMAXIMIZED = (61),
+    SM_CYMAXIMIZED = (62),
+    SM_CXMAXTRACK = (59),
+    SM_CYMAXTRACK = (60),
+    SM_CXMENUCHECK = (71),
+    SM_CYMENUCHECK = (72),
+    SM_CXMENUSIZE = (54),
+    SM_CYMENUSIZE = (55),
+    SM_CXMINIMIZED = (57),
+    SM_CYMINIMIZED = (58),
+    SM_CXMINSPACING = (47),
+    SM_CYMINSPACING = (48),
+    SM_CXMINTRACK = (34),
+    SM_CYMINTRACK = (35),
+    SM_CXSCREEN = (0),
+    SM_CYSCREEN = (1),
+    SM_CXSIZE = (30),
+    SM_CYSIZE = (31),
+    SM_CXSIZEFRAME = (32),
+    SM_CYSIZEFRAME = (33),
+    SM_CXSMICON = (49),
+    SM_CYSMICON = (50),
+    SM_CXSMSIZE = (52),
+    SM_CYSMSIZE = (53),
+    SM_CXVSCROLL = (2),
+    SM_CYVSCROLL = (20),
+    SM_CYVTHUMB = (9),
+    SM_CYCAPTION = (4),
+    SM_CYKANJIWINDOW = (18),
+    SM_CYMENU = (15),
+    SM_CYSMCAPTION = (51),
+    SM_DBCSENABLED = (42),
+    SM_DEBUG = (22),
+    SM_MENUDROPALIGNMENT = (40),
+    SM_MIDEASTENABLED = (74),
+    SM_MOUSEPRESENT = (19),
+    SM_MOUSEWHEELPRESENT = (75),
+    SM_NETWORK = (63),
+    SM_PENWINDOWS = (41),
+    SM_SECURE = (44),
+    SM_SHOWSOUNDS = (70),
+    SM_SLOWMACHINE = (73),
+    SM_SWAPBUTTON = (23),
+    ARW_BOTTOMLEFT = (0),
+    ARW_BOTTOMRIGHT = (0x1),
+    ARW_HIDE = (0x8),
+    ARW_TOPLEFT = (0x2),
+    ARW_TOPRIGHT = (0x3),
+    ARW_DOWN = (0x4),
+    ARW_LEFT = (0),
+    ARW_RIGHT = (0),
+    ARW_UP = (0x4),
+    SYSPAL_NOSTATIC = (2),
+    SYSPAL_STATIC = (1),
+    SYSPAL_ERROR = (0),
+    GET_TAPE_MEDIA_INFORMATION = (0),
+    GET_TAPE_DRIVE_INFORMATION = (1),
+    SET_TAPE_MEDIA_INFORMATION = (0),
+    SET_TAPE_DRIVE_INFORMATION = (1),
+    TAPE_ABSOLUTE_POSITION = (0),
+    TAPE_LOGICAL_POSITION = (0x1),
+    TA_BASELINE = (24),
+    TA_BOTTOM = (8),
+    TA_TOP = (0),
+    TA_CENTER = (6),
+    TA_LEFT = (0),
+    TA_RIGHT = (2),
+    TA_RTLREADING = (256),
+    TA_NOUPDATECP = (0),
+    TA_UPDATECP = (1),
+    VTA_BASELINE = (24),
+    VTA_CENTER = (6),
+    THREAD_PRIORITY_ABOVE_NORMAL = (1),
+    THREAD_PRIORITY_BELOW_NORMAL = -((1)),
+    THREAD_PRIORITY_HIGHEST = (2),
+    THREAD_PRIORITY_IDLE = -((15)),
+    THREAD_PRIORITY_LOWEST = -((2)),
+    THREAD_PRIORITY_NORMAL = (0),
+    THREAD_PRIORITY_TIME_CRITICAL = (15),
+    THREAD_PRIORITY_ERROR_RETURN = (2147483647),
+    TLS_MINIMUM_AVAILABLE = (64),
+    TIME_NOMINUTESORSECONDS = (1),
+    TIME_NOSECONDS = (2),
+    TIME_NOTIMEMARKER = (4),
+    TIME_FORCE24HOURFORMAT = (8),
+    TIME_ZONE_ID_INVALID = -(1),
+    TIME_ZONE_ID_UNKNOWN = (0),
+    TIME_ZONE_ID_STANDARD = (1),
+    TIME_ZONE_ID_DAYLIGHT = (2),
+    UOI_FLAGS = (1),
+    UOI_NAME = (2),
+    UOI_TYPE = (3),
+    FS_CASE_IS_PRESERVED = (2),
+    FS_CASE_SENSITIVE = (1),
+    FS_UNICODE_STORED_ON_DISK = (4),
+    FS_PERSISTENT_ACLS = (8),
+    FS_FILE_COMPRESSION = (16),
+    FS_VOL_IS_COMPRESSED = (32768),
+    GWL_EXSTYLE = -((20)),
+    GWL_STYLE = -((16)),
+    GWL_WNDPROC = -((4)),
+    GWL_HINSTANCE = -((6)),
+    GWL_HWNDPARENT = -((8)),
+    GWL_ID = -((12)),
+    GWL_USERDATA = -((21)),
+    DWL_DLGPROC = (4),
+    DWL_MSGRESULT = (0),
+    DWL_USER = (8),
+    GMEM_FIXED = (0),
+    GMEM_MOVEABLE = (2),
+    GPTR = (64),
+    GHND = (66),
+    GMEM_DDESHARE = (8192),
+    GMEM_DISCARDABLE = (256),
+    GMEM_LOWER = (4096),
+    GMEM_NOCOMPACT = (16),
+    GMEM_NODISCARD = (32),
+    GMEM_NOT_BANKED = (4096),
+    GMEM_NOTIFY = (16384),
+    GMEM_SHARE = (8192),
+    GMEM_ZEROINIT = (64),
+    GMEM_DISCARDED = (16384),
+    GMEM_INVALID_HANDLE = (32768),
+    GMEM_LOCKCOUNT = (255),
+    HEAP_GENERATE_EXCEPTIONS = (4),
+    HEAP_NO_SERIALIZE = (1),
+    HEAP_ZERO_MEMORY = (8),
+    STATUS_NO_MEMORY = (0xc0000017),
+    STATUS_ACCESS_VIOLATION = (0xc0000005),
+    HEAP_REALLOC_IN_PLACE_ONLY = (16),
+    ILC_COLOR = (0),
+    ILC_COLOR4 = (4),
+    ILC_COLOR8 = (8),
+    ILC_COLOR16 = (16),
+    ILC_COLOR24 = (24),
+    ILC_COLOR32 = (32),
+    ILC_COLORDDB = (254),
+    ILC_MASK = (1),
+    ILC_PALETTE = (2048),
+    ILD_BLEND25 = (2),
+    ILD_BLEND50 = (4),
+    ILD_SELECTED = (4),
+    ILD_BLEND = (4),
+    ILD_FOCUS = (2),
+    ILD_MASK = (16),
+    ILD_NORMAL = (0),
+    ILD_TRANSPARENT = (1),
+    CLR_NONE = (0xffffffff),
+    CLR_DEFAULT = (0xff000000),
+    CLR_INVALID = (0xFFFFFFFF),
+    LR_LOADFROMFILE = (16),
+    LR_LOADMAP3DCOLORS = (4096),
+    LR_LOADTRANSPARENT = (32),
+    IME_CONFIG_GENERAL = (1),
+    IME_CONFIG_REGISTERWORD = (2),
+    IME_CONFIG_SELECTDICTIONARY = (3),
+    GCL_CONVERSION = (1),
+    GCL_REVERSECONVERSION = (2),
+    GCL_REVERSE_LENGTH = (3),
+    GGL_LEVEL = (1),
+    GGL_INDEX = (2),
+    GGL_STRING = (3),
+    GGL_PRIVATE = (4),
+    GL_LEVEL_ERROR = (2),
+    GL_LEVEL_FATAL = (1),
+    GL_LEVEL_INFORMATION = (4),
+    GL_LEVEL_NOGUIDELINE = (0),
+    GL_LEVEL_WARNING = (3),
+    GL_ID_CANNOTSAVE = (17),
+    GL_ID_NOCONVERT = (32),
+    GL_ID_NODICTIONARY = (16),
+    GL_ID_NOMODULE = (1),
+    GL_ID_READINGCONFLICT = (35),
+    GL_ID_TOOMANYSTROKE = (34),
+    GL_ID_TYPINGERROR = (33),
+    GL_ID_UNKNOWN = (0),
+    GL_ID_INPUTREADING = (36),
+    GL_ID_INPUTRADICAL = (37),
+    GL_ID_INPUTCODE = (38),
+    GL_ID_CHOOSECANDIDATE = (40),
+    GL_ID_REVERSECONVERSION = (41),
+    IGP_PROPERTY = (4),
+    IGP_CONVERSION = (8),
+    IGP_SENTENCE = (12),
+    IGP_UI = (16),
+    IGP_SETCOMPSTR = (20),
+    IGP_SELECT = (24),
+    IME_PROP_AT_CARET = (65536),
+    IME_PROP_SPECIAL_UI = (131072),
+    IME_PROP_CANDLIST_START_FROM_1 = (262144),
+    IME_PROP_UNICODE = (524288),
+    UI_CAP_2700 = (1),
+    UI_CAP_ROT90 = (2),
+    UI_CAP_ROTANY = (4),
+    SCS_CAP_COMPSTR = (1),
+    SCS_CAP_MAKEREAD = (2),
+    SELECT_CAP_CONVERSION = (1),
+    SELECT_CAP_SENTENCE = (2),
+    NI_CHANGECANDIDATELIST = (19),
+    NI_CLOSECANDIDATE = (17),
+    NI_COMPOSITIONSTR = (21),
+    NI_OPENCANDIDATE = (16),
+    NI_SELECTCANDIDATESTR = (18),
+    NI_SETCANDIDATE_PAGESIZE = (23),
+    NI_SETCANDIDATE_PAGESTART = (22),
+    CPS_CANCEL = (4),
+    CPS_COMPLETE = (1),
+    CPS_CONVERT = (2),
+    CPS_REVERT = (3),
+    SCS_SETSTR = (9),
+    SCS_CHANGEATTR = (18),
+    SCS_CHANGECLAUSE = (36),
+    IME_REGWORD_STYLE_EUDC = (1),
+    IME_REGWORD_STYLE_USER_FIRST = (0x80000000),
+    IME_REGWORD_STYLE_USER_LAST = -((1)),
+    SECURITY_DESCRIPTOR_REVISION = (1),
+    IS_TEXT_UNICODE_ASCII16 = (1),
+    IS_TEXT_UNICODE_REVERSE_ASCII16 = (16),
+    IS_TEXT_UNICODE_STATISTICS = (2),
+    IS_TEXT_UNICODE_REVERSE_STATISTICS = (32),
+    IS_TEXT_UNICODE_CONTROLS = (4),
+    IS_TEXT_UNICODE_REVERSE_CONTROLS = (64),
+    IS_TEXT_UNICODE_SIGNATURE = (8),
+    IS_TEXT_UNICODE_REVERSE_SIGNATURE = (128),
+    IS_TEXT_UNICODE_ILLEGAL_CHARS = (256),
+    IS_TEXT_UNICODE_ODD_LENGTH = (512),
+    IS_TEXT_UNICODE_NULL_BYTES = (4096),
+    IS_TEXT_UNICODE_UNICODE_MASK = (15),
+    IS_TEXT_UNICODE_REVERSE_MASK = (240),
+    IS_TEXT_UNICODE_NOT_UNICODE_MASK = (3840),
+    IS_TEXT_UNICODE_NOT_ASCII_MASK = (61440),
+    HC_GETNEXT = (1),
+    HC_SKIP = (2),
+    HC_SYSMODALOFF = (5),
+    HC_SYSMODALON = (4),
+    HC_NOREMOVE = (3),
+    KEYEVENTF_EXTENDEDKEY = (1),
+    KEYEVENTF_KEYUP = (2),
+    OBM_BTNCORNERS = (32758),
+    OBM_BTSIZE = (32761),
+    OBM_CHECK = (32760),
+    OBM_CHECKBOXES = (32759),
+    OBM_CLOSE = (32754),
+    OBM_COMBO = (32738),
+    OBM_DNARROW = (32752),
+    OBM_DNARROWD = (32742),
+    OBM_DNARROWI = (32736),
+    OBM_LFARROW = (32750),
+    OBM_LFARROWI = (32734),
+    OBM_LFARROWD = (32740),
+    OBM_MNARROW = (32739),
+    OBM_OLD_CLOSE = (32767),
+    OBM_OLD_DNARROW = (32764),
+    OBM_OLD_LFARROW = (32762),
+    OBM_OLD_REDUCE = (32757),
+    OBM_OLD_RESTORE = (32755),
+    OBM_OLD_RGARROW = (32763),
+    OBM_OLD_UPARROW = (32765),
+    OBM_OLD_ZOOM = (32756),
+    OBM_REDUCE = (32749),
+    OBM_REDUCED = (32746),
+    OBM_RESTORE = (32747),
+    OBM_RESTORED = (32744),
+    OBM_RGARROW = (32751),
+    OBM_RGARROWD = (32741),
+    OBM_RGARROWI = (32735),
+    OBM_SIZE = (32766),
+    OBM_UPARROW = (32753),
+    OBM_UPARROWD = (32743),
+    OBM_UPARROWI = (32737),
+    OBM_ZOOM = (32748),
+    OBM_ZOOMD = (32745),
+    DONT_RESOLVE_DLL_REFERENCES = (1),
+    LOAD_LIBRARY_AS_DATAFILE = (2),
+    LOAD_WITH_ALTERED_SEARCH_PATH = (8),
+    LPTR = (64),
+    LHND = (66),
+    NONZEROLHND = (2),
+    NONZEROLPTR = (0),
+    LMEM_NONZEROLHND = (2),
+    LMEM_NONZEROLPTR = (0),
+    LMEM_FIXED = (0),
+    LMEM_MOVEABLE = (2),
+    LMEM_NOCOMPACT = (16),
+    LMEM_NODISCARD = (32),
+    LMEM_ZEROINIT = (64),
+    LMEM_MODIFY = (128),
+    LMEM_LOCKCOUNT = (255),
+    LMEM_DISCARDABLE = (3840),
+    LMEM_DISCARDED = (16384),
+    LMEM_INVALID_HANDLE = (32768),
+    LOCKFILE_FAIL_IMMEDIATELY = (1),
+    LOCKFILE_EXCLUSIVE_LOCK = (2),
+    MB_USERICON = (0x80),
+    MB_ICONASTERISK = (0x40),
+    MB_ICONEXCLAMATION = (0x30),
+    MB_ICONWARNING = (0x30),
+    MB_ICONERROR = (0x10),
+    MB_ICONHAND = (0x10),
+    MB_ICONQUESTION = (0x20),
+    MB_OK = (0),
+    MB_ABORTRETRYIGNORE = (0x2),
+    MB_APPLMODAL = (0),
+    MB_DEFAULT_DESKTOP_ONLY = (0x20000),
+    MB_HELP = (0x4000),
+    MB_RIGHT = (0x80000),
+    MB_RTLREADING = (0x100000),
+    MB_TOPMOST = (0x40000),
+    MB_DEFBUTTON1 = (0),
+    MB_DEFBUTTON2 = (0x100),
+    MB_DEFBUTTON3 = (0x200),
+    MB_DEFBUTTON4 = (0x300),
+    MB_ICONINFORMATION = (0x40),
+    MB_ICONSTOP = (0x10),
+    MB_OKCANCEL = (0x1),
+    MB_RETRYCANCEL = (0x5),
+    MB_SERVICE_NOTIFICATION = (0x40000),
+    MB_SETFOREGROUND = (0x10000),
+    MB_SYSTEMMODAL = (0x1000),
+    MB_TASKMODAL = (0x2000),
+    MB_YESNO = (0x4),
+    MB_YESNOCANCEL = (0x3),
+    IDABORT = (3),
+    IDCANCEL = (2),
+    IDCLOSE = (8),
+    IDHELP = (9),
+    IDIGNORE = (5),
+    IDNO = (7),
+    IDOK = (1),
+    IDRETRY = (4),
+    IDYES = (6),
+    MSGF_DIALOGBOX = (0),
+    MSGF_MENU = (2),
+    MSGF_NEXTWINDOW = (6),
+    MSGF_SCROLLBAR = (5),
+    MSGF_MAINLOOP = (8),
+    MSGF_USER = (4096),
+    MWT_IDENTITY = (1),
+    MWT_LEFTMULTIPLY = (2),
+    MWT_RIGHTMULTIPLY = (3),
+    MOUSEEVENTF_ABSOLUTE = (32768),
+    MOUSEEVENTF_MOVE = (1),
+    MOUSEEVENTF_LEFTDOWN = (2),
+    MOUSEEVENTF_LEFTUP = (4),
+    MOUSEEVENTF_RIGHTDOWN = (8),
+    MOUSEEVENTF_RIGHTUP = (16),
+    MOUSEEVENTF_MIDDLEDOWN = (32),
+    MOUSEEVENTF_MIDDLEUP = (64),
+    MOVEFILE_REPLACE_EXISTING = (1),
+    MOVEFILE_COPY_ALLOWED = (2),
+    MOVEFILE_DELAY_UNTIL_REBOOT = (4),
+    MOVEFILE_WRITE_THROUGH = (8),
+    WAIT_OBJECT_0 = (0),
+    WAIT_ABANDONED_0 = (0x80),
+    WAIT_TIMEOUT = (0x102),
+    WAIT_IO_COMPLETION = (0xc0),
+    WAIT_ABANDONED = (0x80),
+    WAIT_FAILED = (0xffffffff),
+    MAXIMUM_WAIT_OBJECTS = (0x40),
+    MAXIMUM_SUSPEND_COUNT = (0x7f),
+    MB_PRECOMPOSED = (1),
+    MB_COMPOSITE = (2),
+    MB_ERR_INVALID_CHARS = (8),
+    MB_USEGLYPHCHARS = (4),
+    TOKEN_ADJUST_DEFAULT = (128),
+    TOKEN_ADJUST_GROUPS = (64),
+    TOKEN_ADJUST_PRIVILEGES = (32),
+    TOKEN_ALL_ACCESS = (0xf00ff),
+    TOKEN_ASSIGN_PRIMARY = (1),
+    TOKEN_DUPLICATE = (2),
+    TOKEN_EXECUTE = (0x20000),
+    TOKEN_IMPERSONATE = (4),
+    TOKEN_QUERY = (8),
+    TOKEN_QUERY_SOURCE = (16),
+    TOKEN_READ = (0x20008),
+    TOKEN_WRITE = (0x200e0),
+    SC_MANAGER_ALL_ACCESS = (0xf003f),
+    SC_MANAGER_CONNECT = (1),
+    SC_MANAGER_CREATE_SERVICE = (2),
+    SC_MANAGER_ENUMERATE_SERVICE = (4),
+    SC_MANAGER_LOCK = (8),
+    SC_MANAGER_QUERY_LOCK_STATUS = (16),
+    SC_MANAGER_MODIFY_BOOT_CONFIG = (32),
+    TAPE_FORMAT = (0x5),
+    TAPE_LOAD = (0),
+    TAPE_LOCK = (0x3),
+    TAPE_TENSION = (0x2),
+    TAPE_UNLOAD = (0x1),
+    TAPE_UNLOCK = (0x4),
+    IS_PSREBOOTSYSTEM = (3),
+    IS_PSRESTARTWINDOWS = (2),
+    PSPCB_CREATE = (2),
+    PSPCB_RELEASE = (1),
+    PURGE_TXABORT = (1),
+    PURGE_RXABORT = (2),
+    PURGE_TXCLEAR = (4),
+    PURGE_RXCLEAR = (8),
+    OWNER_SECURITY_INFORMATION = (0x1),
+    GROUP_SECURITY_INFORMATION = (0x2),
+    DACL_SECURITY_INFORMATION = (0x4),
+    SACL_SECURITY_INFORMATION = (0x8),
+    EVENTLOG_FORWARDS_READ = (4),
+    EVENTLOG_BACKWARDS_READ = (8),
+    EVENTLOG_SEEK_READ = (2),
+    EVENTLOG_SEQUENTIAL_READ = (1),
+    EVENTLOG_ERROR_TYPE = (1),
+    EVENTLOG_WARNING_TYPE = (2),
+    EVENTLOG_INFORMATION_TYPE = (4),
+    EVENTLOG_AUDIT_SUCCESS = (8),
+    EVENTLOG_AUDIT_FAILURE = (16),
+    RDW_ERASE = (4),
+    RDW_FRAME = (1024),
+    RDW_INTERNALPAINT = (2),
+    RDW_INVALIDATE = (1),
+    RDW_NOERASE = (32),
+    RDW_NOFRAME = (2048),
+    RDW_NOINTERNALPAINT = (16),
+    RDW_VALIDATE = (8),
+    RDW_ERASENOW = (512),
+    RDW_UPDATENOW = (256),
+    RDW_ALLCHILDREN = (128),
+    RDW_NOCHILDREN = (64),
+/*
+   //
+    HKEY_CLASSES_ROOT = (0x80000000),
+    HKEY_CURRENT_USER = (0x80000001),
+    HKEY_LOCAL_MACHINE = (0x80000002),
+    HKEY_USERS = (0x80000003),
+    HKEY_PERFORMANCE_DATA = (0x80000004),
+    HKEY_CURRENT_CONFIG = (0x80000005),
+    HKEY_DYN_DATA = (0x80000006),
+*/
+    REG_OPTION_VOLATILE = (0x1),
+    REG_OPTION_NON_VOLATILE = (0),
+    REG_CREATED_NEW_KEY = (0x1),
+    REG_OPENED_EXISTING_KEY = (0x2),
+    REG_BINARY = (3),
+    REG_DWORD = (4),
+    REG_DWORD_LITTLE_ENDIAN = (4),
+    REG_DWORD_BIG_ENDIAN = (5),
+    REG_EXPAND_SZ = (2),
+    REG_FULL_RESOURCE_DESCRIPTOR = (9),
+    REG_LINK = (6),
+    REG_MULTI_SZ = (7),
+    REG_NONE = (0),
+    REG_RESOURCE_LIST = (8),
+    REG_RESOURCE_REQUIREMENTS_LIST = (10),
+    REG_SZ = (1),
+    MOD_ALT = (1),
+    MOD_CONTROL = (2),
+    MOD_SHIFT = (4),
+    MOD_WIN = (8),
+    IDHOT_SNAPDESKTOP = -((2)),
+    IDHOT_SNAPWINDOW = -((1)),
+    REG_NOTIFY_CHANGE_NAME = (0x1),
+    REG_NOTIFY_CHANGE_ATTRIBUTES = (0x2),
+    REG_NOTIFY_CHANGE_LAST_SET = (0x4),
+    REG_NOTIFY_CHANGE_SECURITY = (0x8),
+    SW_ERASE = (4),
+    SW_INVALIDATE = (2),
+    SW_SCROLLCHILDREN = (1),
+    SMTO_ABORTIFHUNG = (2),
+    SMTO_BLOCK = (1),
+    SMTO_NORMAL = (0),
+    OPAQUE = (2),
+    TRANSPARENT = (1),
+    SLE_ERROR = (1),
+    SLE_MINORERROR = (2),
+    SLE_WARNING = (3),
+    SEM_FAILCRITICALERRORS = (1),
+    SEM_NOALIGNMENTFAULTEXCEPT = (4),
+    SEM_NOGPFAULTERRORBOX = (2),
+    SEM_NOOPENFILEERRORBOX = (32768),
+    ICM_ON = (2),
+    ICM_OFF = (1),
+    ICM_QUERY = (3),
+    LOCALE_ILANGUAGE = (1),
+    LOCALE_SLANGUAGE = (2),
+    LOCALE_SENGLANGUAGE = (4097),
+    LOCALE_SABBREVLANGNAME = (3),
+    LOCALE_SNATIVELANGNAME = (4),
+    LOCALE_ICOUNTRY = (5),
+    LOCALE_SCOUNTRY = (6),
+    LOCALE_SENGCOUNTRY = (4098),
+    LOCALE_SABBREVCTRYNAME = (7),
+    LOCALE_SNATIVECTRYNAME = (8),
+    LOCALE_IDEFAULTLANGUAGE = (9),
+    LOCALE_IDEFAULTCOUNTRY = (10),
+    LOCALE_IDEFAULTANSICODEPAGE = (4100),
+    LOCALE_IDEFAULTCODEPAGE = (11),
+    LOCALE_SLIST = (12),
+    LOCALE_IMEASURE = (13),
+    LOCALE_SDECIMAL = (14),
+    LOCALE_STHOUSAND = (15),
+    LOCALE_SGROUPING = (16),
+    LOCALE_IDIGITS = (17),
+    LOCALE_ILZERO = (18),
+    LOCALE_INEGNUMBER = (4112),
+    LOCALE_SCURRENCY = (20),
+    LOCALE_SMONDECIMALSEP = (22),
+    LOCALE_SMONTHOUSANDSEP = (23),
+    LOCALE_SMONGROUPING = (24),
+    LOCALE_ICURRDIGITS = (25),
+    LOCALE_ICURRENCY = (27),
+    LOCALE_INEGCURR = (28),
+    LOCALE_SDATE = (29),
+    LOCALE_STIME = (30),
+    LOCALE_STIMEFORMAT = (4099),
+    LOCALE_SSHORTDATE = (31),
+    LOCALE_SLONGDATE = (32),
+    LOCALE_IDATE = (33),
+    LOCALE_ILDATE = (34),
+    LOCALE_ITIME = (35),
+    LOCALE_ITLZERO = (37),
+    LOCALE_IDAYLZERO = (38),
+    LOCALE_IMONLZERO = (39),
+    LOCALE_S1159 = (40),
+    LOCALE_S2359 = (41),
+    LOCALE_ICALENDARTYPE = (4105),
+    LOCALE_IOPTIONALCALENDAR = (4107),
+    LOCALE_IFIRSTDAYOFWEEK = (4108),
+    LOCALE_IFIRSTWEEKOFYEAR = (4109),
+    LOCALE_SDAYNAME1 = (42),
+    LOCALE_SDAYNAME2 = (43),
+    LOCALE_SDAYNAME3 = (44),
+    LOCALE_SDAYNAME4 = (45),
+    LOCALE_SDAYNAME5 = (46),
+    LOCALE_SDAYNAME6 = (47),
+    LOCALE_SDAYNAME7 = (48),
+    LOCALE_SABBREVDAYNAME1 = (49),
+    LOCALE_SABBREVDAYNAME2 = (50),
+    LOCALE_SABBREVDAYNAME3 = (51),
+    LOCALE_SABBREVDAYNAME4 = (52),
+    LOCALE_SABBREVDAYNAME5 = (53),
+    LOCALE_SABBREVDAYNAME6 = (54),
+    LOCALE_SABBREVDAYNAME7 = (55),
+    LOCALE_SMONTHNAME1 = (56),
+    LOCALE_SMONTHNAME2 = (57),
+    LOCALE_SMONTHNAME3 = (58),
+    LOCALE_SMONTHNAME4 = (59),
+    LOCALE_SMONTHNAME5 = (60),
+    LOCALE_SMONTHNAME6 = (61),
+    LOCALE_SMONTHNAME7 = (62),
+    LOCALE_SMONTHNAME8 = (63),
+    LOCALE_SMONTHNAME9 = (64),
+    LOCALE_SMONTHNAME10 = (65),
+    LOCALE_SMONTHNAME11 = (66),
+    LOCALE_SMONTHNAME12 = (67),
+    LOCALE_SMONTHNAME13 = (4110),
+    LOCALE_SABBREVMONTHNAME1 = (68),
+    LOCALE_SABBREVMONTHNAME2 = (69),
+    LOCALE_SABBREVMONTHNAME3 = (70),
+    LOCALE_SABBREVMONTHNAME4 = (71),
+    LOCALE_SABBREVMONTHNAME5 = (72),
+    LOCALE_SABBREVMONTHNAME6 = (73),
+    LOCALE_SABBREVMONTHNAME7 = (74),
+    LOCALE_SABBREVMONTHNAME8 = (75),
+    LOCALE_SABBREVMONTHNAME9 = (76),
+    LOCALE_SABBREVMONTHNAME10 = (77),
+    LOCALE_SABBREVMONTHNAME11 = (78),
+    LOCALE_SABBREVMONTHNAME12 = (79),
+    LOCALE_SABBREVMONTHNAME13 = (4111),
+    LOCALE_SPOSITIVESIGN = (80),
+    LOCALE_SNEGATIVESIGN = (81),
+    LOCALE_IPOSSIGNPOSN = (82),
+    LOCALE_INEGSIGNPOSN = (83),
+    LOCALE_IPOSSYMPRECEDES = (84),
+    LOCALE_IPOSSEPBYSPACE = (85),
+    LOCALE_INEGSYMPRECEDES = (86),
+    LOCALE_INEGSEPBYSPACE = (87),
+    LOCALE_NOUSEROVERRIDE = (0x80000000),
+    CAL_ICALINTVALUE = (1),
+    CAL_IYEAROFFSETRANGE = (3),
+    CAL_SABBREVDAYNAME1 = (14),
+    CAL_SABBREVDAYNAME2 = (15),
+    CAL_SABBREVDAYNAME3 = (16),
+    CAL_SABBREVDAYNAME4 = (17),
+    CAL_SABBREVDAYNAME5 = (18),
+    CAL_SABBREVDAYNAME6 = (19),
+    CAL_SABBREVDAYNAME7 = (20),
+    CAL_SABBREVMONTHNAME1 = (34),
+    CAL_SABBREVMONTHNAME2 = (35),
+    CAL_SABBREVMONTHNAME3 = (36),
+    CAL_SABBREVMONTHNAME4 = (37),
+    CAL_SABBREVMONTHNAME5 = (38),
+    CAL_SABBREVMONTHNAME6 = (39),
+    CAL_SABBREVMONTHNAME7 = (40),
+    CAL_SABBREVMONTHNAME8 = (41),
+    CAL_SABBREVMONTHNAME9 = (42),
+    CAL_SABBREVMONTHNAME10 = (43),
+    CAL_SABBREVMONTHNAME11 = (44),
+    CAL_SABBREVMONTHNAME12 = (45),
+    CAL_SABBREVMONTHNAME13 = (46),
+    CAL_SCALNAME = (2),
+    CAL_SDAYNAME1 = (7),
+    CAL_SDAYNAME2 = (8),
+    CAL_SDAYNAME3 = (9),
+    CAL_SDAYNAME4 = (10),
+    CAL_SDAYNAME5 = (11),
+    CAL_SDAYNAME6 = (12),
+    CAL_SDAYNAME7 = (13),
+    CAL_SERASTRING = (4),
+    CAL_SLONGDATE = (6),
+    CAL_SMONTHNAME1 = (21),
+    CAL_SMONTHNAME2 = (22),
+    CAL_SMONTHNAME3 = (23),
+    CAL_SMONTHNAME4 = (24),
+    CAL_SMONTHNAME5 = (25),
+    CAL_SMONTHNAME6 = (26),
+    CAL_SMONTHNAME7 = (27),
+    CAL_SMONTHNAME8 = (28),
+    CAL_SMONTHNAME9 = (29),
+    CAL_SMONTHNAME10 = (30),
+    CAL_SMONTHNAME11 = (31),
+    CAL_SMONTHNAME12 = (32),
+    CAL_SMONTHNAME13 = (33),
+    CAL_SSHORTDATE = (5),
+    PROCESS_SET_QUOTA = (256),
+    BLACKONWHITE = (1),
+    COLORONCOLOR = (3),
+    HALFTONE = (4),
+    STRETCH_ANDSCANS = (1),
+    STRETCH_DELETESCANS = (3),
+    STRETCH_HALFTONE = (4),
+    STRETCH_ORSCANS = (2),
+    WHITEONBLACK = (2),
+    OCR_NORMAL = (32512),
+    OCR_IBEAM = (32513),
+    OCR_WAIT = (32514),
+    OCR_CROSS = (32515),
+    OCR_UP = (32516),
+    OCR_SIZE = (32640),
+    OCR_ICON = (32641),
+    OCR_SIZENWSE = (32642),
+    OCR_SIZENESW = (32643),
+    OCR_SIZEWE = (32644),
+    OCR_SIZENS = (32645),
+    OCR_SIZEALL = (32646),
+    OCR_NO = (32648),
+    OCR_APPSTARTING = (32650),
+    TAPE_ABSOLUTE_BLOCK = (0x1),
+    TAPE_LOGICAL_BLOCK = (0x2),
+    TAPE_REWIND = (0),
+    TAPE_SPACE_END_OF_DATA = (0x4),
+    TAPE_SPACE_FILEMARKS = (0x6),
+    TAPE_SPACE_RELATIVE_BLOCKS = (0x5),
+    TAPE_SPACE_SEQUENTIAL_FMKS = (0x7),
+    TAPE_SPACE_SEQUENTIAL_SMKS = (0x9),
+    TAPE_SPACE_SETMARKS = (0x8),
+    EXCEPTION_EXECUTE_HANDLER = (1),
+    EXCEPTION_CONTINUE_EXECUTION = -((1)),
+    EXCEPTION_CONTINUE_SEARCH = (0),
+    SWP_DRAWFRAME = (32),
+    SWP_FRAMECHANGED = (32),
+    SWP_HIDEWINDOW = (128),
+    SWP_NOACTIVATE = (16),
+    SWP_NOCOPYBITS = (256),
+    SWP_NOMOVE = (2),
+    SWP_NOSIZE = (1),
+    SWP_NOREDRAW = (8),
+    SWP_NOZORDER = (4),
+    SWP_SHOWWINDOW = (64),
+    SWP_NOOWNERZORDER = (512),
+    SWP_NOREPOSITION = (512),
+    SWP_NOSENDCHANGING = (1024),
+    HSHELL_ACTIVATESHELLWINDOW = (3),
+    HSHELL_GETMINRECT = (5),
+    HSHELL_LANGUAGE = (8),
+    HSHELL_REDRAW = (6),
+    HSHELL_TASKMAN = (7),
+    HSHELL_WINDOWACTIVATED = (4),
+    HSHELL_WINDOWCREATED = (1),
+    HSHELL_WINDOWDESTROYED = (2),
+    SW_HIDE = (0),
+    SW_MAXIMIZE = (3),
+    SW_MINIMIZE = (6),
+    SW_NORMAL = (1),
+    SW_RESTORE = (9),
+    SW_SHOW = (5),
+    SW_SHOWDEFAULT = (10),
+    SW_SHOWMAXIMIZED = (3),
+    SW_SHOWMINIMIZED = (2),
+    SW_SHOWMINNOACTIVE = (7),
+    SW_SHOWNA = (8),
+    SW_SHOWNOACTIVATE = (4),
+    SW_SHOWNORMAL = (1),
+    WPF_RESTORETOMAXIMIZED = (2),
+    WPF_SETMINPOSITION = (1),
+    INFINITE = (0xFFFFFFFF),
+    SPI_GETACCESSTIMEOUT = (60),
+    SPI_GETANIMATION = (72),
+    SPI_GETBEEP = (1),
+    SPI_GETBORDER = (5),
+    SPI_GETDEFAULTINPUTLANG = (89),
+    SPI_GETDRAGFULLWINDOWS = (38),
+    SPI_GETFASTTASKSWITCH = (35),
+    SPI_GETFILTERKEYS = (50),
+    SPI_GETFONTSMOOTHING = (74),
+    SPI_GETGRIDGRANULARITY = (18),
+    SPI_GETHIGHCONTRAST = (66),
+    SPI_GETICONMETRICS = (45),
+    SPI_GETICONTITLELOGFONT = (31),
+    SPI_GETICONTITLEWRAP = (25),
+    SPI_GETKEYBOARDDELAY = (22),
+    SPI_GETKEYBOARDPREF = (68),
+    SPI_GETKEYBOARDSPEED = (10),
+    SPI_GETLOWPOWERACTIVE = (83),
+    SPI_GETLOWPOWERTIMEOUT = (79),
+    SPI_GETMENUDROPALIGNMENT = (27),
+    SPI_GETMINIMIZEDMETRICS = (43),
+    SPI_GETMOUSE = (3),
+    SPI_GETMOUSEKEYS = (54),
+    SPI_GETMOUSETRAILS = (94),
+    SPI_GETNONCLIENTMETRICS = (41),
+    SPI_GETPOWEROFFACTIVE = (84),
+    SPI_GETPOWEROFFTIMEOUT = (80),
+    SPI_GETSCREENREADER = (70),
+    SPI_GETSCREENSAVEACTIVE = (16),
+    SPI_GETSCREENSAVETIMEOUT = (14),
+    SPI_GETSERIALKEYS = (62),
+    SPI_GETSHOWSOUNDS = (56),
+    SPI_GETSOUNDSENTRY = (64),
+    SPI_GETSTICKYKEYS = (58),
+    SPI_GETTOGGLEKEYS = (52),
+    SPI_GETWINDOWSEXTENSION = (92),
+    SPI_GETWORKAREA = (48),
+    SPI_ICONHORIZONTALSPACING = (13),
+    SPI_ICONVERTICALSPACING = (24),
+    SPI_LANGDRIVER = (12),
+    SPI_SCREENSAVERRUNNING = (97),
+    SPI_SETACCESSTIMEOUT = (61),
+    SPI_SETANIMATION = (73),
+    SPI_SETBEEP = (2),
+    SPI_SETBORDER = (6),
+    SPI_SETDEFAULTINPUTLANG = (90),
+    SPI_SETDESKPATTERN = (21),
+    SPI_SETDESKWALLPAPER = (20),
+    SPI_SETDOUBLECLICKTIME = (32),
+    SPI_SETDOUBLECLKHEIGHT = (30),
+    SPI_SETDOUBLECLKWIDTH = (29),
+    SPI_SETDRAGFULLWINDOWS = (37),
+    SPI_SETDRAGHEIGHT = (77),
+    SPI_SETDRAGWIDTH = (76),
+    SPI_SETFASTTASKSWITCH = (36),
+    SPI_SETFILTERKEYS = (51),
+    SPI_SETFONTSMOOTHING = (75),
+    SPI_SETGRIDGRANULARITY = (19),
+    SPI_SETHANDHELD = (78),
+    SPI_SETHIGHCONTRAST = (67),
+    SPI_SETICONMETRICS = (46),
+    SPI_SETICONTITLELOGFONT = (34),
+    SPI_SETICONTITLEWRAP = (26),
+    SPI_SETKEYBOARDDELAY = (23),
+    SPI_SETKEYBOARDPREF = (69),
+    SPI_SETKEYBOARDSPEED = (11),
+    SPI_SETLANGTOGGLE = (91),
+    SPI_SETLOWPOWERACTIVE = (85),
+    SPI_SETLOWPOWERTIMEOUT = (81),
+    SPI_SETMENUDROPALIGNMENT = (28),
+    SPI_SETMINIMIZEDMETRICS = (44),
+    SPI_SETMOUSE = (4),
+    SPI_SETMOUSEBUTTONSWAP = (33),
+    SPI_SETMOUSEKEYS = (55),
+    SPI_SETMOUSETRAILS = (93),
+    SPI_SETNONCLIENTMETRICS = (42),
+    SPI_SETPENWINDOWS = (49),
+    SPI_SETPOWEROFFACTIVE = (86),
+    SPI_SETPOWEROFFTIMEOUT = (82),
+    SPI_SETSCREENREADER = (71),
+    SPI_SETSCREENSAVEACTIVE = (17),
+    SPI_SETSCREENSAVETIMEOUT = (15),
+    SPI_SETSERIALKEYS = (63),
+    SPI_SETSHOWSOUNDS = (57),
+    SPI_SETSOUNDSENTRY = (65),
+    SPI_SETSTICKYKEYS = (59),
+    SPI_SETTOGGLEKEYS = (53),
+    SPI_SETWORKAREA = (47),
+    SPIF_UPDATEINIFILE = (1),
+    SPIF_SENDWININICHANGE = (2),
+    SPIF_SENDCHANGE = (2),
+    TPM_CENTERALIGN = (0x4),
+    TPM_LEFTALIGN = (0),
+    TPM_RIGHTALIGN = (0x8),
+    TPM_LEFTBUTTON = (0),
+    TPM_RIGHTBUTTON = (0x2),
+    TPM_HORIZONTAL = (0),
+    TPM_VERTICAL = (0x40),
+    TCI_SRCCHARSET = (1),
+    TCI_SRCCODEPAGE = (2),
+    TCI_SRCFONTSIG = (3),
+    VFFF_ISSHAREDFILE = (1),
+    VFF_CURNEDEST = (1),
+    VFF_FILEINUSE = (2),
+    VFF_BUFFTOOSMALL = (4),
+    VIFF_FORCEINSTALL = (1),
+    VIFF_DONTDELETEOLD = (2),
+    VIF_TEMPFILE = (0x1),
+    VIF_MISMATCH = (0x2),
+    VIF_SRCOLD = (0x4),
+    VIF_DIFFLANG = (0x8),
+    VIF_DIFFCODEPG = (0x10),
+    VIF_DIFFTYPE = (0x20),
+    VIF_WRITEPROT = (0x40),
+    VIF_FILEINUSE = (0x80),
+    VIF_OUTOFSPACE = (0x100),
+    VIF_ACCESSVIOLATION = (0x200),
+    VIF_SHARINGVIOLATION = (0x400),
+    VIF_CANNOTCREATE = (0x800),
+    VIF_CANNOTDELETE = (0x1000),
+    VIF_CANNOTDELETECUR = (0x4000),
+    VIF_CANNOTRENAME = (0x2000),
+    VIF_OUTOFMEMORY = (0x8000),
+    VIF_CANNOTREADSRC = (0x10000),
+    VIF_CANNOTREADDST = (0x20000),
+    VIF_BUFFTOOSMALL = (0x40000),
+    WC_COMPOSITECHECK = (512),
+    WC_DISCARDNS = (16),
+    WC_SEPCHARS = (32),
+    WC_DEFAULTCHAR = (64),
+    HELP_COMMAND = (0x102),
+    HELP_CONTENTS = (0x3),
+    HELP___FILE__ = (0x1),
+    HELP___FILE__POPUP = (0x8),
+    HELP_FORCEFILE = (0x9),
+    HELP_HELPONHELP = (0x4),
+    HELP_INDEX = (0x3),
+    HELP_KEY = (0x101),
+    HELP_MULTIKEY = (0x201),
+    HELP_PARTIALKEY = (0x105),
+    HELP_QUIT = (0x2),
+    HELP_SETCONTENTS = (0x5),
+    HELP_SETINDEX = (0x5),
+    HELP___FILE__MENU = (0xa),
+    HELP_FINDER = (0xb),
+    HELP_WM_HELP = (0xc),
+    HELP_TCARD = (0x8000),
+    HELP_TCARD_DATA = (0x10),
+    HELP_TCARD_OTHER_CALLER = (0x11),
+    CONNECT_UPDATE_PROFILE = (1),
+    RESOURCETYPE_DISK = (1),
+    RESOURCETYPE_PRINT = (2),
+    RESOURCETYPE_ANY = (0),
+    RESOURCE_CONNECTED = (1),
+    RESOURCE_GLOBALNET = (2),
+    RESOURCE_REMEMBERED = (3),
+    RESOURCEUSAGE_CONNECTABLE = (1),
+    RESOURCEUSAGE_CONTAINER = (2),
+    WN_BAD_NETNAME = (0x43),
+    WN_EXTENDED_ERROR = (0x4b8),
+    WN_MORE_DATA = (0xea),
+    WN_NO_NETWORK = (0x4c6),
+    WN_SUCCESS = (0),
+    WN_ACCESS_DENIED = (0x5),
+    WN_BAD_PROVIDER = (0x4b4),
+    WN_NOT_AUTHENTICATED = (0x4dc),
+    UNIVERSAL_NAME_INFO_LEVEL = (1),
+    REMOTE_NAME_INFO_LEVEL = (2),
+    STILL_ACTIVE = (0x103),
+    SP_SERIALCOMM = (0x1),
+    BAUD_075 = (0x1),
+    BAUD_110 = (0x2),
+    BAUD_134_5 = (0x4),
+    BAUD_150 = (0x8),
+    BAUD_300 = (0x10),
+    BAUD_600 = (0x20),
+    BAUD_1200 = (0x40),
+    BAUD_1800 = (0x80),
+    BAUD_2400 = (0x100),
+    BAUD_4800 = (0x200),
+    BAUD_7200 = (0x400),
+    BAUD_9600 = (0x800),
+    BAUD_14400 = (0x1000),
+    BAUD_19200 = (0x2000),
+    BAUD_38400 = (0x4000),
+    BAUD_56K = (0x8000),
+    BAUD_57600 = (0x40000),
+    BAUD_115200 = (0x20000),
+    BAUD_128K = (0x10000),
+    BAUD_USER = (0x10000000),
+    PST_FAX = (0x21),
+    PST_LAT = (0x101),
+    PST_MODEM = (0x6),
+    PST_NETWORK_BRIDGE = (0x100),
+    PST_PARALLELPORT = (0x2),
+    PST_RS232 = (0x1),
+    PST_RS422 = (0x3),
+    PST_RS423 = (0x4),
+    PST_RS449 = (0x5),
+    PST_SCANNER = (0x22),
+    PST_TCPIP_TELNET = (0x102),
+    PST_UNSPECIFIED = (0),
+    PST_X25 = (0x103),
+    PCF_16BITMODE = (0x200),
+    PCF_DTRDSR = (0x1),
+    PCF_INTTIMEOUTS = (0x80),
+    PCF_PARITY_CHECK = (0x8),
+    PCF_RLSD = (0x4),
+    PCF_RTSCTS = (0x2),
+    PCF_SETXCHAR = (0x20),
+    PCF_SPECIALCHARS = (0x100),
+    PCF_TOTALTIMEOUTS = (0x40),
+    PCF_XONXOFF = (0x10),
+    SP_BAUD = (0x2),
+    SP_DATABITS = (0x4),
+    SP_HANDSHAKING = (0x10),
+    SP_PARITY = (0x1),
+    SP_PARITY_CHECK = (0x20),
+    SP_RLSD = (0x40),
+    SP_STOPBITS = (0x8),
+    DATABITS_5 = (1),
+    DATABITS_6 = (2),
+    DATABITS_7 = (4),
+    DATABITS_8 = (8),
+    DATABITS_16 = (16),
+    DATABITS_16X = (32),
+    STOPBITS_10 = (1),
+    STOPBITS_15 = (2),
+    STOPBITS_20 = (4),
+    PARITY_NONE = (256),
+    PARITY_ODD = (512),
+    PARITY_EVEN = (1024),
+    PARITY_MARK = (2048),
+    PARITY_SPACE = (4096),
+    COMMPROP_INITIALIZED = (0xe73cf52e),
+    CBR_110 = (110),
+    CBR_300 = (300),
+    CBR_600 = (600),
+    CBR_1200 = (1200),
+    CBR_2400 = (2400),
+    CBR_4800 = (4800),
+    CBR_9600 = (9600),
+    CBR_14400 = (14400),
+    CBR_19200 = (19200),
+    CBR_38400 = (38400),
+    CBR_56000 = (56000),
+    CBR_57600 = (57600),
+    CBR_115200 = (115200),
+    CBR_128000 = (128000),
+    CBR_256000 = (256000),
+    DTR_CONTROL_DISABLE = (0),
+    DTR_CONTROL_ENABLE = (1),
+    DTR_CONTROL_HANDSHAKE = (2),
+    RTS_CONTROL_DISABLE = (0),
+    RTS_CONTROL_ENABLE = (1),
+    RTS_CONTROL_HANDSHAKE = (2),
+    RTS_CONTROL_TOGGLE = (3),
+    EVENPARITY = (2),
+    MARKPARITY = (3),
+    NOPARITY = (0),
+    ODDPARITY = (1),
+    SPACEPARITY = (4),
+    ONESTOPBIT = (0),
+    ONE5STOPBITS = (1),
+    TWOSTOPBITS = (2),
+    CREATE_PROCESS_DEBUG_EVENT = (3),
+    CREATE_THREAD_DEBUG_EVENT = (2),
+    EXCEPTION_DEBUG_EVENT = (1),
+    EXIT_PROCESS_DEBUG_EVENT = (5),
+    EXIT_THREAD_DEBUG_EVENT = (4),
+    LOAD_DLL_DEBUG_EVENT = (6),
+    OUTPUT_DEBUG_STRING_EVENT = (8),
+    UNLOAD_DLL_DEBUG_EVENT = (7),
+    RIP_EVENT = (9),
+    PROCESS_HEAP_REGION = (1),
+    PROCESS_HEAP_UNCOMMITTED_RANGE = (2),
+    PROCESS_HEAP_ENTRY_BUSY = (4),
+    PROCESS_HEAP_ENTRY_MOVEABLE = (16),
+    PROCESS_HEAP_ENTRY_DDESHARE = (32),
+    HINSTANCE_ERROR = (32),
+    BACKUP_DATA = (1),
+    BACKUP_EA_DATA = (2),
+    BACKUP_SECURITY_DATA = (3),
+    BACKUP_ALTERNATE_DATA = (4),
+    BACKUP_LINK = (5),
+    STREAM_MODIFIED_WHEN_READ = (1),
+    STREAM_CONTAINS_SECURITY = (2),
+    STARTF_USESHOWWINDOW = (1),
+    STARTF_USEPOSITION = (4),
+    STARTF_USESIZE = (2),
+    STARTF_USECOUNTCHARS = (8),
+    STARTF_USEFILLATTRIBUTE = (16),
+    STARTF_RUNFULLSCREEN = (32),
+    STARTF_FORCEONFEEDBACK = (64),
+    STARTF_FORCEOFFFEEDBACK = (128),
+    STARTF_USESTDHANDLES = (256),
+    STARTF_USEHOTKEY = (512),
+    VER_PLATFORM_WIN32s = (0),
+    VER_PLATFORM_WIN32_WINDOWS = (1),
+    VER_PLATFORM_WIN32_NT = (2),
+    MAXPROPPAGES = (100),
+    PSP_DEFAULT = (0),
+    PSP_DLGINDIRECT = (1),
+    PSP_HASHELP = (32),
+    PSP_USECALLBACK = (128),
+    PSP_USEHICON = (2),
+    PSP_USEICONID = (4),
+    PSP_USEREFPARENT = (64),
+    PSP_USETITLE = (8),
+    PSP_RTLREADING = (16),
+    PSH_DEFAULT = (0),
+    PSH_HASHELP = (512),
+    PSH_MODELESS = (1024),
+    PSH_NOAPPLYNOW = (128),
+    PSH_PROPSHEETPAGE = (8),
+    PSH_PROPTITLE = (1),
+    PSH_USECALLBACK = (256),
+    PSH_USEHICON = (2),
+    PSH_USEICONID = (4),
+    PSH_USEPSTARTPAGE = (64),
+    PSH_WIZARD = (32),
+    PSH_RTLREADING = (2048),
+    PSCB_INITIALIZED = (1),
+    PSCB_PRECREATE = (2),
+    PSNRET_NOERROR = (0),
+    PSNRET_INVALID_NOCHANGEPAGE = (2),
+    PSBTN_APPLYNOW = (4),
+    PSBTN_BACK = (0),
+    PSBTN_CANCEL = (5),
+    PSBTN_FINISH = (2),
+    PSBTN_HELP = (6),
+    PSBTN_NEXT = (1),
+    PSBTN_OK = (3),
+    PSWIZB_BACK = (1),
+    PSWIZB_NEXT = (2),
+    PSWIZB_FINISH = (4),
+    PSWIZB_DISABLEDFINISH = (8),
+    ID_PSREBOOTSYSTEM = (3),
+    ID_PSRESTARTWINDOWS = (2),
+    WIZ_BODYCX = (184),
+    WIZ_BODYX = (92),
+    WIZ_CXBMP = (80),
+    WIZ_CXDLG = (276),
+    WIZ_CYDLG = (140),
+}
+char* VS_FILE_INFO = cast(char*) ((16));
+enum : DWORD {
+    VS_VERSION_INFO = (1),
+    VS_FF_DEBUG = (0x1),
+    VS_FF_INFOINFERRED = (0x10),
+    VS_FF_PATCHED = (0x4),
+    VS_FF_PRERELEASE = (0x2),
+    VS_FF_PRIVATEBUILD = (0x8),
+    VS_FF_SPECIALBUILD = (0x20),
+    VOS_UNKNOWN = (0),
+    VOS_DOS = (0x10000),
+    VOS_OS216 = (0x20000),
+    VOS_OS232 = (0x30000),
+    VOS_NT = (0x40000),
+    VOS_DOS_WINDOWS16 = (0x10001),
+    VOS_DOS_WINDOWS32 = (0x10004),
+    VOS_OS216_PM16 = (0x20002),
+    VOS_OS232_PM32 = (0x30003),
+    VOS_NT_WINDOWS32 = (0x40004),
+    VFT_UNKNOWN = (0),
+    VFT_APP = (0x1),
+    VFT_DLL = (0x2),
+    VFT_DRV = (0x3),
+    VFT_FONT = (0x4),
+    VFT_VXD = (0x5),
+    VFT_STATIC_LIB = (0x7),
+    VFT2_UNKNOWN = (0),
+    VFT2_DRV_PRINTER = (0x1),
+    VFT2_DRV_KEYBOARD = (0x2),
+    VFT2_DRV_LANGUAGE = (0x3),
+    VFT2_DRV_DISPLAY = (0x4),
+    VFT2_DRV_MOUSE = (0x5),
+    VFT2_DRV_NETWORK = (0x6),
+    VFT2_DRV_SYSTEM = (0x7),
+    VFT2_DRV_INSTALLABLE = (0x8),
+    VFT2_DRV_SOUND = (0x9),
+    VFT2_FONT_RASTER = (0x1),
+    VFT2_FONT_VECTOR = (0x2),
+    VFT2_FONT_TRUETYPE = (0x3),
+    PAN_ANY = (0),
+    PAN_NO_FIT = (1),
+    PAN_FAMILY_TEXT_DISPLAY = (2),
+    PAN_FAMILY_SCRIPT = (3),
+    PAN_FAMILY_DECORATIVE = (4),
+    PAN_FAMILY_PICTORIAL = (5),
+    PAN_SERIF_COVE = (2),
+    PAN_SERIF_OBTUSE_COVE = (3),
+    PAN_SERIF_SQUARE_COVE = (4),
+    PAN_SERIF_OBTUSE_SQUARE_COVE = (5),
+    PAN_SERIF_SQUARE = (6),
+    PAN_SERIF_THIN = (7),
+    PAN_SERIF_BONE = (8),
+    PAN_SERIF_EXAGGERATED = (9),
+    PAN_SERIF_TRIANGLE = (10),
+    PAN_SERIF_NORMAL_SANS = (11),
+    PAN_SERIF_OBTUSE_SANS = (12),
+    PAN_SERIF_PERP_SANS = (13),
+    PAN_SERIF_FLARED = (14),
+    PAN_SERIF_ROUNDED = (15),
+    PAN_WEIGHT_VERY_LIGHT = (2),
+    PAN_WEIGHT_LIGHT = (3),
+    PAN_WEIGHT_THIN = (4),
+    PAN_WEIGHT_BOOK = (5),
+    PAN_WEIGHT_MEDIUM = (6),
+    PAN_WEIGHT_DEMI = (7),
+    PAN_WEIGHT_BOLD = (8),
+    PAN_WEIGHT_HEAVY = (9),
+    PAN_WEIGHT_BLACK = (10),
+    PAN_WEIGHT_NORD = (11),
+    PAN_PROP_OLD_STYLE = (2),
+    PAN_PROP_MODERN = (3),
+    PAN_PROP_EVEN_WIDTH = (4),
+    PAN_PROP_EXPANDED = (5),
+    PAN_PROP_CONDENSED = (6),
+    PAN_PROP_VERY_EXPANDED = (7),
+    PAN_PROP_VERY_CONDENSED = (8),
+    PAN_PROP_MONOSPACED = (9),
+    PAN_CONTRAST_NONE = (2),
+    PAN_CONTRAST_VERY_LOW = (3),
+    PAN_CONTRAST_LOW = (4),
+    PAN_CONTRAST_MEDIUM_LOW = (5),
+    PAN_CONTRAST_MEDIUM = (6),
+    PAN_CONTRAST_MEDIUM_HIGH = (7),
+    PAN_CONTRAST_HIGH = (8),
+    PAN_CONTRAST_VERY_HIGH = (9),
+    PAN_STROKE_GRADUAL_DIAG = (2),
+    PAN_STROKE_GRADUAL_TRAN = (3),
+    PAN_STROKE_GRADUAL_VERT = (4),
+    PAN_STROKE_GRADUAL_HORZ = (5),
+    PAN_STROKE_RAPID_VERT = (6),
+    PAN_STROKE_RAPID_HORZ = (7),
+    PAN_STROKE_INSTANT_VERT = (8),
+    PAN_STRAIGHT_ARMS_HORZ = (2),
+    PAN_STRAIGHT_ARMS_WEDGE = (3),
+    PAN_STRAIGHT_ARMS_VERT = (4),
+    PAN_STRAIGHT_ARMS_SINGLE_SERIF = (5),
+    PAN_STRAIGHT_ARMS_DOUBLE_SERIF = (6),
+    PAN_BENT_ARMS_HORZ = (7),
+    PAN_BENT_ARMS_VERT = (9),
+    PAN_BENT_ARMS_WEDGE = (8),
+    PAN_BENT_ARMS_SINGLE_SERIF = (10),
+    PAN_BENT_ARMS_DOUBLE_SERIF = (11),
+    PAN_LETT_NORMAL_CONTACT = (2),
+    PAN_LETT_NORMAL_WEIGHTED = (3),
+    PAN_LETT_NORMAL_BOXED = (4),
+    PAN_LETT_NORMAL_FLATTENED = (5),
+    PAN_LETT_NORMAL_ROUNDED = (6),
+    PAN_LETT_NORMAL_OFF_CENTER = (7),
+    PAN_LETT_NORMAL_SQUARE = (8),
+    PAN_LETT_OBLIQUE_CONTACT = (9),
+    PAN_LETT_OBLIQUE_WEIGHTED = (10),
+    PAN_LETT_OBLIQUE_BOXED = (11),
+    PAN_LETT_OBLIQUE_FLATTENED = (12),
+    PAN_LETT_OBLIQUE_ROUNDED = (13),
+    PAN_LETT_OBLIQUE_OFF_CENTER = (14),
+    PAN_LETT_OBLIQUE_SQUARE = (15),
+    PAN_MIDLINE_STANDARD_TRIMMED = (2),
+    PAN_MIDLINE_STANDARD_POINTED = (3),
+    PAN_MIDLINE_STANDARD_SERIFED = (4),
+    PAN_MIDLINE_HIGH_TRIMMED = (5),
+    PAN_MIDLINE_HIGH_POINTED = (6),
+    PAN_MIDLINE_HIGH_SERIFED = (7),
+    PAN_MIDLINE_CONSTANT_TRIMMED = (8),
+    PAN_MIDLINE_CONSTANT_POINTED = (9),
+    PAN_MIDLINE_CONSTANT_SERIFED = (10),
+    PAN_MIDLINE_LOW_TRIMMED = (11),
+    PAN_MIDLINE_LOW_POINTED = (12),
+    PAN_MIDLINE_LOW_SERIFED = (13),
+    PAN_XHEIGHT_CONSTANT_SMALL = (2),
+    PAN_XHEIGHT_CONSTANT_STD = (3),
+    PAN_XHEIGHT_CONSTANT_LARGE = (4),
+    PAN_XHEIGHT_DUCKING_SMALL = (5),
+    PAN_XHEIGHT_DUCKING_STD = (6),
+    PAN_XHEIGHT_DUCKING_LARGE = (7),
+    PC_EXPLICIT = (2),
+    PC_NOCOLLAPSE = (4),
+    PC_RESERVED = (1),
+    BS_DIBPATTERN = (5),
+    BS_DIBPATTERN8X8 = (8),
+    BS_DIBPATTERNPT = (6),
+    BS_HATCHED = (2),
+    BS_HOLLOW = (1),
+    BS_NULL = (1),
+    BS_PATTERN = (3),
+    BS_PATTERN8X8 = (7),
+    BS_SOLID = (0),
+    DM_ORIENTATION = (0x1),
+    DM_PAPERSIZE = (0x2),
+    DM_PAPERLENGTH = (0x4),
+    DM_PAPERWIDTH = (0x8),
+    DM_SCALE = (0x10),
+    DM_COPIES = (0x100),
+    DM_DEFAULTSOURCE = (0x200),
+    DM_PRINTQUALITY = (0x400),
+    DM_COLOR = (0x800),
+    DM_DUPLEX = (0x1000),
+    DM_YRESOLUTION = (0x2000),
+    DM_TTOPTION = (0x4000),
+    DM_COLLATE = (0x8000),
+    DM_FORMNAME = (0x10000),
+    DM_LOGPIXELS = (0x20000),
+    DM_ICMMETHOD = (0x800000),
+    DM_ICMINTENT = (0x1000000),
+    DM_MEDIATYPE = (0x2000000),
+    DM_DITHERTYPE = (0x4000000),
+    DMORIENT_LANDSCAPE = (2),
+    DMORIENT_PORTRAIT = (1),
+    DMPAPER_LETTER = (1),
+    DMPAPER_LEGAL = (5),
+    DMPAPER_A4 = (9),
+    DMPAPER_CSHEET = (24),
+    DMPAPER_DSHEET = (25),
+    DMPAPER_ESHEET = (26),
+    DMPAPER_LETTERSMALL = (2),
+    DMPAPER_TABLOID = (3),
+    DMPAPER_LEDGER = (4),
+    DMPAPER_STATEMENT = (6),
+    DMPAPER_EXECUTIVE = (7),
+    DMPAPER_A3 = (8),
+    DMPAPER_A4SMALL = (10),
+    DMPAPER_A5 = (11),
+    DMPAPER_B4 = (12),
+    DMPAPER_B5 = (13),
+    DMPAPER_FOLIO = (14),
+    DMPAPER_QUARTO = (15),
+    DMPAPER_10X14 = (16),
+    DMPAPER_11X17 = (17),
+    DMPAPER_NOTE = (18),
+    DMPAPER_ENV_9 = (19),
+    DMPAPER_ENV_10 = (20),
+    DMPAPER_ENV_11 = (21),
+    DMPAPER_ENV_12 = (22),
+    DMPAPER_ENV_14 = (23),
+    DMPAPER_ENV_DL = (27),
+    DMPAPER_ENV_C5 = (28),
+    DMPAPER_ENV_C3 = (29),
+    DMPAPER_ENV_C4 = (30),
+    DMPAPER_ENV_C6 = (31),
+    DMPAPER_ENV_C65 = (32),
+    DMPAPER_ENV_B4 = (33),
+    DMPAPER_ENV_B5 = (34),
+    DMPAPER_ENV_B6 = (35),
+    DMPAPER_ENV_ITALY = (36),
+    DMPAPER_ENV_MONARCH = (37),
+    DMPAPER_ENV_PERSONAL = (38),
+    DMPAPER_FANFOLD_US = (39),
+    DMPAPER_FANFOLD_STD_GERMAN = (40),
+    DMPAPER_FANFOLD_LGL_GERMAN = (41),
+    DMRES_HIGH = -((4)),
+    DMRES_MEDIUM = -((3)),
+    DMRES_LOW = -((2)),
+    DMRES_DRAFT = -((1)),
+    DMCOLOR_COLOR = (2),
+    DMCOLOR_MONOCHROME = (1),
+    DMDUP_SIMPLEX = (1),
+    DMDUP_HORIZONTAL = (3),
+    DMDUP_VERTICAL = (2),
+    DMTT_BITMAP = (1),
+    DMTT_DOWNLOAD = (2),
+    DMTT_SUBDEV = (3),
+    DMCOLLATE_TRUE = (1),
+    DMCOLLATE_FALSE = (0),
+    DM_GRAYSCALE = (1),
+    DM_INTERLACED = (2),
+    DMICMMETHOD_NONE = (1),
+    DMICMMETHOD_SYSTEM = (2),
+    DMICMMETHOD_DRIVER = (3),
+    DMICMMETHOD_DEVICE = (4),
+    DMICMMETHOD_USER = (256),
+    DMICM_SATURATE = (1),
+    DMICM_CONTRAST = (2),
+    DMICM_COLORMETRIC = (3),
+    DMICM_USER = (256),
+    DMMEDIA_STANDARD = (1),
+    DMMEDIA_GLOSSY = (3),
+    DMMEDIA_TRANSPARENCY = (2),
+    DMMEDIA_USER = (256),
+    DMDITHER_NONE = (1),
+    DMDITHER_COARSE = (2),
+    DMDITHER_FINE = (3),
+    DMDITHER_LINEART = (4),
+    DMDITHER_GRAYSCALE = (10),
+    DMDITHER_USER = (256),
+    RDH_RECTANGLES = (1),
+    TT_POLYGON_TYPE = (24),
+    TT_PRIM_LINE = (1),
+    TT_PRIM_QSPLINE = (2),
+    GCPCLASS_ARABIC = (2),
+    GCPCLASS_HEBREW = (2),
+    GCPCLASS_LATIN = (1),
+    GCPCLASS_LATINNUMBER = (5),
+    GCPCLASS_LOCALNUMBER = (4),
+    GCPCLASS_LATINNUMERICSEPARATOR = (7),
+    GCPCLASS_LATINNUMERICTERMINATOR = (6),
+    GCPCLASS_NEUTRAL = (3),
+    GCPCLASS_NUMERICSEPARATOR = (8),
+    GCPCLASS_PREBOUNDLTR = (128),
+    GCPCLASS_PREBOUNDRTL = (64),
+    GCPCLASS_POSTBOUNDLTR = (32),
+    GCPCLASS_POSTBOUNDRTL = (16),
+    GCPGLYPH_LINKBEFORE = (32768),
+    GCPGLYPH_LINKAFTER = (16384),
+    TT_AVAILABLE = (1),
+    TT_ENABLED = (2),
+    CA_NEGATIVE = (1),
+    CA_LOG_FILTER = (2),
+    ILLUMINANT_DEVICE_DEFAULT = (0),
+    ILLUMINANT_A = (1),
+    ILLUMINANT_B = (2),
+    ILLUMINANT_C = (3),
+    ILLUMINANT_D50 = (4),
+    ILLUMINANT_D55 = (5),
+    ILLUMINANT_D65 = (6),
+    ILLUMINANT_D75 = (7),
+    ILLUMINANT_F2 = (8),
+    ILLUMINANT_TUNGSTEN = (1),
+    ILLUMINANT_DAYLIGHT = (3),
+    ILLUMINANT_FLUORESCENT = (8),
+    ILLUMINANT_NTSC = (3),
+    DI_APPBANDING = (1),
+    EMR_HEADER = (1),
+    ENHMETA_SIGNATURE = (1179469088),
+    ENM_CHANGE = (1),
+    ENM_CORRECTTEXT = (4194304),
+    ENM_DROPFILES = (1048576),
+    ENM_KEYEVENTS = (65536),
+    ENM_MOUSEEVENTS = (131072),
+    ENM_PROTECTED = (2097152),
+    ENM_REQUESTRESIZE = (262144),
+    ENM_SCROLL = (4),
+    ENM_SELCHANGE = (524288),
+    ENM_UPDATE = (2),
+    ENM_NONE = (0),
+    ES_DISABLENOSCROLL = (8192),
+    ES_EX_NOCALLOLEINIT = (16777216),
+    ES_NOIME = (524288),
+    ES_SAVESEL = (32768),
+    ES_SELFIME = (262144),
+    ES_SUNKEN = (16384),
+    ES_VERTICAL = (4194304),
+    ES_SELECTIONBAR = (16777216),
+    ECOOP_SET = (1),
+    ECOOP_OR = (2),
+    ECOOP_AND = (3),
+    ECOOP_XOR = (4),
+    ECO_AUTOWORDSELECTION = (1),
+    ECO_AUTOVSCROLL = (64),
+    ECO_AUTOHSCROLL = (128),
+    ECO_NOHIDESEL = (256),
+    ECO_READONLY = (2048),
+    ECO_WANTRETURN = (4096),
+    ECO_SAVESEL = (32768),
+    ECO_SELECTIONBAR = (16777216),
+    ECO_VERTICAL = (4194304),
+    SCF_WORD = (2),
+    SCF_SELECTION = (1),
+    SF_TEXT = (1),
+    SF_RTF = (2),
+    SF_RTFNOOBJS = (3),
+    SF_TEXTIZED = (4),
+    SFF_SELECTION = (32768),
+    SFF_PLAINRTF = (16384),
+    WB_CLASSIFY = (3),
+    WB_LEFTBREAK = (6),
+    WB_PREVBREAK = (6),
+    WB_MOVEWORDLEFT = (4),
+    WB_MOVEWORDPREV = (4),
+    WB_MOVEWORDRIGHT = (5),
+    WB_MOVEWORDNEXT = (5),
+    WB_RIGHTBREAK = (7),
+    WB_NEXTBREAK = (7),
+    PC_LEADING = (2),
+    PC_FOLLOWING = (1),
+    PC_DELIMITER = (4),
+    PC_OVERFLOW = (3),
+    WBF_WORDWRAP = (16),
+    WBF_WORDBREAK = (32),
+    WBF_OVERFLOW = (64),
+    WBF_LEVEL1 = (128),
+    WBF_LEVEL2 = (256),
+    WBF_CUSTOM = (512),
+    WBF_BREAKAFTER = (64),
+    WBF_BREAKLINE = (32),
+    WBF_ISWHITE = (16),
+    CFM_BOLD = (1),
+    CFM_COLOR = (1073741824),
+    CFM_FACE = (536870912),
+    CFM_ITALIC = (2),
+    CFM_OFFSET = (268435456),
+    CFM_PROTECTED = (16),
+    CFM_SIZE = (0x80000000),
+    CFM_STRIKEOUT = (8),
+    CFM_UNDERLINE = (4),
+    CFE_AUTOCOLOR = (1073741824),
+    CFE_BOLD = (1),
+    CFE_ITALIC = (2),
+    CFE_STRIKEOUT = (8),
+    CFE_UNDERLINE = (4),
+    CFE_PROTECTED = (16),
+    PFM_ALIGNMENT = (8),
+    PFM_NUMBERING = (32),
+    PFM_OFFSET = (4),
+    PFM_OFFSETINDENT = (0x80000000),
+    PFM_RIGHTINDENT = (2),
+    PFM_STARTINDENT = (1),
+    PFM_TABSTOPS = (16),
+    PFN_BULLET = (1),
+    PFA_LEFT = (1),
+    PFA_RIGHT = (2),
+    PFA_CENTER = (3),
+    SEL_EMPTY = (0),
+    SEL_TEXT = (1),
+    SEL_OBJECT = (2),
+    SEL_MULTICHAR = (4),
+    SEL_MULTIOBJECT = (8),
+}
+const {
+char* CF_RTF = ("Rich Text Format");
+char* CF_RETEXTOBJ = ("RichEdit Text and Objects");
+}
+enum : DWORD {
+    ODT_BUTTON = (4),
+    ODT_COMBOBOX = (3),
+    ODT_LISTBOX = (2),
+    ODT_LISTVIEW = (102),
+    ODT_MENU = (1),
+    ODT_STATIC = (5),
+    ODT_TAB = (101),
+    ODT_HEADER = (100),
+    ODA_DRAWENTIRE = (1),
+    ODA_FOCUS = (4),
+    ODA_SELECT = (2),
+    ODS_CHECKED = (8),
+    ODS_COMBOBOXEDIT = (4096),
+    ODS_DEFAULT = (32),
+    ODS_DISABLED = (4),
+    ODS_FOCUS = (16),
+    ODS_GRAYED = (2),
+    ODS_SELECTED = (1),
+}
+const {
+char* ANIMATE_CLASSW = ("SysAnimate32");
+char* HOTKEY_CLASSW = ("msctls_hotkey32");
+char* PROGRESS_CLASSW = ("msctls_progress32");
+char* STATUSCLASSNAMEW = ("msctls_statusbar32");
+char* TOOLBARCLASSNAMEW = ("ToolbarWindow32");
+char* TOOLTIPS_CLASSW = ("tooltips_class32");
+char* TRACKBAR_CLASSW = ("msctls_trackbar32");
+char* UPDOWN_CLASSW = ("msctls_updown32");
+char* WC_HEADERW = ("SysHeader32");
+char* WC_LISTVIEWW = ("SysListView32");
+char* WC_TABCONTROLW = ("SysTabControl32");
+char* WC_TREEVIEWW = ("SysTreeView32");
+}
+enum : DWORD {
+    CCS_ADJUSTABLE = (0x20),
+    CCS_BOTTOM = (0x3),
+    CCS_NODIVIDER = (0x40),
+    CCS_NOMOVEY = (0x2),
+    CCS_NOPARENTALIGN = (0x8),
+    CCS_NORESIZE = (0x4),
+    CCS_TOP = (0x1),
+}
+const {
+char* ANIMATE_CLASSA = ("SysAnimate32");
+char* HOTKEY_CLASSA = ("msctls_hotkey32");
+char* PROGRESS_CLASSA = ("msctls_progress32");
+char* STATUSCLASSNAMEA = ("msctls_statusbar32");
+char* TOOLBARCLASSNAMEA = ("ToolbarWindow32");
+char* TOOLTIPS_CLASSA = ("tooltips_class32");
+char* TRACKBAR_CLASSA = ("msctls_trackbar32");
+char* UPDOWN_CLASSA = ("msctls_updown32");
+char* WC_HEADERA = ("SysHeader32");
+char* WC_LISTVIEWA = ("SysListView32");
+char* WC_TABCONTROLA = ("SysTabControl32");
+char* WC_TREEVIEWA = ("SysTreeView32");
+char* ANIMATE_CLASS = (ANIMATE_CLASSA);
+char* HOTKEY_CLASS = (HOTKEY_CLASSA);
+char* PROGRESS_CLASS = (PROGRESS_CLASSA);
+char* STATUSCLASSNAME = (STATUSCLASSNAMEA);
+char* TOOLBARCLASSNAME = (TOOLBARCLASSNAMEA);
+char* TOOLTIPS_CLASS = (TOOLTIPS_CLASSA);
+char* TRACKBAR_CLASS = (TRACKBAR_CLASSA);
+char* UPDOWN_CLASS = (UPDOWN_CLASSA);
+char* WC_HEADER = (WC_HEADERA);
+char* WC_LISTVIEW = (WC_LISTVIEWA);
+char* WC_TABCONTROL = (WC_TABCONTROLA);
+char* WC_TREEVIEW = (WC_TREEVIEWA);
+}
+enum : DWORD {
+    HDS_BUTTONS = (2),
+    HDS_HIDDEN = (8),
+    HDS_HORZ = (0),
+    HDI_BITMAP = (16),
+    HDI_FORMAT = (4),
+    HDI_HEIGHT = (1),
+    HDI_LPARAM = (8),
+    HDI_TEXT = (2),
+    HDI_WIDTH = (1),
+    HDF_CENTER = (2),
+    HDF_LEFT = (0),
+    HDF_RIGHT = (1),
+    HDF_RTLREADING = (4),
+    HDF_BITMAP = (8192),
+    HDF_OWNERDRAW = (32768),
+    HDF_STRING = (16384),
+    HDF_JUSTIFYMASK = (3),
+    HHT_NOWHERE = (1),
+    HHT_ONDIVIDER = (4),
+    HHT_ONDIVOPEN = (8),
+    HHT_ONHEADER = (2),
+    HHT_TOLEFT = (2048),
+    HHT_TORIGHT = (1024),
+    HINST_COMMCTRL = -(1),
+    IDB_STD_LARGE_COLOR = (1),
+    IDB_STD_SMALL_COLOR = (0),
+    IDB_VIEW_LARGE_COLOR = (5),
+    IDB_VIEW_SMALL_COLOR = (4),
+    STD_COPY = (1),
+    STD_CUT = (0),
+    STD_DELETE = (5),
+    STD_FILENEW = (6),
+    STD_FILEOPEN = (7),
+    STD_FILESAVE = (8),
+    STD_FIND = (12),
+    STD_HELP = (11),
+    STD_PASTE = (2),
+    STD_PRINT = (14),
+    STD_PRINTPRE = (9),
+    STD_PROPERTIES = (10),
+    STD_REDOW = (4),
+    STD_REPLACE = (13),
+    STD_UNDO = (3),
+    VIEW_LARGEICONS = (0),
+    VIEW_SMALLICONS = (1),
+    VIEW_LIST = (2),
+    VIEW_DETAILS = (3),
+    VIEW_SORTNAME = (4),
+    VIEW_SORTSIZE = (5),
+    VIEW_SORTDATE = (6),
+    VIEW_SORTTYPE = (7),
+    TBSTYLE_ALTDRAG = (1024),
+    TBSTYLE_TOOLTIPS = (256),
+    TBSTYLE_WRAPABLE = (512),
+    TBSTYLE_BUTTON = (0),
+    TBSTYLE_CHECK = (2),
+    TBSTYLE_CHECKGROUP = (6),
+    TBSTYLE_GROUP = (4),
+    TBSTYLE_SEP = (1),
+    TBSTATE_CHECKED = (1),
+    TBSTATE_ENABLED = (4),
+    TBSTATE_HIDDEN = (8),
+    TBSTATE_INDETERMINATE = (16),
+    TBSTATE_PRESSED = (2),
+    TBSTATE_WRAP = (32),
+    TTS_ALWAYSTIP = (1),
+    TTS_NOPREFIX = (2),
+    TTF_IDISHWND = (1),
+    TTF_CENTERTIP = (2),
+    TTF_RTLREADING = (4),
+    TTF_SUBCLASS = (16),
+    TTDT_AUTOMATIC = (0),
+    TTDT_AUTOPOP = (2),
+    TTDT_INITIAL = (3),
+    TTDT_RESHOW = (1),
+    SBARS_SIZEGRIP = (256),
+    DL_MOVECURSOR = (3),
+    DL_COPYCURSOR = (2),
+    DL_STOPCURSOR = (1),
+    UDS_ALIGNLEFT = (8),
+    UDS_ALIGNRIGHT = (4),
+    UDS_ARROWKEYS = (32),
+    UDS_AUTOBUDDY = (16),
+    UDS_HORZ = (64),
+    UDS_NOTHOUSANDS = (128),
+    UDS_SETBUDDYINT = (2),
+    UDS_WRAP = (1),
+    UD_MAXVAL = (32767),
+    UD_MINVAL = -((32767)),
+    HOTKEYF_ALT = (4),
+    HOTKEYF_CONTROL = (2),
+    HOTKEYF_EXT = (8),
+    HOTKEYF_SHIFT = (1),
+    HKCOMB_A = (8),
+    HKCOMB_C = (4),
+    HKCOMB_CA = (64),
+    HKCOMB_NONE = (1),
+    HKCOMB_S = (2),
+    HKCOMB_SA = (32),
+    HKCOMB_SC = (16),
+    HKCOMB_SCA = (128),
+    TBS_HORZ = (0),
+    TBS_VERT = (2),
+    TBS_AUTOTICKS = (1),
+    TBS_NOTICKS = (16),
+    TBS_TOP = (4),
+    TBS_BOTTOM = (0),
+    TBS_LEFT = (4),
+    TBS_RIGHT = (0),
+    TBS_BOTH = (8),
+    TBS_ENABLESELRANGE = (32),
+    TBS_FIXEDLENGTH = (64),
+    TBS_NOTHUMB = (128),
+    TB_BOTTOM = (7),
+    TB_ENDTRACK = (8),
+    TB_LINEDOWN = (1),
+    TB_LINEUP = (0),
+    TB_PAGEDOWN = (3),
+    TB_PAGEUP = (2),
+    TB_THUMBPOSITION = (4),
+    TB_THUMBTRACK = (5),
+    TB_TOP = (6),
+    LVS_ALIGNLEFT = (2048),
+    LVS_ALIGNTOP = (0),
+    LVS_AUTOARRANGE = (256),
+    LVS_EDITLABELS = (512),
+    LVS_ICON = (0),
+    LVS_LIST = (3),
+    LVS_NOCOLUMNHEADER = (16384),
+    LVS_NOLABELWRAP = (128),
+    LVS_NOSCROLL = (8192),
+    LVS_NOSORTHEADER = (32768),
+    LVS_OWNERDRAWFIXED = (1024),
+    LVS_REPORT = (1),
+    LVS_SHAREIMAGELISTS = (64),
+    LVS_SHOWSELALWAYS = (8),
+    LVS_SINGLESEL = (4),
+    LVS_SMALLICON = (2),
+    LVS_SORTASCENDING = (16),
+    LVS_SORTDESCENDING = (32),
+    LVS_TYPESTYLEMASK = (64512),
+    LVSIL_NORMAL = (0),
+    LVSIL_SMALL = (1),
+    LVSIL_STATE = (2),
+    LVIS_CUT = (4),
+    LVIS_DROPHILITED = (8),
+    LVIS_FOCUSED = (1),
+    LVIS_SELECTED = (2),
+    LVIS_OVERLAYMASK = (3840),
+    LVIS_STATEIMAGEMASK = (61440),
+}
+const {
+    LPWSTR LPSTR_TEXTCALLBACKW = cast(LPWSTR)(-(1));
+    LPSTR  LPSTR_TEXTCALLBACKA = cast(LPSTR)(-(1));
+    version(Win32SansUnicode){
+        alias LPSTR_TEXTCALLBACKA LPSTR_TEXTCALLBACK;
+    }
+    else{
+        alias LPSTR_TEXTCALLBACKW LPSTR_TEXTCALLBACK;
+    }
+}
+enum : DWORD {
+    LVIF_TEXT = (1),
+    LVIF_IMAGE = (2),
+    LVIF_PARAM = (4),
+    LVIF_STATE = (8),
+    LVIF_DI_SETITEM = (4096),
+    LVNI_ABOVE = (256),
+    LVNI_ALL = (0),
+    LVNI_BELOW = (512),
+    LVNI_TOLEFT = (1024),
+    LVNI_TORIGHT = (2048),
+    LVNI_CUT = (4),
+    LVNI_DROPHILITED = (8),
+    LVNI_FOCUSED = (1),
+    LVNI_SELECTED = (2),
+    LVFI_PARAM = (1),
+    LVFI_PARTIAL = (8),
+    LVFI_STRING = (2),
+    LVFI_WRAP = (32),
+    LVFI_NEARESTXY = (64),
+    LVHT_ABOVE = (8),
+    LVHT_BELOW = (16),
+    LVHT_NOWHERE = (1),
+    LVHT_ONITEMICON = (2),
+    LVHT_ONITEMLABEL = (4),
+    LVHT_ONITEMSTATEICON = (8),
+    LVHT_TOLEFT = (64),
+    LVHT_TORIGHT = (32),
+    LVCF_FMT = (1),
+    LVCF_SUBITEM = (8),
+    LVCF_TEXT = (4),
+    LVCF_WIDTH = (2),
+    LVCFMT_CENTER = (2),
+    LVCFMT_LEFT = (0),
+    LVCFMT_RIGHT = (1),
+    LVIR_BOUNDS = (0),
+    LVIR_ICON = (1),
+    LVIR_LABEL = (2),
+    LVIR_SELECTBOUNDS = (3),
+    LVA_ALIGNLEFT = (1),
+    LVA_ALIGNTOP = (2),
+    LVA_DEFAULT = (0),
+    LVA_SNAPTOGRID = (5),
+    LVSCW_AUTOSIZE = -((1)),
+    LVSCW_AUTOSIZE_USEHEADER = -((2)),
+    TVS_DISABLEDRAGDROP = (16),
+    TVS_EDITLABELS = (8),
+    TVS_HASBUTTONS = (1),
+    TVS_HASLINES = (2),
+    TVS_LINESATROOT = (4),
+    TVS_SHOWSELALWAYS = (32),
+    TVIS_BOLD = (16),
+    TVIS_CUT = (4),
+    TVIS_DROPHILITED = (8),
+    TVIS_EXPANDED = (32),
+    TVIS_EXPANDEDONCE = (64),
+    TVIS_FOCUSED = (1),
+    TVIS_OVERLAYMASK = (3840),
+    TVIS_SELECTED = (2),
+    TVIS_STATEIMAGEMASK = (61440),
+    TVIS_USERMASK = (61440),
+    TVIF_CHILDREN = (64),
+    TVIF_HANDLE = (16),
+    TVIF_IMAGE = (2),
+    TVIF_PARAM = (4),
+    TVIF_SELECTEDIMAGE = (32),
+    TVIF_STATE = (8),
+    TVIF_TEXT = (1),
+    I_CHILDRENCALLBACK = -((1)),
+    I_IMAGECALLBACK = -((1)),
+}
+
+struct TREEITEM
+{
+}
+
+alias TREEITEM* HTREEITEM;
+alias TREEITEM TTREEITEM;
+alias TREEITEM* PTREEITEM;
+enum : DWORD {
+    TVI_ROOT = (0xFFFF0000),
+    TVI_FIRST = (0xFFFF0001),
+    TVI_LAST = (0xFFFF0002),
+    TVI_SORT = (0xFFFF0003),
+    TVHT_ABOVE = (256),
+    TVHT_BELOW = (512),
+    TVHT_NOWHERE = (1),
+    TVHT_ONITEM = (70),
+    TVHT_ONITEMBUTTON = (16),
+    TVHT_ONITEMICON = (2),
+    TVHT_ONITEMINDENT = (8),
+    TVHT_ONITEMLABEL = (4),
+    TVHT_ONITEMRIGHT = (32),
+    TVHT_ONITEMSTATEICON = (64),
+    TVHT_TOLEFT = (2048),
+    TVHT_TORIGHT = (1024),
+    TVE_COLLAPSE = (1),
+    TVE_COLLAPSERESET = (32768),
+    TVE_EXPAND = (2),
+    TVE_TOGGLE = (3),
+    TVSIL_NORMAL = (0),
+    TVSIL_STATE = (2),
+    TVGN_CARET = (9),
+    TVGN_CHILD = (4),
+    TVGN_DROPHILITE = (8),
+    TVGN_FIRSTVISIBLE = (5),
+    TVGN_NEXT = (1),
+    TVGN_NEXTVISIBLE = (6),
+    TVGN_PARENT = (3),
+    TVGN_PREVIOUS = (2),
+    TVGN_PREVIOUSVISIBLE = (7),
+    TVGN_ROOT = (0),
+    TVC_BYKEYBOARD = (2),
+    TVC_BYMOUSE = (1),
+    TVC_UNKNOWN = (0),
+    TCS_BUTTONS = (256),
+    TCS_FIXEDWIDTH = (1024),
+    TCS_FOCUSNEVER = (32768),
+    TCS_FOCUSONBUTTONDOWN = (4096),
+    TCS_FORCEICONLEFT = (16),
+    TCS_FORCELABELLEFT = (32),
+    TCS_MULTILINE = (512),
+    TCS_OWNERDRAWFIXED = (8192),
+    TCS_RAGGEDRIGHT = (2048),
+    TCS_RIGHTJUSTIFY = (0),
+    TCS_SINGLELINE = (0),
+    TCS_TABS = (0),
+    TCS_TOOLTIPS = (16384),
+    TCIF_TEXT = (1),
+    TCIF_IMAGE = (2),
+    TCIF_PARAM = (8),
+    TCIF_RTLREADING = (4),
+    TCHT_NOWHERE = (1),
+    TCHT_ONITEM = (6),
+    TCHT_ONITEMICON = (2),
+    TCHT_ONITEMLABEL = (4),
+    ACS_AUTOPLAY = (4),
+    ACS_CENTER = (1),
+    ACS_TRANSPARENT = (2),
+    DIALOPTION_BILLING = (64),
+    DIALOPTION_QUIET = (128),
+    DIALOPTION_DIALTONE = (256),
+    MDMVOLFLAG_LOW = (1),
+    MDMVOLFLAG_MEDIUM = (2),
+    MDMVOLFLAG_HIGH = (4),
+    MDMVOL_LOW = (0),
+    MDMVOL_MEDIUM = (1),
+    MDMVOL_HIGH = (2),
+    MDMSPKRFLAG_OFF = (1),
+    MDMSPKRFLAG_DIAL = (2),
+    MDMSPKRFLAG_ON = (4),
+    MDMSPKRFLAG_CALLSETUP = (8),
+    MDMSPKR_OFF = (0),
+    MDMSPKR_DIAL = (1),
+    MDMSPKR_ON = (2),
+    MDMSPKR_CALLSETUP = (3),
+    MDM_BLIND_DIAL = (512),
+    MDM_CCITT_OVERRIDE = (64),
+    MDM_CELLULAR = (8),
+    MDM_COMPRESSION = (1),
+    MDM_ERROR_CONTROL = (2),
+    MDM_FLOWCONTROL_HARD = (16),
+    MDM_FLOWCONTROL_SOFT = (32),
+    MDM_FORCED_EC = (4),
+    MDM_SPEED_ADJUST = (128),
+    MDM_TONE_DIAL = (256),
+    MDM_V23_OVERRIDE = (1024),
+    LANG_BULGARIAN = (2),
+    LANG_CHINESE = (4),
+    LANG_CROATIAN = (26),
+    LANG_CZECH = (5),
+    LANG_DANISH = (6),
+    LANG_DUTCH = (19),
+    LANG_ENGLISH = (9),
+    LANG_FINNISH = (11),
+    LANG_FRENCH = (12),
+    LANG_GERMAN = (7),
+    LANG_GREEK = (8),
+    LANG_HUNGARIAN = (14),
+    LANG_ICELANDIC = (15),
+    LANG_ITALIAN = (16),
+    LANG_JAPANESE = (17),
+    LANG_KOREAN = (18),
+    LANG_NEUTRAL = (0),
+    LANG_NORWEGIAN = (20),
+    LANG_POLISH = (21),
+    LANG_PORTUGUESE = (22),
+    LANG_ROMANIAN = (24),
+    LANG_RUSSIAN = (25),
+    LANG_SLOVAK = (27),
+    LANG_SLOVENIAN = (36),
+    LANG_SPANISH = (10),
+    LANG_SWEDISH = (29),
+    LANG_TURKISH = (31),
+    SUBLANG_CHINESE_SIMPLIFIED = (2),
+    SUBLANG_CHINESE_TRADITIONAL = (1),
+    SUBLANG_CHINESE_HONGKONG = (3),
+    SUBLANG_CHINESE_SINGAPORE = (4),
+    SUBLANG_DEFAULT = (1),
+    SUBLANG_DUTCH = (1),
+    SUBLANG_DUTCH_BELGIAN = (2),
+    SUBLANG_ENGLISH_AUS = (3),
+    SUBLANG_ENGLISH_CAN = (4),
+    SUBLANG_ENGLISH_EIRE = (6),
+    SUBLANG_ENGLISH_NZ = (5),
+    SUBLANG_ENGLISH_UK = (2),
+    SUBLANG_ENGLISH_US = (1),
+    SUBLANG_FRENCH = (1),
+    SUBLANG_FRENCH_BELGIAN = (2),
+    SUBLANG_FRENCH_CANADIAN = (3),
+    SUBLANG_FRENCH_SWISS = (4),
+    SUBLANG_GERMAN = (1),
+    SUBLANG_GERMAN_AUSTRIAN = (3),
+    SUBLANG_GERMAN_SWISS = (2),
+    SUBLANG_ITALIAN = (1),
+    SUBLANG_ITALIAN_SWISS = (2),
+    SUBLANG_NEUTRAL = (0),
+    SUBLANG_NORWEGIAN_BOKMAL = (1),
+    SUBLANG_NORWEGIAN_NYNORSK = (2),
+    SUBLANG_PORTUGUESE = (2),
+    SUBLANG_PORTUGUESE_BRAZILIAN = (1),
+    SUBLANG_SPANISH = (1),
+    SUBLANG_SPANISH_MEXICAN = (2),
+    SUBLANG_SPANISH_MODERN = (3),
+    SUBLANG_SYS_DEFAULT = (2),
+    NLS_VALID_LOCALE_MASK = (1048575),
+    SORT_DEFAULT = (0),
+    SORT_JAPANESE_XJIS = (0),
+    SORT_JAPANESE_UNICODE = (1),
+    SORT_CHINESE_BIG5 = (0),
+    SORT_CHINESE_UNICODE = (1),
+    SORT_KOREAN_KSC = (0),
+    SORT_KOREAN_UNICODE = (1),
+    PROCESSOR_INTEL_386 = (386),
+    PROCESSOR_INTEL_486 = (486),
+    PROCESSOR_INTEL_PENTIUM = (586),
+    PROCESSOR_MIPS_R4000 = (4000),
+    PROCESSOR_ALPHA_21064 = (21064),
+    COMPRESSION_FORMAT_NONE = (0),
+    COMPRESSION_FORMAT_DEFAULT = (1),
+    COMPRESSION_FORMAT_LZNT1 = (2),
+    TAPE_DRIVE_COMPRESSION = (131072),
+    TAPE_DRIVE_ECC = (65536),
+    TAPE_DRIVE_ERASE_BOP_ONLY = (64),
+    TAPE_DRIVE_ERASE_LONG = (32),
+    TAPE_DRIVE_ERASE_IMMEDIATE = (128),
+    TAPE_DRIVE_ERASE_SHORT = (16),
+    TAPE_DRIVE_FIXED = (1),
+    TAPE_DRIVE_FIXED_BLOCK = (1024),
+    TAPE_DRIVE_INITIATOR = (4),
+    TAPE_DRIVE_PADDING = (262144),
+    TAPE_DRIVE_GET_ABSOLUTE_BLK = (1048576),
+    TAPE_DRIVE_GET_LOGICAL_BLK = (2097152),
+    TAPE_DRIVE_REPORT_SMKS = (524288),
+    TAPE_DRIVE_SELECT = (2),
+    TAPE_DRIVE_SET_EOT_WZ_SIZE = (4194304),
+    TAPE_DRIVE_TAPE_CAPACITY = (256),
+    TAPE_DRIVE_TAPE_REMAINING = (512),
+    TAPE_DRIVE_VARIABLE_BLOCK = (2048),
+    TAPE_DRIVE_WRITE_PROTECT = (4096),
+    TAPE_DRIVE_ABS_BLK_IMMED = -((2147475456)),
+    TAPE_DRIVE_ABSOLUTE_BLK = -((2147479552)),
+    TAPE_DRIVE_END_OF_DATA = -((2147418112)),
+    TAPE_DRIVE_FILEMARKS = -((2147221504)),
+    TAPE_DRIVE_LOAD_UNLOAD = -((2147483647)),
+    TAPE_DRIVE_LOAD_UNLD_IMMED = -((2147483616)),
+    TAPE_DRIVE_LOCK_UNLOCK = -((2147483644)),
+    TAPE_DRIVE_LOCK_UNLK_IMMED = -((2147483520)),
+    TAPE_DRIVE_LOG_BLK_IMMED = -((2147450880)),
+    TAPE_DRIVE_LOGICAL_BLK = -((2147467264)),
+    TAPE_DRIVE_RELATIVE_BLKS = -((2147352576)),
+    TAPE_DRIVE_REVERSE_POSITION = -((2143289344)),
+    TAPE_DRIVE_REWIND_IMMEDIATE = -((2147483640)),
+    TAPE_DRIVE_SEQUENTIAL_FMKS = -((2146959360)),
+    TAPE_DRIVE_SEQUENTIAL_SMKS = -((2145386496)),
+    TAPE_DRIVE_SET_BLOCK_SIZE = -((2147483632)),
+    TAPE_DRIVE_SET_COMPRESSION = -((2147483136)),
+    TAPE_DRIVE_SET_ECC = -((2147483392)),
+    TAPE_DRIVE_SET_PADDING = -((2147482624)),
+    TAPE_DRIVE_SET_REPORT_SMKS = -((2147481600)),
+    TAPE_DRIVE_SETMARKS = -((2146435072)),
+    TAPE_DRIVE_SPACE_IMMEDIATE = -((2139095040)),
+    TAPE_DRIVE_TENSION = -((2147483646)),
+    TAPE_DRIVE_TENSION_IMMED = -((2147483584)),
+    TAPE_DRIVE_WRITE_FILEMARKS = -((2113929216)),
+    TAPE_DRIVE_WRITE_LONG_FMKS = -((2013265920)),
+    TAPE_DRIVE_WRITE_MARK_IMMED = -((1879048192)),
+    TAPE_DRIVE_WRITE_SETMARKS = -((2130706432)),
+    TAPE_DRIVE_WRITE_SHORT_FMKS = -((2080374784)),
+    STANDARD_RIGHTS_REQUIRED = (0xf0000),
+    STANDARD_RIGHTS_WRITE = (0x20000),
+    STANDARD_RIGHTS_READ = (0x20000),
+    STANDARD_RIGHTS_EXECUTE = (0x20000),
+    STANDARD_RIGHTS_ALL = (0x1f0000),
+    SPECIFIC_RIGHTS_ALL = (0xffff),
+    MAXIMUM_ALLOWED = (0x2000000),
+    GENERIC_ALL = (0x10000000),
+    SECURITY_NULL_RID = (0),
+    SECURITY_WORLD_RID = (0),
+    SECURITY_LOCAL_RID = (0),
+    SECURITY_CREATOR_OWNER_RID = (0),
+    SECURITY_CREATOR_GROUP_RID = (0x1),
+    SECURITY_DIALUP_RID = (0x1),
+    SECURITY_NETWORK_RID = (0x2),
+    SECURITY_BATCH_RID = (0x3),
+    SECURITY_INTERACTIVE_RID = (0x4),
+    SECURITY_LOGON_IDS_RID = (0x5),
+    SECURITY_LOGON_IDS_RID_COUNT = (0x3),
+    SECURITY_SERVICE_RID = (0x6),
+    SECURITY_LOCAL_SYSTEM_RID = (0x12),
+    SECURITY_BUILTIN_DOMAIN_RID = (0x20),
+    DOMAIN_USER_RID_ADMIN = (0x1f4),
+    DOMAIN_USER_RID_GUEST = (0x1f5),
+    DOMAIN_GROUP_RID_ADMINS = (0x200),
+    DOMAIN_GROUP_RID_USERS = (0x201),
+    DOMAIN_ALIAS_RID_ADMINS = (0x220),
+    DOMAIN_ALIAS_RID_USERS = (0x221),
+    DOMAIN_ALIAS_RID_GUESTS = (0x222),
+    DOMAIN_ALIAS_RID_POWER_USERS = (0x223),
+    DOMAIN_ALIAS_RID_ACCOUNT_OPS = (0x224),
+    DOMAIN_ALIAS_RID_SYSTEM_OPS = (0x225),
+    DOMAIN_ALIAS_RID_PRINT_OPS = (0x226),
+    DOMAIN_ALIAS_RID_BACKUP_OPS = (0x227),
+    DOMAIN_ALIAS_RID_REPLICATOR = (0x228),
+    SE_GROUP_MANDATORY = (0x1),
+    SE_GROUP_ENABLED_BY_DEFAULT = (0x2),
+    SE_GROUP_ENABLED = (0x4),
+    SE_GROUP_OWNER = (0x8),
+    SE_GROUP_LOGON_ID = (0xc0000000),
+    ACL_REVISION = (2),
+    ACCESS_ALLOWED_ACE_TYPE = (0x0),
+    ACCESS_DENIED_ACE_TYPE = (0x1),
+    SYSTEM_AUDIT_ACE_TYPE = (0x2),
+    SYSTEM_ALARM_ACE_TYPE = (0x3),
+    OBJECT_INHERIT_ACE = (0x1),
+    CONTAINER_INHERIT_ACE = (0x2),
+    NO_PROPAGATE_INHERIT_ACE = (0x4),
+    INHERIT_ONLY_ACE = (0x8),
+    SUCCESSFUL_ACCESS_ACE_FLAG = (0x40),
+    FAILED_ACCESS_ACE_FLAG = (0x80),
+    SECURITY_DESCRIPTOR_MIN_LENGTH = (20),
+    SE_OWNER_DEFAULTED = (1),
+    SE_GROUP_DEFAULTED = (2),
+    SE_DACL_PRESENT = (4),
+    SE_DACL_DEFAULTED = (8),
+    SE_SACL_PRESENT = (16),
+    SE_SACL_DEFAULTED = (32),
+    SE_SELF_RELATIVE = (32768),
+    SE_PRIVILEGE_ENABLED_BY_DEFAULT = (0x1),
+    SE_PRIVILEGE_ENABLED = (0x2),
+    SE_PRIVILEGE_USED_FOR_ACCESS = (0x80000000),
+    PRIVILEGE_SET_ALL_NECESSARY = (0x1),
+    OFN_ALLOWMULTISELECT = (0x200),
+    OFN_CREATEPROMPT = (0x2000),
+    OFN_ENABLEHOOK = (0x20),
+    OFN_ENABLETEMPLATE = (0x40),
+    OFN_ENABLETEMPLATEHANDLE = (0x80),
+    OFN_EXPLORER = (0x80000),
+    OFN_EXTENSIONDIFFERENT = (0x400),
+    OFN_FILEMUSTEXIST = (0x1000),
+    OFN_HIDEREADONLY = (0x4),
+    OFN_LONGNAMES = (0x200000),
+    OFN_NOCHANGEDIR = (0x8),
+    OFN_NODEREFERENCELINKS = (0x100000),
+    OFN_NOLONGNAMES = (0x40000),
+    OFN_NONETWORKBUTTON = (0x20000),
+    OFN_NOREADONLYRETURN = (0x8000),
+    OFN_NOTESTFILECREATE = (0x10000),
+    OFN_NOVALIDATE = (0x100),
+    OFN_OVERWRITEPROMPT = (0x2),
+    OFN_PATHMUSTEXIST = (0x800),
+    OFN_READONLY = (0x1),
+    OFN_SHAREAWARE = (0x4000),
+    OFN_SHOWHELP = (0x10),
+    OFN_SHAREFALLTHROUGH = (0x2),
+    OFN_SHARENOWARN = (0x1),
+    OFN_SHAREWARN = (0),
+    CDN_INITDONE = (0xfffffda7),
+    CDN_SELCHANGE = (0xfffffda6),
+    CDN_FOLDERCHANGE = (0xfffffda5),
+    CDN_SHAREVIOLATION = (0xfffffda4),
+    CDN_HELP = (0xfffffda3),
+    CDN_FILEOK = (0xfffffda2),
+    CDN_TYPECHANGE = (0xfffffda1),
+    CDM_GETFILEPATH = (0x465),
+    CDM_GETFOLDERIDLIST = (0x467),
+    CDM_GETFOLDERPATH = (0x466),
+    CDM_GETSPEC = (0x464),
+    CDM_HIDECONTROL = (0x469),
+    CDM_SETCONTROLTEXT = (0x468),
+    CDM_SETDEFEXT = (0x46a),
+    CC_ENABLEHOOK = (0x10),
+    CC_ENABLETEMPLATE = (0x20),
+    CC_ENABLETEMPLATEHANDLE = (0x40),
+    CC_FULLOPEN = (0x2),
+    CC_PREVENTFULLOPEN = (0x4),
+    CC_RGBINIT = (0x1),
+    CC_SHOWHELP = (0x8),
+    CC_SOLIDCOLOR = (0x80),
+    FR_DIALOGTERM = (0x40),
+    FR_DOWN = (0x1),
+    FR_ENABLEHOOK = (0x100),
+    FR_ENABLETEMPLATE = (0x200),
+    FR_ENABLETEMPLATEHANDLE = (0x2000),
+    FR_FINDNEXT = (0x8),
+    FR_HIDEUPDOWN = (0x4000),
+    FR_HIDEMATCHCASE = (0x8000),
+    FR_HIDEWHOLEWORD = (0x10000),
+    FR_MATCHCASE = (0x4),
+    FR_NOMATCHCASE = (0x800),
+    FR_NOUPDOWN = (0x400),
+    FR_NOWHOLEWORD = (0x1000),
+    FR_REPLACE = (0x10),
+    FR_REPLACEALL = (0x20),
+    FR_SHOWHELP = (0x80),
+    FR_WHOLEWORD = (0x2),
+    CF_APPLY = (0x200),
+    CF_ANSIONLY = (0x400),
+    CF_BOTH = (0x3),
+    CF_TTONLY = (0x40000),
+    CF_EFFECTS = (0x100),
+    CF_ENABLEHOOK = (0x8),
+    CF_ENABLETEMPLATE = (0x10),
+    CF_ENABLETEMPLATEHANDLE = (0x20),
+    CF_FIXEDPITCHONLY = (0x4000),
+    CF_FORCEFONTEXIST = (0x10000),
+    CF_INITTOLOGFONTSTRUCT = (0x40),
+    CF_LIMITSIZE = (0x2000),
+    CF_NOOEMFONTS = (0x800),
+    CF_NOFACESEL = (0x80000),
+    CF_NOSCRIPTSEL = (0x800000),
+    CF_NOSTYLESEL = (0x100000),
+    CF_NOSIZESEL = (0x200000),
+    CF_NOSIMULATIONS = (0x1000),
+    CF_NOVECTORFONTS = (0x800),
+    CF_NOVERTFONTS = (0x1000000),
+    CF_PRINTERFONTS = (0x2),
+    CF_SCALABLEONLY = (0x20000),
+    CF_SCREENFONTS = (0x1),
+    CF_SCRIPTSONLY = (0x400),
+    CF_SELECTSCRIPT = (0x400000),
+    CF_SHOWHELP = (0x4),
+    CF_USESTYLE = (0x80),
+    CF_WYSIWYG = (0x8000),
+    BOLD_FONTTYPE = (0x100),
+    ITALIC_FONTTYPE = (0x200),
+    PRINTER_FONTTYPE = (0x4000),
+    REGULAR_FONTTYPE = (0x400),
+    SCREEN_FONTTYPE = (0x2000),
+    SIMULATED_FONTTYPE = (0x8000),
+}
+const {
+char* COLOROKSTRINGW = ("commdlg_ColorOK");
+char* FILEOKSTRINGW = ("commdlg_FileNameOK");
+char* FINDMSGSTRINGW = ("commdlg_FindReplace");
+char* HELPMSGSTRINGW = ("commdlg_help");
+char* LBSELCHSTRINGW = ("commdlg_LBSelChangedNotify");
+char* SETRGBSTRINGW = ("commdlg_SetRGBColor");
+char* SHAREVISTRINGW = ("commdlg_ShareViolation");
+char* COLOROKSTRINGA = ("commdlg_ColorOK");
+char* FILEOKSTRINGA = ("commdlg_FileNameOK");
+char* FINDMSGSTRINGA = ("commdlg_FindReplace");
+char* HELPMSGSTRINGA = ("commdlg_help");
+char* LBSELCHSTRINGA = ("commdlg_LBSelChangedNotify");
+char* SETRGBSTRINGA = ("commdlg_SetRGBColor");
+char* SHAREVISTRINGA = ("commdlg_ShareViolation");
+char* COLOROKSTRING = (COLOROKSTRINGA);
+char* FILEOKSTRING = (FILEOKSTRINGA);
+char* FINDMSGSTRING = (FINDMSGSTRINGA);
+char* HELPMSGSTRING = (HELPMSGSTRINGA);
+char* LBSELCHSTRING = (LBSELCHSTRINGA);
+char* SETRGBSTRING = (SETRGBSTRINGA);
+char* SHAREVISTRING = (SHAREVISTRINGA);
+}
+
+const {
+HWND HWND_DESKTOP = cast(HWND) 0;
+HWND HWND_BOTTOM = cast(HWND) 1;
+HWND HWND_NOTOPMOST = cast(HWND) -2;
+HWND HWND_TOP = cast(HWND) 0;
+HWND HWND_TOPMOST = cast(HWND) -1;
+HWND HWND_BROADCAST = cast(HWND) 0xFFFF;
+}
+
+enum : DWORD {
+    CD_LBSELCHANGE = (0),
+    CD_LBSELADD = (2),
+    CD_LBSELSUB = (1),
+    CD_LBSELNOITEMS = -((1)),
+    DN_DEFAULTPRN = (1),
+    PD_ALLPAGES = (0),
+    PD_COLLATE = (16),
+    PD_DISABLEPRINTTOFILE = (524288),
+    PD_ENABLEPRINTHOOK = (4096),
+    PD_ENABLEPRINTTEMPLATE = (16384),
+    PD_ENABLEPRINTTEMPLATEHANDLE = (65536),
+    PD_ENABLESETUPHOOK = (8192),
+    PD_ENABLESETUPTEMPLATE = (32768),
+    PD_ENABLESETUPTEMPLATEHANDLE = (131072),
+    PD_HIDEPRINTTOFILE = (1048576),
+    PD_NOPAGENUMS = (8),
+    PD_NOSELECTION = (4),
+    PD_NOWARNING = (128),
+    PD_PAGENUMS = (2),
+    PD_PRINTSETUP = (64),
+    PD_PRINTTOFILE = (32),
+    PD_RETURNDC = (256),
+    PD_RETURNDEFAULT = (1024),
+    PD_RETURNIC = (512),
+    PD_SELECTION = (1),
+    PD_SHOWHELP = (2048),
+    PD_USEDEVMODECOPIES = (262144),
+    PD_USEDEVMODECOPIESANDCOLLATE = (262144),
+    PSD_DEFAULTMINMARGINS = (0),
+    PSD_DISABLEMARGINS = (16),
+    PSD_DISABLEORIENTATION = (256),
+    PSD_DISABLEPAGEPAINTING = (524288),
+    PSD_DISABLEPAPER = (512),
+    PSD_DISABLEPRINTER = (32),
+    PSD_ENABLEPAGEPAINTHOOK = (262144),
+    PSD_ENABLEPAGESETUPHOOK = (8192),
+    PSD_ENABLEPAGESETUPTEMPLATE = (32768),
+    PSD_ENABLEPAGESETUPTEMPLATEHANDLE = (131072),
+    PSD_INHUNDREDTHSOFMILLIMETERS = (8),
+    PSD_INTHOUSANDTHSOFINCHES = (4),
+    PSD_INWININIINTLMEASURE = (0),
+    PSD_MARGINS = (2),
+    PSD_MINMARGINS = (1),
+    PSD_NOWARNING = (128),
+    PSD_RETURNDEFAULT = (1024),
+    PSD_SHOWHELP = (2048),
+    SW_OTHERUNZOOM = (4),
+    SW_OTHERZOOM = (2),
+    SW_PARENTCLOSING = (1),
+    SW_PARENTOPENING = (3),
+    VK_LBUTTON = (1),
+    VK_RBUTTON = (2),
+    VK_CANCEL = (3),
+    VK_MBUTTON = (4),
+    VK_BACK = (8),
+    VK_TAB = (9),
+    VK_CLEAR = (12),
+    VK_RETURN = (13),
+    VK_SHIFT = (16),
+    VK_CONTROL = (17),
+    VK_MENU = (18),
+    VK_PAUSE = (19),
+    VK_CAPITAL = (20),
+    VK_ESCAPE = (27),
+    VK_SPACE = (32),
+    VK_PRIOR = (33),
+    VK_NEXT = (34),
+    VK_END = (35),
+    VK_HOME = (36),
+    VK_LEFT = (37),
+    VK_UP = (38),
+    VK_RIGHT = (39),
+    VK_DOWN = (40),
+    VK_SELECT = (41),
+    VK_PRINT = (42),
+    VK_EXECUTE = (43),
+    VK_SNAPSHOT = (44),
+    VK_INSERT = (45),
+    VK_DELETE = (46),
+    VK_HELP = (47),
+    VK_0 = (48),
+    VK_1 = (49),
+    VK_2 = (50),
+    VK_3 = (51),
+    VK_4 = (52),
+    VK_5 = (53),
+    VK_6 = (54),
+    VK_7 = (55),
+    VK_8 = (56),
+    VK_9 = (57),
+    VK_A = (65),
+    VK_B = (66),
+    VK_C = (67),
+    VK_D = (68),
+    VK_E = (69),
+    VK_F = (70),
+    VK_G = (71),
+    VK_H = (72),
+    VK_I = (73),
+    VK_J = (74),
+    VK_K = (75),
+    VK_L = (76),
+    VK_M = (77),
+    VK_N = (78),
+    VK_O = (79),
+    VK_P = (80),
+    VK_Q = (81),
+    VK_R = (82),
+    VK_S = (83),
+    VK_T = (84),
+    VK_U = (85),
+    VK_V = (86),
+    VK_W = (87),
+    VK_X = (88),
+    VK_Y = (89),
+    VK_Z = (90),
+    VK_NUMPAD0 = (96),
+    VK_NUMPAD1 = (97),
+    VK_NUMPAD2 = (98),
+    VK_NUMPAD3 = (99),
+    VK_NUMPAD4 = (100),
+    VK_NUMPAD5 = (101),
+    VK_NUMPAD6 = (102),
+    VK_NUMPAD7 = (103),
+    VK_NUMPAD8 = (104),
+    VK_NUMPAD9 = (105),
+    VK_MULTIPLY = (106),
+    VK_ADD = (107),
+    VK_SEPARATOR = (108),
+    VK_SUBTRACT = (109),
+    VK_DECIMAL = (110),
+    VK_DIVIDE = (111),
+    VK_F1 = (112),
+    VK_F2 = (113),
+    VK_F3 = (114),
+    VK_F4 = (115),
+    VK_F5 = (116),
+    VK_F6 = (117),
+    VK_F7 = (118),
+    VK_F8 = (119),
+    VK_F9 = (120),
+    VK_F10 = (121),
+    VK_F11 = (122),
+    VK_F12 = (123),
+    VK_F13 = (124),
+    VK_F14 = (125),
+    VK_F15 = (126),
+    VK_F16 = (127),
+    VK_F17 = (128),
+    VK_F18 = (129),
+    VK_F19 = (130),
+    VK_F20 = (131),
+    VK_F21 = (132),
+    VK_F22 = (133),
+    VK_F23 = (134),
+    VK_F24 = (135),
+    VK_NUMLOCK = (144),
+    VK_SCROLL = (145),
+    VK_LSHIFT = (160),
+    VK_LCONTROL = (162),
+    VK_LMENU = (164),
+    VK_RSHIFT = (161),
+    VK_RCONTROL = (163),
+    VK_RMENU = (165),
+    VK_PROCESSKEY = (229),
+    KF_ALTDOWN = (8192),
+    KF_DLGMODE = (2048),
+    KF_EXTENDED = (256),
+    KF_MENUMODE = (4096),
+    KF_REPEAT = (16384),
+    KF_UP = (32768),
+    KL_NAMELENGTH = (9),
+    WA_ACTIVE = (1),
+    WA_CLICKACTIVE = (2),
+    WA_INACTIVE = (0),
+    PWR_CRITICALRESUME = (3),
+    PWR_SUSPENDREQUEST = (1),
+    PWR_SUSPENDRESUME = (2),
+    PWR_FAIL = -((1)),
+    PWR_OK = (1),
+    NF_QUERY = (3),
+    NF_REQUERY = (4),
+    NFR_ANSI = (1),
+    NFR_UNICODE = (2),
+    WMSZ_BOTTOM = (6),
+    WMSZ_BOTTOMLEFT = (7),
+    WMSZ_BOTTOMRIGHT = (8),
+    WMSZ_LEFT = (1),
+    WMSZ_RIGHT = (2),
+    WMSZ_TOP = (3),
+    WMSZ_TOPLEFT = (4),
+    WMSZ_TOPRIGHT = (5),
+    MA_ACTIVATE = (1),
+    MA_ACTIVATEANDEAT = (2),
+    MA_NOACTIVATE = (3),
+    MA_NOACTIVATEANDEAT = (4),
+    SIZE_MAXHIDE = (4),
+    SIZE_MAXIMIZED = (2),
+    SIZE_MAXSHOW = (3),
+    SIZE_MINIMIZED = (1),
+    SIZE_RESTORED = (0),
+    WVR_ALIGNTOP = (16),
+    WVR_ALIGNLEFT = (32),
+    WVR_ALIGNBOTTOM = (64),
+    WVR_ALIGNRIGHT = (128),
+    WVR_HREDRAW = (256),
+    WVR_VREDRAW = (512),
+    WVR_REDRAW = (768),
+    WVR_VALIDRECTS = (1024),
+    HTBOTTOM = (15),
+    HTBOTTOMLEFT = (16),
+    HTBOTTOMRIGHT = (17),
+    HTCAPTION = (2),
+    HTCLIENT = (1),
+    HTERROR = -((2)),
+    HTGROWBOX = (4),
+    HTHSCROLL = (6),
+    HTLEFT = (10),
+    HTMENU = (5),
+    HTNOWHERE = (0),
+    HTREDUCE = (8),
+    HTRIGHT = (11),
+    HTSIZE = (4),
+    HTSYSMENU = (3),
+    HTTOP = (12),
+    HTTOPLEFT = (13),
+    HTTOPRIGHT = (14),
+    HTTRANSPARENT = -((1)),
+    HTVSCROLL = (7),
+    HTZOOM = (9),
+    MK_CONTROL = (8),
+    MK_LBUTTON = (1),
+    MK_MBUTTON = (16),
+    MK_RBUTTON = (2),
+    MK_SHIFT = (4),
+    CS_BYTEALIGNCLIENT = (4096),
+    CS_BYTEALIGNWINDOW = (8192),
+    CS_CLASSDC = (64),
+    CS_DBLCLKS = (8),
+    CS_GLOBALCLASS = (16384),
+    CS_HREDRAW = (2),
+    CS_KEYCVTWINDOW = (4),
+    CS_NOCLOSE = (512),
+    CS_NOKEYCVT = (256),
+    CS_OWNDC = (32),
+    CS_PARENTDC = (128),
+    CS_SAVEBITS = (2048),
+    CS_VREDRAW = (1),
+    DLGWINDOWEXTRA = (30),
+    FALT = (16),
+    FCONTROL = (8),
+    FNOINVERT = (2),
+    FSHIFT = (4),
+    FVIRTKEY = (1),
+    MIIM_CHECKMARKS = (8),
+    MIIM_DATA = (32),
+    MIIM_ID = (2),
+    MIIM_STATE = (1),
+    MIIM_SUBMENU = (4),
+    MIIM_TYPE = (16),
+    MFT_BITMAP = (0x4),
+    MFT_MENUBARBREAK = (0x20),
+    MFT_MENUBREAK = (0x40),
+    MFT_OWNERDRAW = (0x100),
+    MFT_RADIOCHECK = (0x200),
+    MFT_RIGHTJUSTIFY = (0x4000),
+    MFT_SEPARATOR = (0x800),
+    MFT_STRING = (0),
+    MFS_CHECKED = (0x8),
+    MFS_DEFAULT = (0x1000),
+    MFS_DISABLED = (0x3),
+    MFS_ENABLED = (0),
+    MFS_GRAYED = (0x3),
+    MFS_HILITE = (0x80),
+    MFS_UNCHECKED = (0),
+    MFS_UNHILITE = (0),
+    SERKF_AVAILABLE = (2),
+    SERKF_INDICATOR = (4),
+    SERKF_SERIALKEYSON = (1),
+    FKF_AVAILABLE = (2),
+    FKF_CLICKON = (64),
+    FKF_FILTERKEYSON = (1),
+    FKF_HOTKEYACTIVE = (4),
+    FKF_HOTKEYSOUND = (16),
+    FKF_CONFIRMHOTKEY = (8),
+    FKF_INDICATOR = (32),
+    HELPINFO_MENUITEM = (2),
+    HELPINFO_WINDOW = (1),
+    PRF_CHECKVISIBLE = (0x1),
+    PRF_CHILDREN = (0x10),
+    PRF_CLIENT = (0x4),
+    PRF_ERASEBKGND = (0x8),
+    PRF_NONCLIENT = (0x2),
+    PRF_OWNED = (0x20),
+    SC_CLOSE = (61536),
+    SC___FILE__HELP = (61824),
+    SC_DEFAULT = (61792),
+    SC_HOTKEY = (61776),
+    SC_HSCROLL = (61568),
+    SC_KEYMENU = (61696),
+    SC_MAXIMIZE = (61488),
+    SC_ZOOM = (61488),
+    SC_MINIMIZE = (61472),
+    SC_ICON = (61472),
+    SC_MONITORPOWER = (61808),
+    SC_MOUSEMENU = (61584),
+    SC_MOVE = (61456),
+    SC_NEXTWINDOW = (61504),
+    SC_PREVWINDOW = (61520),
+    SC_RESTORE = (61728),
+    SC_SCREENSAVE = (61760),
+    SC_SIZE = (61440),
+    SC_TASKLIST = (61744),
+    SC_VSCROLL = (61552),
+    DC_HASDEFID = (21323),
+    DLGC_BUTTON = (8192),
+    DLGC_DEFPUSHBUTTON = (16),
+    DLGC_HASSETSEL = (8),
+    DLGC_RADIOBUTTON = (64),
+    DLGC_STATIC = (256),
+    DLGC_UNDEFPUSHBUTTON = (32),
+    DLGC_WANTALLKEYS = (4),
+    DLGC_WANTARROWS = (1),
+    DLGC_WANTCHARS = (128),
+    DLGC_WANTMESSAGE = (4),
+    DLGC_WANTTAB = (2),
+    EC_LEFTMARGIN = (1),
+    EC_RIGHTMARGIN = (2),
+    EC_USEFONTINFO = (65535),
+    LB_ERR = -((1)),
+    LB_ERRSPACE = -((2)),
+    LB_OKAY = (0),
+    CB_ERR = -((1)),
+    CB_ERRSPACE = -((2)),
+    IMC_GETCANDIDATEPOS = (7),
+    IMC_GETCOMPOSITIONFONT = (9),
+    IMC_GETCOMPOSITIONWINDOW = (11),
+    IMC_GETSTATUSWINDOWPOS = (15),
+    IMC_CLOSESTATUSWINDOW = (33),
+    IMC_OPENSTATUSWINDOW = (34),
+    IMC_SETCANDIDATEPOS = (8),
+    IMC_SETCOMPOSITIONFONT = (10),
+    IMC_SETCOMPOSITIONWINDOW = (12),
+    IMC_SETSTATUSWINDOWPOS = (16),
+    IMN_CHANGECANDIDATE = (3),
+    IMN_CLOSECANDIDATE = (4),
+    IMN_CLOSESTATUSWINDOW = (1),
+    IMN_GUIDELINE = (13),
+    IMN_OPENCANDIDATE = (5),
+    IMN_OPENSTATUSWINDOW = (2),
+    IMN_SETCANDIDATEPOS = (9),
+    IMN_SETCOMPOSITIONFONT = (10),
+    IMN_SETCOMPOSITIONWINDOW = (11),
+    IMN_SETCONVERSIONMODE = (6),
+    IMN_SETOPENSTATUS = (8),
+    IMN_SETSENTENCEMODE = (7),
+    IMN_SETSTATUSWINDOWPOS = (12),
+    IMN_PRIVATE = (14),
+    SKF_AUDIBLEFEEDBACK = (64),
+    SKF_AVAILABLE = (2),
+    SKF_CONFIRMHOTKEY = (8),
+    SKF_HOTKEYACTIVE = (4),
+    SKF_HOTKEYSOUND = (16),
+    SKF_INDICATOR = (32),
+    SKF_STICKYKEYSON = (1),
+    SKF_TRISTATE = (128),
+    SKF_TWOKEYSOFF = (256),
+    MKF_AVAILABLE = (2),
+    MKF_CONFIRMHOTKEY = (8),
+    MKF_HOTKEYACTIVE = (4),
+    MKF_HOTKEYSOUND = (16),
+    MKF_INDICATOR = (32),
+    MKF_MOUSEKEYSON = (1),
+    MKF_MODIFIERS = (64),
+    MKF_REPLACENUMBERS = (128),
+    SSF_AVAILABLE = (2),
+    SSF_SOUNDSENTRYON = (1),
+    SSTF_BORDER = (2),
+    SSTF_CHARS = (1),
+    SSTF_DISPLAY = (3),
+    SSTF_NONE = (0),
+    SSGF_DISPLAY = (3),
+    SSGF_NONE = (0),
+    SSWF_CUSTOM = (4),
+    SSWF_DISPLAY = (3),
+    SSWF_NONE = (0),
+    SSWF_TITLE = (1),
+    SSWF_WINDOW = (2),
+    ATF_ONOFFFEEDBACK = (2),
+    ATF_TIMEOUTON = (1),
+    HCF_AVAILABLE = (2),
+    HCF_CONFIRMHOTKEY = (8),
+    HCF_HIGHCONTRASTON = (1),
+    HCF_HOTKEYACTIVE = (4),
+    HCF_HOTKEYAVAILABLE = (64),
+    HCF_HOTKEYSOUND = (16),
+    HCF_INDICATOR = (32),
+    TKF_AVAILABLE = (2),
+    TKF_CONFIRMHOTKEY = (8),
+    TKF_HOTKEYACTIVE = (4),
+    TKF_HOTKEYSOUND = (16),
+    TKF_TOGGLEKEYSON = (1),
+    PP_DISPLAYERRORS = (1),
+    RESOURCEDISPLAYTYPE_DOMAIN = (1),
+    RESOURCEDISPLAYTYPE_FILE = (4),
+    RESOURCEDISPLAYTYPE_GENERIC = (0),
+    RESOURCEDISPLAYTYPE_GROUP = (5),
+    RESOURCEDISPLAYTYPE_SERVER = (2),
+    RESOURCEDISPLAYTYPE_SHARE = (3),
+    CAPSLOCK_ON = (128),
+    ENHANCED_KEY = (256),
+    LEFT_ALT_PRESSED = (2),
+    LEFT_CTRL_PRESSED = (8),
+    NUMLOCK_ON = (32),
+    RIGHT_ALT_PRESSED = (1),
+    RIGHT_CTRL_PRESSED = (4),
+    SCROLLLOCK_ON = (64),
+    SHIFT_PRESSED = (16),
+    FROM_LEFT_1ST_BUTTON_PRESSED = (1),
+    RIGHTMOST_BUTTON_PRESSED = (2),
+    FROM_LEFT_2ND_BUTTON_PRESSED = (4),
+    FROM_LEFT_3RD_BUTTON_PRESSED = (8),
+    FROM_LEFT_4TH_BUTTON_PRESSED = (16),
+    DOUBLE_CLICK = (2),
+    MOUSE_MOVED = (1),
+    KEY_EVENT = (1),
+    _MOUSE_EVENT = (2),
+    cMOUSE_EVENT = (2),
+    WINDOW_BUFFER_SIZE_EVENT = (4),
+    MENU_EVENT = (8),
+    FOCUS_EVENT = (16),
+    BI_RGB = (0),
+    BI_RLE8 = (1),
+    BI_RLE4 = (2),
+    BI_BITFIELDS = (3),
+    PFD_DRAW_TO_WINDOW = (0x4),
+    PFD_DRAW_TO_BITMAP = (0x8),
+    PFD_SUPPORT_GDI = (0x10),
+    PFD_SUPPORT_OPENGL = (0x20),
+    PFD_DOUBLEBUFFER = (0x1),
+    PFD_STEREO = (0x2),
+    PFD_DOUBLEBUFFER_DONTCARE = (0x40000000),
+    PFD_STEREO_DONTCARE = (0x80000000),
+    PFD_TYPE_RGBA = (0),
+    PFD_TYPE_COLORINDEX = (1),
+    PFD_MAIN_PLANE = (0),
+    PFD_OVERLAY_PLANE = (1),
+    PFD_UNDERLAY_PLANE = -((1)),
+    WGL_FONT_LINES = (0),
+    WGL_FONT_POLYGONS = (1),
+    PFD_GENERIC_FORMAT = (0x40),
+    PFD_NEED_PALETTE = (0x80),
+    PFD_NEED_SYSTEM_PALETTE = (0x100),
+    PFD_SWAP_COPY = (0x400),
+    PFD_SWAP_EXCHANGE = (0x200),
+    TMPF_FIXED_PITCH = (0x1),
+    TMPF_VECTOR = (0x2),
+    TMPF_TRUETYPE = (0x4),
+    TMPF_DEVICE = (0x8),
+    SE_ERR_SHARE = (26),
+    SE_ERR_ASSOCINCOMPLETE = (27),
+    SE_ERR_DDETIMEOUT = (28),
+    SE_ERR_DDEFAIL = (29),
+    SE_ERR_DDEBUSY = (30),
+    SE_ERR_NOASSOC = (31),
+    XCLASS_BOOL = (0x1000),
+    XCLASS_DATA = (0x2000),
+    XCLASS_FLAGS = (0x4000),
+    XCLASS_MASK = (0xfc00),
+    XCLASS_NOTIFICATION = (0x8000),
+    XTYPF_NOBLOCK = (0x0002),
+    XTYP_ADVDATA = (0x4010),
+    XTYP_ADVREQ = (0x2022),
+    XTYP_ADVSTART = (0x1030),
+    XTYP_ADVSTOP = (0x8040),
+    XTYP_CONNECT = (0x1062),
+    XTYP_CONNECT_CONFIRM = (0x8072),
+    XTYP_DISCONNECT = (0x80c2),
+    XTYP_EXECUTE = (0x4050),
+    XTYP_POKE = (0x4090),
+    XTYP_REQUEST = (0x20b0),
+    XTYP_WILDCONNECT = (0x20E2),
+    XTYP_REGISTER = (0x80A2),
+    XTYP_ERROR = (0x8002),
+    XTYP_XACT_COMPLETE = (0x8080),
+    XTYP_UNREGISTER = (0x80D2),
+    DMLERR_DLL_USAGE = (0x4004),
+    DMLERR_INVALIDPARAMETER = (0x4006),
+    DMLERR_NOTPROCESSED = (0x4009),
+    DMLERR_POSTMSG_FAILED = (0x400c),
+    DMLERR_SERVER_DIED = (0x400e),
+    DMLERR_SYS_ERROR = (0x400f),
+    DMLERR_BUSY = (0x4001),
+    DMLERR_DATAACKTIMEOUT = (0x4002),
+    DMLERR_ADVACKTIMEOUT = (0x4000),
+    DMLERR_DLL_NOT_INITIALIZED = (0x4003),
+    DMLERR_LOW_MEMORY = (0x4007),
+    DMLERR_MEMORY_ERROR = (0x4008),
+    DMLERR_POKEACKTIMEOUT = (0x400b),
+    DMLERR_NO_CONV_ESTABLISHED = (0x400a),
+    DMLERR_REENTRANCY = (0x400d),
+    DMLERR_UNFOUND_QUEUE_ID = (0x4011),
+    DMLERR_UNADVACKTIMEOUT = (0x4010),
+    DMLERR_EXECACKTIMEOUT = (0x4005),
+    DDE_FACK = (0x8000),
+    DDE_FNOTPROCESSED = (0x0000),
+    DNS_REGISTER = (0x0001),
+    DNS_UNREGISTER = (0x0002),
+    CP_WINANSI = (1004),
+    CP_WINUNICODE = (1200),
+    APPCLASS_STANDARD = (0x00000000),
+    BKMODE_LAST = (2),
+    CTLCOLOR_MSGBOX = (0),
+    CTLCOLOR_EDIT = (1),
+    CTLCOLOR_LISTBOX = (2),
+    CTLCOLOR_BTN = (3),
+    CTLCOLOR_DLG = (4),
+    CTLCOLOR_SCROLLBAR = (5),
+    CTLCOLOR_STATIC = (6),
+    CTLCOLOR_MAX = (7),
+    META_SETMAPMODE = (0x0103),
+    META_SETWINDOWORG = (0x020B),
+    META_SETWINDOWEXT = (0x020C),
+    POLYFILL_LAST = (2),
+    STATUS_WAIT_0 = (0x00000000),
+    STATUS_ABANDONED_WAIT_0 = (0x00000080),
+    STATUS_USER_APC = (0x000000C0),
+    STATUS_TIMEOUT = (0x00000102),
+    STATUS_PENDING = (0x00000103),
+    STATUS_GUARD_PAGE_VIOLATION = (0x80000001),
+    STATUS_DATATYPE_MISALIGNMENT = (0x80000002),
+    STATUS_BREAKPOINT = (0x80000003),
+    STATUS_SINGLE_STEP = (0x80000004),
+    STATUS_IN_PAGE_ERROR = (0xC0000006),
+    STATUS_INVALID_HANDLE = (0xC0000008),
+    STATUS_ILLEGAL_INSTRUCTION = (0xC000001D),
+    STATUS_NONCONTINUABLE_EXCEPTION = (0xC0000025),
+    STATUS_INVALID_DISPOSITION = (0xC0000026),
+    STATUS_ARRAY_BOUNDS_EXCEEDED = (0xC000008C),
+    STATUS_FLOAT_DENORMAL_OPERAND = (0xC000008D),
+    STATUS_FLOAT_DIVIDE_BY_ZERO = (0xC000008E),
+    STATUS_FLOAT_INEXACT_RESULT = (0xC000008F),
+    STATUS_FLOAT_INVALID_OPERATION = (0xC0000090),
+    STATUS_FLOAT_OVERFLOW = (0xC0000091),
+    STATUS_FLOAT_STACK_CHECK = (0xC0000092),
+    STATUS_FLOAT_UNDERFLOW = (0xC0000093),
+    STATUS_INTEGER_DIVIDE_BY_ZERO = (0xC0000094),
+    STATUS_INTEGER_OVERFLOW = (0xC0000095),
+    STATUS_PRIVILEGED_INSTRUCTION = (0xC0000096),
+    STATUS_STACK_OVERFLOW = (0xC00000FD),
+    STATUS_CONTROL_C_EXIT = (0xC000013A),
+    PROCESSOR_ARCHITECTURE_INTEL = (0),
+    PROCESSOR_ARCHITECTURE_MIPS = (1),
+    PROCESSOR_ARCHITECTURE_ALPHA = (2),
+    PROCESSOR_ARCHITECTURE_PPC = (3),
+    SIZEFULLSCREEN = (SIZE_MAXIMIZED),
+    SIZENORMAL = (SIZE_RESTORED),
+    SIZEICONIC = (SIZE_MINIMIZED),
+    SIZE_OF_80387_REGISTERS = (80),
+    __FILE___i386 = (0x10000),
+    __FILE___CONTROL = (__FILE___i386) | (1),
+    __FILE___INTEGER = (__FILE___i386) | (2),
+    __FILE___SEGMENTS = (__FILE___i386) | (4),
+    __FILE___FLOATING_POINT = (__FILE___i386) | (8),
+    __FILE___DEBUG_REGISTERS = (__FILE___i386) | (0x10),
+    __FILE___FULL = ((__FILE___CONTROL) | (__FILE___INTEGER)) | (__FILE___SEGMENTS),
+    FLAG_TRACE_BIT = (0x100),
+    __FILE___DEBUGGER = (__FILE___FULL) | (__FILE___FLOATING_POINT),
+    FILTER_TEMP_DUPLICATE_ACCOUNT = (0x0001),
+    FILTER_NORMAL_ACCOUNT = (0x0002),
+    FILTER_INTERDOMAIN_TRUST_ACCOUNT = (0x0008),
+    FILTER_WORKSTATION_TRUST_ACCOUNT = (0x0010),
+    FILTER_SERVER_TRUST_ACCOUNT = (0x0020),
+    LOGON32_LOGON_INTERACTIVE = (0x02),
+    LOGON32_LOGON_BATCH = (0x04),
+    LOGON32_LOGON_SERVICE = (0x05),
+    LOGON32_PROVIDER_DEFAULT = (0x00),
+    LOGON32_PROVIDER_WINNT35 = (0x01),
+    QID_SYNC = (0xFFFFFFFF),
+    IMAGE_DOS_SIGNATURE = (0x5a4d),
+    IMAGE_NT_SIGNATURE = (0x4550),
+    SEVERITY_SUCCESS = (0),
+    SEVERITY_ERROR = (1),
+    VT_EMPTY = (0),
+    VT_NULL = (1),
+    VT_I2 = (2),
+    VT_I4 = (3),
+    VT_R4 = (4),
+    VT_R8 = (5),
+    VT_BSTR = (8),
+    VT_ERROR = (10),
+    VT_BOOL = (11),
+    VT_UI1 = (17),
+    VT_BYREF = (0x4000),
+    VT_RESERVED = (0x8000),
+    FACILITY_WINDOWS = (8),
+    FACILITY_STORAGE = (3),
+    FACILITY_RPC = (1),
+    FACILITY_SSPI = (9),
+    FACILITY_WIN32 = (7),
+    FACILITY_CONTROL = (10),
+    FACILITY_NULL = (0),
+    FACILITY_INTERNET = (12),
+    FACILITY_ITF = (4),
+    FACILITY_DISPATCH = (2),
+    FACILITY_CERT = (11),
+    ACM_OPENW = (1127),
+    ACM_OPENA = (1124),
+    ACM_OPEN = (ACM_OPENA),
+    ACM_PLAY = (1125),
+    ACM_STOP = (1126),
+    ACN_START = (1),
+    ACN_STOP = (2),
+    BM_CLICK = (245),
+    BM_GETCHECK = (240),
+    BM_GETIMAGE = (246),
+    BM_GETSTATE = (242),
+    BM_SETCHECK = (241),
+    BM_SETIMAGE = (247),
+    BM_SETSTATE = (243),
+    BM_SETSTYLE = (244),
+    BN_CLICKED = (0),
+    BN_DBLCLK = (5),
+    BN_DISABLE = (4),
+    BN_DOUBLECLICKED = (5),
+    BN_HILITE = (2),
+    BN_KILLFOCUS = (7),
+    BN_PAINT = (1),
+    BN_PUSHED = (2),
+    BN_SETFOCUS = (6),
+    BN_UNHILITE = (3),
+    BN_UNPUSHED = (3),
+    CB_ADDSTRING = (323),
+    CB_DELETESTRING = (324),
+    CB_DIR = (325),
+    CB_FINDSTRING = (332),
+    CB_FINDSTRINGEXACT = (344),
+    CB_GETCOUNT = (326),
+    CB_GETCURSEL = (327),
+    CB_GETDROPPEDCONTROLRECT = (338),
+    CB_GETDROPPEDSTATE = (343),
+    CB_GETDROPPEDWIDTH = (351),
+    CB_GETEDITSEL = (320),
+    CB_GETEXTENDEDUI = (342),
+    CB_GETHORIZONTALEXTENT = (349),
+    CB_GETITEMDATA = (336),
+    CB_GETITEMHEIGHT = (340),
+    CB_GETLBTEXT = (328),
+    CB_GETLBTEXTLEN = (329),
+    CB_GETLOCALE = (346),
+    CB_GETTOPINDEX = (347),
+    CB_INITSTORAGE = (353),
+    CB_INSERTSTRING = (330),
+    CB_LIMITTEXT = (321),
+    CB_RESETCONTENT = (331),
+    CB_SELECTSTRING = (333),
+    CB_SETCURSEL = (334),
+    CB_SETDROPPEDWIDTH = (352),
+    CB_SETEDITSEL = (322),
+    CB_SETEXTENDEDUI = (341),
+    CB_SETHORIZONTALEXTENT = (350),
+    CB_SETITEMDATA = (337),
+    CB_SETITEMHEIGHT = (339),
+    CB_SETLOCALE = (345),
+    CB_SETTOPINDEX = (348),
+    CB_SHOWDROPDOWN = (335),
+    CBN_CLOSEUP = (8),
+    CBN_DBLCLK = (2),
+    CBN_DROPDOWN = (7),
+    CBN_EDITCHANGE = (5),
+    CBN_EDITUPDATE = (6),
+    CBN_ERRSPACE = -((1)),
+    CBN_KILLFOCUS = (4),
+    CBN_SELCHANGE = (1),
+    CBN_SELENDCANCEL = (10),
+    CBN_SELENDOK = (9),
+    CBN_SETFOCUS = (3),
+    DL_BEGINDRAG = (1157),
+    DL_CANCELDRAG = (1160),
+    DL_DRAGGING = (1158),
+    DL_DROPPED = (1159),
+    DM_GETDEFID = (1024),
+    DM_REPOSITION = (1026),
+    DM_SETDEFID = (1025),
+    EM_CANPASTE = (1074),
+    EM_CANUNDO = (198),
+    EM_CHARFROMPOS = (215),
+    EM_DISPLAYBAND = (1075),
+    EM_EMPTYUNDOBUFFER = (205),
+    EM_EXGETSEL = (1076),
+    EM_EXLIMITTEXT = (1077),
+    EM_EXLINEFROMCHAR = (1078),
+    EM_EXSETSEL = (1079),
+    EM_FINDTEXT = (1080),
+    EM_FINDTEXTEX = (1103),
+    EM_FINDWORDBREAK = (1100),
+    EM_FMTLINES = (200),
+    EM_FORMATRANGE = (1081),
+    EM_GETCHARFORMAT = (1082),
+    EM_GETEVENTMASK = (1083),
+    EM_GETFIRSTVISIBLELINE = (206),
+    EM_GETHANDLE = (189),
+    EM_GETLIMITTEXT = (213),
+    EM_GETLINE = (196),
+    EM_GETLINECOUNT = (186),
+    EM_GETMARGINS = (212),
+    EM_GETMODIFY = (184),
+    EM_GETIMECOLOR = (1129),
+    EM_GETIMEOPTIONS = (1131),
+    EM_GETOPTIONS = (1102),
+    EM_GETOLEINTERFACE = (1084),
+    EM_GETPARAFORMAT = (1085),
+    EM_GETPASSWORDCHAR = (210),
+    EM_GETPUNCTUATION = (1125),
+    EM_GETRECT = (178),
+    EM_GETSEL = (176),
+    EM_GETSELTEXT = (1086),
+    EM_GETTEXTRANGE = (1099),
+    EM_GETTHUMB = (190),
+    EM_GETWORDBREAKPROC = (209),
+    EM_GETWORDBREAKPROCEX = (1104),
+    EM_GETWORDWRAPMODE = (1127),
+    EM_HIDESELECTION = (1087),
+    EM_LIMITTEXT = (197),
+    EM_LINEFROMCHAR = (201),
+    EM_LINEINDEX = (187),
+    EM_LINELENGTH = (193),
+    EM_LINESCROLL = (182),
+    EM_PASTESPECIAL = (1088),
+    EM_POSFROMCHAR = (214),
+    EM_REPLACESEL = (194),
+    EM_REQUESTRESIZE = (1089),
+    EM_SCROLL = (181),
+    EM_SCROLLCARET = (183),
+    EM_SELECTIONTYPE = (1090),
+    EM_SETBKGNDCOLOR = (1091),
+    EM_SETCHARFORMAT = (1092),
+    EM_SETEVENTMASK = (1093),
+    EM_SETHANDLE = (188),
+    EM_SETIMECOLOR = (1128),
+    EM_SETIMEOPTIONS = (1130),
+    EM_SETLIMITTEXT = (197),
+    EM_SETMARGINS = (211),
+    EM_SETMODIFY = (185),
+    EM_SETOLECALLBACK = (1094),
+    EM_SETOPTIONS = (1101),
+    EM_SETPARAFORMAT = (1095),
+    EM_SETPASSWORDCHAR = (204),
+    EM_SETPUNCTUATION = (1124),
+    EM_SETREADONLY = (207),
+    EM_SETRECT = (179),
+    EM_SETRECTNP = (180),
+    EM_SETSEL = (177),
+    EM_SETTABSTOPS = (203),
+    EM_SETTARGETDEVICE = (1096),
+    EM_SETWORDBREAKPROC = (208),
+    EM_SETWORDBREAKPROCEX = (1105),
+    EM_SETWORDWRAPMODE = (1126),
+    EM_STREAMIN = (1097),
+    EM_STREAMOUT = (1098),
+    EM_UNDO = (199),
+    EN_CHANGE = (768),
+    EN_CORRECTTEXT = (1797),
+    EN_DROPFILES = (1795),
+    EN_ERRSPACE = (1280),
+    EN_HSCROLL = (1537),
+    EN_IMECHANGE = (1799),
+    EN_KILLFOCUS = (512),
+    EN_MAXTEXT = (1281),
+    EN_MSGFILTER = (1792),
+    EN_OLEOPFAILED = (1801),
+    EN_PROTECTED = (1796),
+    EN_REQUESTRESIZE = (1793),
+    EN_SAVECLIPBOARD = (1800),
+    EN_SELCHANGE = (1794),
+    EN_SETFOCUS = (256),
+    EN_STOPNOUNDO = (1798),
+    EN_UPDATE = (1024),
+    EN_VSCROLL = (1538),
+    HDM_DELETEITEM = (4610),
+    HDM_GETITEMW = (4619),
+    HDM_INSERTITEMW = (4618),
+    HDM_SETITEMW = (4620),
+    HDM_GETITEMA = (4611),
+    HDM_INSERTITEMA = (4609),
+    HDM_SETITEMA = (4612),
+    HDM_GETITEM = (HDM_GETITEMA),
+    HDM_INSERTITEM = (HDM_INSERTITEMA),
+    HDM_SETITEM = (HDM_SETITEMA),
+    HDM_GETITEMCOUNT = (4608),
+    HDM_HITTEST = (4614),
+    HDM_LAYOUT = (4613),
+    HDN_BEGINTRACKW = -((326)),
+    HDN_DIVIDERDBLCLICKW = -((325)),
+    HDN_ENDTRACKW = -((327)),
+    HDN_ITEMCHANGEDW = -((321)),
+    HDN_ITEMCHANGINGW = -((320)),
+    HDN_ITEMCLICKW = -((322)),
+    HDN_ITEMDBLCLICKW = -((323)),
+    HDN_TRACKW = -((328)),
+    HDN_BEGINTRACKA = -((306)),
+    HDN_DIVIDERDBLCLICKA = -((305)),
+    HDN_ENDTRACKA = -((307)),
+    HDN_ITEMCHANGEDA = -((301)),
+    HDN_ITEMCHANGINGA = -((300)),
+    HDN_ITEMCLICKA = -((302)),
+    HDN_ITEMDBLCLICKA = -((303)),
+    HDN_TRACKA = -((308)),
+    HDN_BEGINTRACK = (HDN_BEGINTRACKA),
+    HDN_DIVIDERDBLCLICK = (HDN_DIVIDERDBLCLICKA),
+    HDN_ENDTRACK = (HDN_ENDTRACKA),
+    HDN_ITEMCHANGED = (HDN_ITEMCHANGEDA),
+    HDN_ITEMCHANGING = (HDN_ITEMCHANGINGA),
+    HDN_ITEMCLICK = (HDN_ITEMCLICKA),
+    HDN_ITEMDBLCLICK = (HDN_ITEMDBLCLICKA),
+    HDN_TRACK = (HDN_TRACKA),
+    HKM_GETHOTKEY = (1026),
+    HKM_SETHOTKEY = (1025),
+    HKM_SETRULES = (1027),
+    LB_ADDFILE = (406),
+    LB_ADDSTRING = (384),
+    LB_DELETESTRING = (386),
+    LB_DIR = (397),
+    LB_FINDSTRING = (399),
+    LB_FINDSTRINGEXACT = (418),
+    LB_GETANCHORINDEX = (413),
+    LB_GETCARETINDEX = (415),
+    LB_GETCOUNT = (395),
+    LB_GETCURSEL = (392),
+    LB_GETHORIZONTALEXTENT = (403),
+    LB_GETITEMDATA = (409),
+    LB_GETITEMHEIGHT = (417),
+    LB_GETITEMRECT = (408),
+    LB_GETLOCALE = (422),
+    LB_GETSEL = (391),
+    LB_GETSELCOUNT = (400),
+    LB_GETSELITEMS = (401),
+    LB_GETTEXT = (393),
+    LB_GETTEXTLEN = (394),
+    LB_GETTOPINDEX = (398),
+    LB_INITSTORAGE = (424),
+    LB_INSERTSTRING = (385),
+    LB_ITEMFROMPOINT = (425),
+    LB_RESETCONTENT = (388),
+    LB_SELECTSTRING = (396),
+    LB_SELITEMRANGE = (411),
+    LB_SELITEMRANGEEX = (387),
+    LB_SETANCHORINDEX = (412),
+    LB_SETCARETINDEX = (414),
+    LB_SETCOLUMNWIDTH = (405),
+    LB_SETCOUNT = (423),
+    LB_SETCURSEL = (390),
+    LB_SETHORIZONTALEXTENT = (404),
+    LB_SETITEMDATA = (410),
+    LB_SETITEMHEIGHT = (416),
+    LB_SETLOCALE = (421),
+    LB_SETSEL = (389),
+    LB_SETTABSTOPS = (402),
+    LB_SETTOPINDEX = (407),
+    LBN_DBLCLK = (2),
+    LBN_ERRSPACE = -((2)),
+    LBN_KILLFOCUS = (5),
+    LBN_SELCANCEL = (3),
+    LBN_SELCHANGE = (1),
+    LBN_SETFOCUS = (4),
+    LVM_ARRANGE = (4118),
+    LVM_CREATEDRAGIMAGE = (4129),
+    LVM_DELETEALLITEMS = (4105),
+    LVM_DELETECOLUMN = (4124),
+    LVM_DELETEITEM = (4104),
+    LVM_ENSUREVISIBLE = (4115),
+    LVM_GETBKCOLOR = (4096),
+    LVM_GETCALLBACKMASK = (4106),
+    LVM_GETCOLUMNWIDTH = (4125),
+    LVM_GETCOUNTPERPAGE = (4136),
+    LVM_GETEDITCONTROL = (4120),
+    LVM_GETIMAGELIST = (4098),
+    LVM_EDITLABELW = (4214),
+    LVM_FINDITEMW = (4179),
+    LVM_GETCOLUMNW = (4191),
+    LVM_GETISEARCHSTRINGW = (4213),
+    LVM_GETITEMW = (4171),
+    LVM_GETITEMTEXTW = (4211),
+    LVM_GETSTRINGWIDTHW = (4183),
+    LVM_INSERTCOLUMNW = (4193),
+    LVM_INSERTITEMW = (4173),
+    LVM_SETCOLUMNW = (4192),
+    LVM_SETITEMW = (4172),
+    LVM_SETITEMTEXTW = (4212),
+    LVM_EDITLABELA = (4119),
+    LVM_FINDITEMA = (4109),
+    LVM_GETCOLUMNA = (4121),
+    LVM_GETISEARCHSTRINGA = (4148),
+    LVM_GETITEMA = (4101),
+    LVM_GETITEMTEXTA = (4141),
+    LVM_GETSTRINGWIDTHA = (4113),
+    LVM_INSERTCOLUMNA = (4123),
+    LVM_INSERTITEMA = (4103),
+    LVM_SETCOLUMNA = (4122),
+    LVM_SETITEMA = (4102),
+    LVM_SETITEMTEXTA = (4142),
+    LVM_EDITLABEL = (LVM_EDITLABELA),
+    LVM_FINDITEM = (LVM_FINDITEMA),
+    LVM_GETCOLUMN = (LVM_GETCOLUMNA),
+    LVM_GETISEARCHSTRING = (LVM_GETISEARCHSTRINGA),
+    LVM_GETITEM = (LVM_GETITEMA),
+    LVM_GETITEMTEXT = (LVM_GETITEMTEXTA),
+    LVM_GETSTRINGWIDTH = (LVM_GETSTRINGWIDTHA),
+    LVM_INSERTCOLUMN = (LVM_INSERTCOLUMNA),
+    LVM_INSERTITEM = (LVM_INSERTITEMA),
+    LVM_SETCOLUMN = (LVM_SETCOLUMNA),
+    LVM_SETITEM = (LVM_SETITEMA),
+    LVM_SETITEMTEXT = (LVM_SETITEMTEXTA),
+    LVM_GETITEMCOUNT = (4100),
+    LVM_GETITEMPOSITION = (4112),
+    LVM_GETITEMRECT = (4110),
+    LVM_GETITEMSPACING = (4147),
+    LVM_GETITEMSTATE = (4140),
+    LVM_GETNEXTITEM = (4108),
+    LVM_GETORIGIN = (4137),
+    LVM_GETSELECTEDCOUNT = (4146),
+    LVM_GETTEXTBKCOLOR = (4133),
+    LVM_GETTEXTCOLOR = (4131),
+    LVM_GETTOPINDEX = (4135),
+    LVM_GETVIEWRECT = (4130),
+    LVM_HITTEST = (4114),
+    LVM_REDRAWITEMS = (4117),
+    LVM_SCROLL = (4116),
+    LVM_SETBKCOLOR = (4097),
+    LVM_SETCALLBACKMASK = (4107),
+    LVM_SETCOLUMNWIDTH = (4126),
+    LVM_SETIMAGELIST = (4099),
+    LVM_SETITEMCOUNT = (4143),
+    LVM_SETITEMPOSITION = (4111),
+    LVM_SETITEMPOSITION32 = (4145),
+    LVM_SETITEMSTATE = (4139),
+    LVM_SETTEXTBKCOLOR = (4134),
+    LVM_SETTEXTCOLOR = (4132),
+    LVM_SORTITEMS = (4144),
+    LVM_UPDATE = (4138),
+    LVN_BEGINDRAG = -((109)),
+    LVN_BEGINRDRAG = -((111)),
+    LVN_COLUMNCLICK = -((108)),
+    LVN_DELETEALLITEMS = -((104)),
+    LVN_DELETEITEM = -((103)),
+    LVN_BEGINLABELEDITW = -((175)),
+    LVN_ENDLABELEDITW = -((176)),
+    LVN_GETDISPINFOW = -((177)),
+    LVN_SETDISPINFOW = -((178)),
+    LVN_BEGINLABELEDITA = -((105)),
+    LVN_ENDLABELEDITA = -((106)),
+    LVN_GETDISPINFOA = -((150)),
+    LVN_SETDISPINFOA = -((151)),
+    LVN_BEGINLABELEDIT = (LVN_BEGINLABELEDITA),
+    LVN_ENDLABELEDIT = (LVN_ENDLABELEDITA),
+    LVN_GETDISPINFO = (LVN_GETDISPINFOA),
+    LVN_SETDISPINFO = (LVN_SETDISPINFOA),
+    LVN_INSERTITEM = -((102)),
+    LVN_ITEMCHANGED = -((101)),
+    LVN_ITEMCHANGING = -((100)),
+    LVN_KEYDOWN = -((155)),
+    NM_CLICK = -((2)),
+    NM_DBLCLK = -((3)),
+    NM_KILLFOCUS = -((8)),
+    NM_OUTOFMEMORY = -((1)),
+    NM_RCLICK = -((5)),
+    NM_RDBLCLK = -((6)),
+    NM_RETURN = -((4)),
+    NM_SETFOCUS = -((7)),
+    PBM_DELTAPOS = (1027),
+    PBM_SETPOS = (1026),
+    PBM_SETRANGE = (1025),
+    PBM_SETSTEP = (1028),
+    PBM_STEPIT = (1029),
+    PSM_ADDPAGE = (1127),
+    PSM_APPLY = (1134),
+    PSM_CANCELTOCLOSE = (1131),
+    PSM_CHANGED = (1128),
+    PSM_GETTABCONTROL = (1140),
+    PSM_GETCURRENTPAGEHWND = (1142),
+    PSM_ISDIALOGMESSAGE = (1141),
+    PSM_PRESSBUTTON = (1137),
+    PSM_QUERYSIBLINGS = (1132),
+    PSM_REBOOTSYSTEM = (1130),
+    PSM_REMOVEPAGE = (1126),
+    PSM_RESTARTWINDOWS = (1129),
+    PSM_SETCURSEL = (1125),
+    PSM_SETCURSELID = (1138),
+    PSM_SETFINISHTEXTW = (1145),
+    PSM_SETTITLEW = (1144),
+    PSM_SETFINISHTEXTA = (1139),
+    PSM_SETTITLEA = (1135),
+    PSM_SETFINISHTEXT = (PSM_SETFINISHTEXTA),
+    PSM_SETTITLE = (PSM_SETTITLEA),
+    PSM_SETWIZBUTTONS = (1136),
+    PSM_UNCHANGED = (1133),
+    PSN_APPLY = -((202)),
+    PSN_HELP = -((205)),
+    PSN_KILLACTIVE = -((201)),
+    PSN_QUERYCANCEL = -((209)),
+    PSN_RESET = -((203)),
+    PSN_SETACTIVE = -((200)),
+    PSN_WIZBACK = -((206)),
+    PSN_WIZFINISH = -((208)),
+    PSN_WIZNEXT = -((207)),
+    SB_GETBORDERS = (1031),
+    SB_GETPARTS = (1030),
+    SB_GETRECT = (1034),
+    SB_GETTEXTW = (1037),
+    SB_GETTEXTLENGTHW = (1036),
+    SB_SETTEXTW = (1035),
+    SB_GETTEXTA = (1026),
+    SB_GETTEXTLENGTHA = (1027),
+    SB_SETTEXTA = (1025),
+    SB_GETTEXT = (SB_GETTEXTA),
+    SB_GETTEXTLENGTH = (SB_GETTEXTLENGTHA),
+    SB_SETTEXT = (SB_SETTEXTA),
+    SB_SETMINHEIGHT = (1032),
+    SB_SETPARTS = (1028),
+    SB_SIMPLE = (1033),
+    SBM_ENABLE_ARROWS = (228),
+    SBM_GETPOS = (225),
+    SBM_GETRANGE = (227),
+    SBM_GETSCROLLINFO = (234),
+    SBM_SETPOS = (224),
+    SBM_SETRANGE = (226),
+    SBM_SETRANGEREDRAW = (230),
+    SBM_SETSCROLLINFO = (233),
+    STM_GETICON = (369),
+    STM_GETIMAGE = (371),
+    STM_SETICON = (368),
+    STM_SETIMAGE = (370),
+    STN_CLICKED = (0),
+    STN_DBLCLK = (1),
+    STN_DISABLE = (3),
+    STN_ENABLE = (2),
+    TB_ADDBITMAP = (1043),
+    TB_ADDBUTTONS = (1044),
+    TB_AUTOSIZE = (1057),
+    TB_BUTTONCOUNT = (1048),
+    TB_BUTTONSTRUCTSIZE = (1054),
+    TB_CHANGEBITMAP = (1067),
+    TB_CHECKBUTTON = (1026),
+    TB_COMMANDTOINDEX = (1049),
+    TB_CUSTOMIZE = (1051),
+    TB_DELETEBUTTON = (1046),
+    TB_ENABLEBUTTON = (1025),
+    TB_GETBITMAP = (1068),
+    TB_GETBITMAPFLAGS = (1065),
+    TB_GETBUTTON = (1047),
+    TB_ADDSTRINGW = (1101),
+    TB_GETBUTTONTEXTW = (1099),
+    TB_SAVERESTOREW = (1100),
+    TB_ADDSTRINGA = (1052),
+    TB_GETBUTTONTEXTA = (1069),
+    TB_SAVERESTOREA = (1050),
+    TB_ADDSTRING = (TB_ADDSTRINGA),
+    TB_GETBUTTONTEXT = (TB_GETBUTTONTEXTA),
+    TB_SAVERESTORE = (TB_SAVERESTOREA),
+    TB_GETITEMRECT = (1053),
+    TB_GETROWS = (1064),
+    TB_GETSTATE = (1042),
+    TB_GETTOOLTIPS = (1059),
+    TB_HIDEBUTTON = (1028),
+    TB_INDETERMINATE = (1029),
+    TB_INSERTBUTTON = (1045),
+    TB_ISBUTTONCHECKED = (1034),
+    TB_ISBUTTONENABLED = (1033),
+    TB_ISBUTTONHIDDEN = (1036),
+    TB_ISBUTTONINDETERMINATE = (1037),
+    TB_ISBUTTONPRESSED = (1035),
+    TB_PRESSBUTTON = (1027),
+    TB_SETBITMAPSIZE = (1056),
+    TB_SETBUTTONSIZE = (1055),
+    TB_SETCMDID = (1066),
+    TB_SETPARENT = (1061),
+    TB_SETROWS = (1063),
+    TB_SETSTATE = (1041),
+    TB_SETTOOLTIPS = (1060),
+    TBM_CLEARSEL = (1043),
+    TBM_CLEARTICS = (1033),
+    TBM_GETCHANNELRECT = (1050),
+    TBM_GETLINESIZE = (1048),
+    TBM_GETNUMTICS = (1040),
+    TBM_GETPAGESIZE = (1046),
+    TBM_GETPOS = (1024),
+    TBM_GETPTICS = (1038),
+    TBM_GETRANGEMAX = (1026),
+    TBM_GETRANGEMIN = (1025),
+    TBM_GETSELEND = (1042),
+    TBM_GETSELSTART = (1041),
+    TBM_GETTHUMBLENGTH = (1052),
+    TBM_GETTHUMBRECT = (1049),
+    TBM_GETTIC = (1027),
+    TBM_GETTICPOS = (1039),
+    TBM_SETLINESIZE = (1047),
+    TBM_SETPAGESIZE = (1045),
+    TBM_SETPOS = (1029),
+    TBM_SETRANGE = (1030),
+    TBM_SETRANGEMAX = (1032),
+    TBM_SETRANGEMIN = (1031),
+    TBM_SETSEL = (1034),
+    TBM_SETSELEND = (1036),
+    TBM_SETSELSTART = (1035),
+    TBM_SETTHUMBLENGTH = (1051),
+    TBM_SETTIC = (1028),
+    TBM_SETTICFREQ = (1044),
+    TBN_BEGINADJUST = -((703)),
+    TBN_BEGINDRAG = -((701)),
+    TBN_CUSTHELP = -((709)),
+    TBN_ENDADJUST = -((704)),
+    TBN_ENDDRAG = -((702)),
+    TBN_GETBUTTONINFOW = -((720)),
+    TBN_GETBUTTONINFOA = -((700)),
+    TBN_GETBUTTONINFO = (TBN_GETBUTTONINFOA),
+    TBN_QUERYDELETE = -((707)),
+    TBN_QUERYINSERT = -((706)),
+    TBN_RESET = -((705)),
+    TBN_TOOLBARCHANGE = -((708)),
+    TCM_ADJUSTRECT = (4904),
+    TCM_DELETEALLITEMS = (4873),
+    TCM_DELETEITEM = (4872),
+    TCM_GETCURFOCUS = (4911),
+    TCM_GETCURSEL = (4875),
+    TCM_GETIMAGELIST = (4866),
+    TCM_GETITEMW = (4924),
+    TCM_INSERTITEMW = (4926),
+    TCM_SETITEMW = (4925),
+    TCM_GETITEMA = (4869),
+    TCM_INSERTITEMA = (4871),
+    TCM_SETITEMA = (4870),
+    TCM_GETITEM = (TCM_GETITEMA),
+    TCM_INSERTITEM = (TCM_INSERTITEMA),
+    TCM_SETITEM = (TCM_SETITEMA),
+    TCM_GETITEMCOUNT = (4868),
+    TCM_GETITEMRECT = (4874),
+    TCM_GETROWCOUNT = (4908),
+    TCM_GETTOOLTIPS = (4909),
+    TCM_HITTEST = (4877),
+    TCM_REMOVEIMAGE = (4906),
+    TCM_SETCURFOCUS = (4912),
+    TCM_SETCURSEL = (4876),
+    TCM_SETIMAGELIST = (4867),
+    TCM_SETITEMEXTRA = (4878),
+    TCM_SETITEMSIZE = (4905),
+    TCM_SETPADDING = (4907),
+    TCM_SETTOOLTIPS = (4910),
+    TCN_KEYDOWN = -((550)),
+    TCN_SELCHANGE = -((551)),
+    TCN_SELCHANGING = -((552)),
+    TTM_ACTIVATE = (1025),
+    TTM_ADDTOOLW = (1074),
+    TTM_DELTOOLW = (1075),
+    TTM_ENUMTOOLSW = (1082),
+    TTM_GETCURRENTTOOLW = (1083),
+    TTM_GETTEXTW = (1080),
+    TTM_GETTOOLINFOW = (1077),
+    TTM_HITTESTW = (1079),
+    TTM_NEWTOOLRECTW = (1076),
+    TTM_SETTOOLINFOW = (1078),
+    TTM_UPDATETIPTEXTW = (1081),
+    TTM_ADDTOOLA = (1028),
+    TTM_DELTOOLA = (1029),
+    TTM_ENUMTOOLSA = (1038),
+    TTM_GETCURRENTTOOLA = (1039),
+    TTM_GETTEXTA = (1035),
+    TTM_GETTOOLINFOA = (1032),
+    TTM_HITTESTA = (1034),
+    TTM_NEWTOOLRECTA = (1030),
+    TTM_SETTOOLINFOA = (1033),
+    TTM_UPDATETIPTEXTA = (1036),
+    TTM_ADDTOOL = (TTM_ADDTOOLA),
+    TTM_DELTOOL = (TTM_DELTOOLA),
+    TTM_ENUMTOOLS = (TTM_ENUMTOOLSA),
+    TTM_GETCURRENTTOOL = (TTM_GETCURRENTTOOLA),
+    TTM_GETTEXT = (TTM_GETTEXTA),
+    TTM_GETTOOLINFO = (TTM_GETTOOLINFOA),
+    TTM_HITTEST = (TTM_HITTESTA),
+    TTM_NEWTOOLRECT = (TTM_NEWTOOLRECTA),
+    TTM_SETTOOLINFO = (TTM_SETTOOLINFOA),
+    TTM_UPDATETIPTEXT = (TTM_UPDATETIPTEXTA),
+    TTM_GETTOOLCOUNT = (1037),
+    TTM_RELAYEVENT = (1031),
+    TTM_SETDELAYTIME = (1027),
+    TTM_WINDOWFROMPOINT = (1040),
+    TTN_NEEDTEXTW = -((530)),
+    TTN_NEEDTEXTA = -((520)),
+    TTN_NEEDTEXT = (TTN_NEEDTEXTA),
+    TTN_POP = -((522)),
+    TTN_SHOW = -((521)),
+    TVM_CREATEDRAGIMAGE = (4370),
+    TVM_DELETEITEM = (4353),
+    TVM_ENDEDITLABELNOW = (4374),
+    TVM_ENSUREVISIBLE = (4372),
+    TVM_EXPAND = (4354),
+    TVM_GETCOUNT = (4357),
+    TVM_GETEDITCONTROL = (4367),
+    TVM_GETIMAGELIST = (4360),
+    TVM_GETINDENT = (4358),
+    TVM_GETITEMRECT = (4356),
+    TVM_GETNEXTITEM = (4362),
+    TVM_GETVISIBLECOUNT = (4368),
+    TVM_HITTEST = (4369),
+    TVM_EDITLABELW = (4417),
+    TVM_GETISEARCHSTRINGW = (4416),
+    TVM_GETITEMW = (4414),
+    TVM_INSERTITEMW = (4402),
+    TVM_SETITEMW = (4415),
+    TVM_EDITLABELA = (4366),
+    TVM_GETISEARCHSTRINGA = (4375),
+    TVM_GETITEMA = (4364),
+    TVM_INSERTITEMA = (4352),
+    TVM_SETITEMA = (4365),
+    TVM_EDITLABEL = (TVM_EDITLABELA),
+    TVM_GETISEARCHSTRING = (TVM_GETISEARCHSTRINGA),
+    TVM_GETITEM = (TVM_GETITEMA),
+    TVM_INSERTITEM = (TVM_INSERTITEMA),
+    TVM_SETITEM = (TVM_SETITEMA),
+    TVM_SELECTITEM = (4363),
+    TVM_SETIMAGELIST = (4361),
+    TVM_SETINDENT = (4359),
+    TVM_SORTCHILDREN = (4371),
+    TVM_SORTCHILDRENCB = (4373),
+    TVN_KEYDOWN = -((412)),
+    TVN_BEGINDRAGW = -((456)),
+    TVN_BEGINLABELEDITW = -((459)),
+    TVN_BEGINRDRAGW = -((457)),
+    TVN_DELETEITEMW = -((458)),
+    TVN_ENDLABELEDITW = -((460)),
+    TVN_GETDISPINFOW = -((452)),
+    TVN_ITEMEXPANDEDW = -((455)),
+    TVN_ITEMEXPANDINGW = -((454)),
+    TVN_SELCHANGEDW = -((451)),
+    TVN_SELCHANGINGW = -((450)),
+    TVN_SETDISPINFOW = -((453)),
+    TVN_BEGINDRAGA = -((407)),
+    TVN_BEGINLABELEDITA = -((410)),
+    TVN_BEGINRDRAGA = -((408)),
+    TVN_DELETEITEMA = -((409)),
+    TVN_ENDLABELEDITA = -((411)),
+    TVN_GETDISPINFOA = -((403)),
+    TVN_ITEMEXPANDEDA = -((406)),
+    TVN_ITEMEXPANDINGA = -((405)),
+    TVN_SELCHANGEDA = -((402)),
+    TVN_SELCHANGINGA = -((401)),
+    TVN_SETDISPINFOA = -((404)),
+    TVN_BEGINDRAG = (TVN_BEGINDRAGA),
+    TVN_BEGINLABELEDIT = (TVN_BEGINLABELEDITA),
+    TVN_BEGINRDRAG = (TVN_BEGINRDRAGA),
+    TVN_DELETEITEM = (TVN_DELETEITEMA),
+    TVN_ENDLABELEDIT = (TVN_ENDLABELEDITA),
+    TVN_GETDISPINFO = (TVN_GETDISPINFOA),
+    TVN_ITEMEXPANDED = (TVN_ITEMEXPANDEDA),
+    TVN_ITEMEXPANDING = (TVN_ITEMEXPANDINGA),
+    TVN_SELCHANGED = (TVN_SELCHANGEDA),
+    TVN_SELCHANGING = (TVN_SELCHANGINGA),
+    TVN_SETDISPINFO = (TVN_SETDISPINFOA),
+    UDM_GETACCEL = (1132),
+    UDM_GETBASE = (1134),
+    UDM_GETBUDDY = (1130),
+    UDM_GETPOS = (1128),
+    UDM_GETRANGE = (1126),
+    UDM_SETACCEL = (1131),
+    UDM_SETBASE = (1133),
+    UDM_SETBUDDY = (1129),
+    UDM_SETPOS = (1127),
+    UDM_SETRANGE = (1125),
+    UDN_DELTAPOS = -((722)),
+    WM_ACTIVATE = (6),
+    WM_ACTIVATEAPP = (28),
+    WM_ASKCBFORMATNAME = (780),
+    WM_CANCELJOURNAL = (75),
+    WM_CANCELMODE = (31),
+    WM_CAPTURECHANGED = (533),
+    WM_CHANGECBCHAIN = (781),
+    WM_CHAR = (258),
+    WM_CHARTOITEM = (47),
+    WM_CHILDACTIVATE = (34),
+    WM_CHOOSEFONT_GETLOGFONT = (1025),
+    WM_CHOOSEFONT_SETLOGFONT = (1125),
+    WM_CHOOSEFONT_SETFLAGS = (1126),
+    WM_CLEAR = (771),
+    WM_CLOSE = (16),
+    WM_COMMAND = (273),
+    WM_COMPACTING = (65),
+    WM_COMPAREITEM = (57),
+    WM___FILE__MENU = (123),
+    WM_COPY = (769),
+    WM_COPYDATA = (74),
+    WM_CREATE = (1),
+    WM_CTLCOLORBTN = (309),
+    WM_CTLCOLORDLG = (310),
+    WM_CTLCOLOREDIT = (307),
+    WM_CTLCOLORLISTBOX = (308),
+    WM_CTLCOLORMSGBOX = (306),
+    WM_CTLCOLORSCROLLBAR = (311),
+    WM_CTLCOLORSTATIC = (312),
+    WM_CUT = (768),
+    WM_DEADCHAR = (259),
+    WM_DELETEITEM = (45),
+    WM_DESTROY = (2),
+    WM_DESTROYCLIPBOARD = (775),
+    WM_DEVICECHANGE = (537),
+    WM_DEVMODECHANGE = (27),
+    WM_DISPLAYCHANGE = (126),
+    WM_DRAWCLIPBOARD = (776),
+    WM_DRAWITEM = (43),
+    WM_DROPFILES = (563),
+    WM_ENABLE = (10),
+    WM_ENDSESSION = (22),
+    WM_ENTERIDLE = (289),
+    WM_ENTERMENULOOP = (529),
+    WM_ENTERSIZEMOVE = (561),
+    WM_ERASEBKGND = (20),
+    WM_EXITMENULOOP = (530),
+    WM_EXITSIZEMOVE = (562),
+    WM_FONTCHANGE = (29),
+    WM_GETDLGCODE = (135),
+    WM_GETFONT = (49),
+    WM_GETHOTKEY = (51),
+    WM_GETICON = (127),
+    WM_GETMINMAXINFO = (36),
+    WM_GETTEXT = (13),
+    WM_GETTEXTLENGTH = (14),
+    WM_HELP = (83),
+    WM_HOTKEY = (786),
+    WM_HSCROLL = (276),
+    WM_HSCROLLCLIPBOARD = (782),
+    WM_ICONERASEBKGND = (39),
+    WM_IME_CHAR = (646),
+    WM_IME_COMPOSITION = (271),
+    WM_IME_COMPOSITIONFULL = (644),
+    WM_IME_CONTROL = (643),
+    WM_IME_ENDCOMPOSITION = (270),
+    WM_IME_KEYDOWN = (656),
+    WM_IME_KEYUP = (657),
+    WM_IME_NOTIFY = (642),
+    WM_IME_SELECT = (645),
+    WM_IME_SET__FILE__ = (641),
+    WM_IME_STARTCOMPOSITION = (269),
+    WM_INITDIALOG = (272),
+    WM_INITMENU = (278),
+    WM_INITMENUPOPUP = (279),
+    WM_INPUTLANGCHANGE = (81),
+    WM_INPUTLANGCHANGEREQUEST = (80),
+    WM_KEYDOWN = (256),
+    WM_KEYUP = (257),
+    WM_KILLFOCUS = (8),
+    WM_LBUTTONDBLCLK = (515),
+    WM_LBUTTONDOWN = (513),
+    WM_LBUTTONUP = (514),
+    WM_MBUTTONDBLCLK = (521),
+    WM_MBUTTONDOWN = (519),
+    WM_MBUTTONUP = (520),
+    WM_MDIACTIVATE = (546),
+    WM_MDICASCADE = (551),
+    WM_MDICREATE = (544),
+    WM_MDIDESTROY = (545),
+    WM_MDIGETACTIVE = (553),
+    WM_MDIICONARRANGE = (552),
+    WM_MDIMAXIMIZE = (549),
+    WM_MDINEXT = (548),
+    WM_MDIREFRESHMENU = (564),
+    WM_MDIRESTORE = (547),
+    WM_MDISETMENU = (560),
+    WM_MDITILE = (550),
+    WM_MEASUREITEM = (44),
+    WM_MENUCHAR = (288),
+    WM_MENUSELECT = (287),
+    WM_MOUSEACTIVATE = (33),
+    WM_MOUSEMOVE = (512),
+    WM_MOUSEWHEEL = 0x020A,
+    WM_MOVE = (3),
+    WM_MOVING = (534),
+    WM_NCACTIVATE = (134),
+    WM_NCCALCSIZE = (131),
+    WM_NCCREATE = (129),
+    WM_NCDESTROY = (130),
+    WM_NCHITTEST = (132),
+    WM_NCLBUTTONDBLCLK = (163),
+    WM_NCLBUTTONDOWN = (161),
+    WM_NCLBUTTONUP = (162),
+    WM_NCMBUTTONDBLCLK = (169),
+    WM_NCMBUTTONDOWN = (167),
+    WM_NCMBUTTONUP = (168),
+    WM_NCMOUSEMOVE = (160),
+    WM_NCPAINT = (133),
+    WM_NCRBUTTONDBLCLK = (166),
+    WM_NCRBUTTONDOWN = (164),
+    WM_NCRBUTTONUP = (165),
+    WM_NEXTDLGCTL = (40),
+    WM_NOTIFY = (78),
+    WM_NOTIFYFORMAT = (85),
+    WM_NULL = (0),
+    WM_PAINT = (15),
+    WM_PAINTCLIPBOARD = (777),
+    WM_PAINTICON = (38),
+    WM_PALETTECHANGED = (785),
+    WM_PALETTEISCHANGING = (784),
+    WM_PARENTNOTIFY = (528),
+    WM_PASTE = (770),
+    WM_PENWINFIRST = (896),
+    WM_PENWINLAST = (911),
+    WM_POWER = (72),
+    WM_POWERBROADCAST = (536),
+    WM_PRINT = (791),
+    WM_PRINTCLIENT = (792),
+    WM_PSD_ENVSTAMPRECT = (1029),
+    WM_PSD_FULLPAGERECT = (1025),
+    WM_PSD_GREEKTEXTRECT = (1028),
+    WM_PSD_MARGINRECT = (1027),
+    WM_PSD_MINMARGINRECT = (1026),
+    WM_PSD_PAGESETUPDLG = (1024),
+    WM_PSD_YAFULLPAGERECT = (1030),
+    WM_QUERYDRAGICON = (55),
+    WM_QUERYENDSESSION = (17),
+    WM_QUERYNEWPALETTE = (783),
+    WM_QUERYOPEN = (19),
+    WM_QUEUESYNC = (35),
+    WM_QUIT = (18),
+    WM_RBUTTONDBLCLK = (518),
+    WM_RBUTTONDOWN = (516),
+    WM_RBUTTONUP = (517),
+    WM_RENDERALLFORMATS = (774),
+    WM_RENDERFORMAT = (773),
+    WM_SETCURSOR = (32),
+    WM_SETFOCUS = (7),
+    WM_SETFONT = (48),
+    WM_SETHOTKEY = (50),
+    WM_SETICON = (128),
+    WM_SETREDRAW = (11),
+    WM_SETTEXT = (12),
+    WM_SETTINGCHANGE = (26),
+    WM_SHOWWINDOW = (24),
+    WM_SIZE = (5),
+    WM_SIZECLIPBOARD = (779),
+    WM_SIZING = (532),
+    WM_SPOOLERSTATUS = (42),
+    WM_STYLECHANGED = (125),
+    WM_STYLECHANGING = (124),
+    WM_SYSCHAR = (262),
+    WM_SYSCOLORCHANGE = (21),
+    WM_SYSCOMMAND = (274),
+    WM_SYSDEADCHAR = (263),
+    WM_SYSKEYDOWN = (260),
+    WM_SYSKEYUP = (261),
+    WM_TCARD = (82),
+    WM_TIMECHANGE = (30),
+    WM_TIMER = (275),
+    WM_UNDO = (772),
+    WM_USER = (1024),
+    WM_USERCHANGED = (84),
+    WM_VKEYTOITEM = (46),
+    WM_VSCROLL = (277),
+    WM_VSCROLLCLIPBOARD = (778),
+    WM_WINDOWPOSCHANGED = (71),
+    WM_WINDOWPOSCHANGING = (70),
+    WM_WININICHANGE = (26),
+    WM_KEYFIRST = (256),
+    WM_KEYLAST = (264),
+    WM_MOUSEFIRST = (512),
+    WM_MOUSELAST = (521),
+}
+struct VA_LIST
+{
+}
+
+
+struct ABC
+{
+    int abcA;
+    UINT abcB;
+    int abcC;
+}
+
+alias ABC* LPABC;
+alias ABC _ABC;
+alias ABC TABC;
+alias ABC* PABC;
+
+struct ABCFLOAT
+{
+    FLOAT abcfA;
+    FLOAT abcfB;
+    FLOAT abcfC;
+}
+
+alias ABCFLOAT* LPABCFLOAT;
+alias ABCFLOAT _ABCFLOAT;
+alias ABCFLOAT TABCFLOAT;
+alias ABCFLOAT* PABCFLOAT;
+
+struct ACCEL
+{
+    ubyte fVirt;
+    ushort key;
+    ushort cmd;
+}
+
+alias ACCEL* LPACCEL;
+alias ACCEL _ACCEL;
+alias ACCEL TACCEL;
+alias ACCEL* PACCEL;
+
+struct ACE_HEADER
+{
+    ubyte AceType;
+    ubyte AceFlags;
+    ushort AceSize;
+}
+
+alias ACE_HEADER _ACE_HEADER;
+alias ACE_HEADER TACE_HEADER;
+alias ACE_HEADER* PACE_HEADER;
+alias DWORD ACCESS_MASK;
+alias ACCESS_MASK REGSAM;
+
+struct ACCESS_ALLOWED_ACE
+{
+    ACE_HEADER Header;
+    ACCESS_MASK Mask;
+    DWORD SidStart;
+}
+
+alias ACCESS_ALLOWED_ACE _ACCESS_ALLOWED_ACE;
+alias ACCESS_ALLOWED_ACE TACCESS_ALLOWED_ACE;
+alias ACCESS_ALLOWED_ACE* PACCESS_ALLOWED_ACE;
+
+struct ACCESS_DENIED_ACE
+{
+    ACE_HEADER Header;
+    ACCESS_MASK Mask;
+    DWORD SidStart;
+}
+
+alias ACCESS_DENIED_ACE _ACCESS_DENIED_ACE;
+alias ACCESS_DENIED_ACE TACCESS_DENIED_ACE;
+
+struct ACCESSTIMEOUT
+{
+    UINT cbSize;
+    DWORD dwFlags;
+    DWORD iTimeOutMSec;
+}
+
+alias ACCESSTIMEOUT _ACCESSTIMEOUT;
+alias ACCESSTIMEOUT TACCESSTIMEOUT;
+alias ACCESSTIMEOUT* PACCESSTIMEOUT;
+
+struct ACL
+{
+    ubyte AclRevision;
+    ubyte Sbz1;
+    ushort AclSize;
+    ushort AceCount;
+    ushort Sbz2;
+}
+
+alias ACL* PACL;
+alias ACL _ACL;
+alias ACL TACL;
+
+struct ACL_REVISION_INFORMATION
+{
+    DWORD AclRevision;
+}
+
+alias ACL_REVISION_INFORMATION _ACL_REVISION_INFORMATION;
+alias ACL_REVISION_INFORMATION TACLREVISIONINFORMATION;
+alias ACL_REVISION_INFORMATION* PACLREVISIONINFORMATION;
+
+struct ACL_SIZE_INFORMATION
+{
+    DWORD AceCount;
+    DWORD AclBytesInUse;
+    DWORD AclBytesFree;
+}
+
+alias ACL_SIZE_INFORMATION _ACL_SIZE_INFORMATION;
+alias ACL_SIZE_INFORMATION TACLSIZEINFORMATION;
+alias ACL_SIZE_INFORMATION* PACLSIZEINFORMATION;
+
+struct ACTION_HEADER
+{
+    ULONG transport_id;
+    USHORT action_code;
+    USHORT reserved;
+}
+
+alias ACTION_HEADER _ACTION_HEADER;
+alias ACTION_HEADER TACTIONHEADER;
+alias ACTION_HEADER* PACTIONHEADER;
+
+struct ADAPTER_STATUS
+{
+    UCHAR[1 + 5] adapter_address;
+    UCHAR rev_major;
+    UCHAR reserved0;
+    UCHAR adapter_type;
+    UCHAR rev_minor;
+    ushort duration;
+    ushort frmr_recv;
+    ushort frmr_xmit;
+    ushort iframe_recv_err;
+    ushort xmit_aborts;
+    DWORD xmit_success;
+    DWORD recv_success;
+    ushort iframe_xmit_err;
+    ushort recv_buff_unavail;
+    ushort t1_timeouts;
+    ushort ti_timeouts;
+    DWORD reserved1;
+    ushort free_ncbs;
+    ushort max_cfg_ncbs;
+    ushort max_ncbs;
+    ushort xmit_buf_unavail;
+    ushort max_dgram_size;
+    ushort pending_sess;
+    ushort max_cfg_sess;
+    ushort max_sess;
+    ushort max_sess_pkt_size;
+    ushort name_count;
+}
+
+alias ADAPTER_STATUS _ADAPTER_STATUS;
+alias ADAPTER_STATUS TADAPTERSTATUS;
+alias ADAPTER_STATUS* PADAPTERSTATUS;
+
+struct ADDJOB_INFO_1
+{
+    LPTSTR Path;
+    DWORD JobId;
+}
+
+alias ADDJOB_INFO_1 _ADDJOB_INFO_1;
+alias ADDJOB_INFO_1 TADDJOB_INFO_1;
+alias ADDJOB_INFO_1* PADDJOB_INFO_1;
+
+struct ANIMATIONINFO
+{
+    UINT cbSize;
+    int iMinAnimate;
+}
+
+alias ANIMATIONINFO* LPANIMATIONINFO;
+alias ANIMATIONINFO _ANIMATIONINFO;
+alias ANIMATIONINFO TANIMATIONINFO;
+alias ANIMATIONINFO* PANIMATIONINFO;
+
+struct RECT
+{
+    LONG left;
+    LONG top;
+    LONG right;
+    LONG bottom;
+}
+
+alias RECT* LPCRECT;
+alias RECT* LPRECT;
+alias RECT _RECT;
+alias RECT TRECT;
+alias RECT* PRECT;
+
+struct RECTL
+{
+    LONG left;
+    LONG top;
+    LONG right;
+    LONG bottom;
+}
+
+alias RECTL _RECTL;
+alias RECTL TRECTL;
+alias RECTL* PRECTL;
+alias RECTL* LPRECTL;
+alias RECTL* LPCRECTL;
+
+struct APPBARDATA
+{
+    DWORD cbSize;
+    HWND hWnd;
+    UINT uCallbackMessage;
+    UINT uEdge;
+    RECT rc;
+    LPARAM lParam;
+}
+
+alias APPBARDATA _APPBARDATA;
+alias APPBARDATA TAPPBARDATA;
+alias APPBARDATA* PAPPBARDATA;
+
+struct BITMAP
+{
+    LONG bmType;
+    LONG bmWidth;
+    LONG bmHeight;
+    LONG bmWidthBytes;
+    ushort bmPlanes;
+    ushort bmBitsPixel;
+    LPVOID bmBits;
+}
+
+alias BITMAP* PBITMAP;
+alias BITMAP* NPBITMAP;
+alias BITMAP* LPBITMAP;
+alias BITMAP TAGBITMAP;
+alias BITMAP TBITMAP;
+
+struct BITMAPCOREHEADER
+{
+    DWORD bcSize;
+    ushort bcWidth;
+    ushort bcHeight;
+    ushort bcPlanes;
+    ushort bcBitCount;
+}
+
+alias BITMAPCOREHEADER TAGBITMAPCOREHEADER;
+alias BITMAPCOREHEADER TBITMAPCOREHEADER;
+alias BITMAPCOREHEADER* PBITMAPCOREHEADER;
+
+struct RGBTRIPLE
+{
+    ubyte rgbtBlue;
+    ubyte rgbtGreen;
+    ubyte rgbtRed;
+}
+
+alias RGBTRIPLE TAGRGBTRIPLE;
+alias RGBTRIPLE TRGBTRIPLE;
+alias RGBTRIPLE* PRGBTRIPLE;
+
+struct BITMAPCOREINFO
+{
+    BITMAPCOREHEADER bmciHeader;
+    RGBTRIPLE[1 + 0] bmciColors;
+}
+
+alias BITMAPCOREINFO* PBITMAPCOREINFO;
+alias BITMAPCOREINFO* LPBITMAPCOREINFO;
+alias BITMAPCOREINFO _BITMAPCOREINFO;
+alias BITMAPCOREINFO TBITMAPCOREINFO;
+
+struct BITMAPINFOHEADER
+{
+    DWORD biSize;
+    LONG biWidth;
+    LONG biHeight;
+    ushort biPlanes;
+    ushort biBitCount;
+    DWORD biCompression;
+    DWORD biSizeImage;
+    LONG biXPelsPerMeter;
+    LONG biYPelsPerMeter;
+    DWORD biClrUsed;
+    DWORD biClrImportant;
+}
+
+alias BITMAPINFOHEADER* LPBITMAPINFOHEADER;
+alias BITMAPINFOHEADER TBITMAPINFOHEADER;
+alias BITMAPINFOHEADER* PBITMAPINFOHEADER;
+
+struct RGBQUAD
+{
+    ubyte rgbBlue;
+    ubyte rgbGreen;
+    ubyte rgbRed;
+    ubyte rgbReserved;
+}
+
+alias RGBQUAD TAGRGBQUAD;
+alias RGBQUAD TRGBQUAD;
+alias RGBQUAD* PRGBQUAD;
+
+struct BITMAPINFO
+{
+    BITMAPINFOHEADER bmiHeader;
+    RGBQUAD[1 + 0] bmiColors;
+}
+
+alias BITMAPINFO* LPBITMAPINFO;
+alias BITMAPINFO* PBITMAPINFO;
+alias BITMAPINFO TBITMAPINFO;
+alias int FXPT2DOT30;
+alias FXPT2DOT30* LPFXPT2DOT30;
+alias FXPT2DOT30 TPFXPT2DOT30;
+alias FXPT2DOT30* PPFXPT2DOT30;
+
+struct CIEXYZ
+{
+    FXPT2DOT30 ciexyzX;
+    FXPT2DOT30 ciexyzY;
+    FXPT2DOT30 ciexyzZ;
+}
+
+alias CIEXYZ TAGCIEXYZ;
+alias CIEXYZ* LPCIEXYZ;
+alias CIEXYZ TPCIEXYZ;
+alias CIEXYZ* PCIEXYZ;
+
+struct CIEXYZTRIPLE
+{
+    CIEXYZ ciexyzRed;
+    CIEXYZ ciexyzGreen;
+    CIEXYZ ciexyzBlue;
+}
+
+alias CIEXYZTRIPLE TAGCIEXYZTRIPLE;
+alias CIEXYZTRIPLE* LPCIEXYZTRIPLE;
+alias CIEXYZTRIPLE TCIEXYZTRIPLE;
+alias CIEXYZTRIPLE* PCIEXYZTRIPLE;
+
+struct BITMAPV4HEADER
+{
+    DWORD bV4Size;
+    LONG bV4Width;
+    LONG bV4Height;
+    ushort bV4Planes;
+    ushort bV4BitCount;
+    DWORD bV4V4Compression;
+    DWORD bV4SizeImage;
+    LONG bV4XPelsPerMeter;
+    LONG bV4YPelsPerMeter;
+    DWORD bV4ClrUsed;
+    DWORD bV4ClrImportant;
+    DWORD bV4RedMask;
+    DWORD bV4GreenMask;
+    DWORD bV4BlueMask;
+    DWORD bV4AlphaMask;
+    DWORD bV4CSType;
+    CIEXYZTRIPLE bV4Endpoints;
+    DWORD bV4GammaRed;
+    DWORD bV4GammaGreen;
+    DWORD bV4GammaBlue;
+}
+
+alias BITMAPV4HEADER* LPBITMAPV4HEADER;
+alias BITMAPV4HEADER TBITMAPV4HEADER;
+alias BITMAPV4HEADER* PBITMAPV4HEADER;
+
+align(1) struct BITMAPFILEHEADER
+{
+    ushort bfType;
+    DWORD bfSize;
+    ushort bfReserved1;
+    ushort bfReserved2;
+    DWORD bfOffBits;
+}
+
+
+struct BLOB
+{
+    ULONG cbSize;
+    ubyte* pBlobData;
+}
+
+alias BLOB _BLOB;
+alias BLOB TBLOB;
+alias BLOB* PBLOB;
+
+struct SHITEMID
+{
+    USHORT cb;
+    ubyte[1 + 0] abID;
+}
+
+alias SHITEMID* LPSHITEMID;
+alias SHITEMID* LPCSHITEMID;
+alias SHITEMID _SHITEMID;
+alias SHITEMID TSHITEMID;
+alias SHITEMID* PSHITEMID;
+
+struct ITEMIDLIST
+{
+    SHITEMID mkid;
+}
+
+alias ITEMIDLIST* LPITEMIDLIST;
+alias ITEMIDLIST* LPCITEMIDLIST;
+alias ITEMIDLIST _ITEMIDLIST;
+alias ITEMIDLIST TITEMIDLIST;
+alias ITEMIDLIST* PITEMIDLIST;
+
+struct BROWSEINFOA
+{
+    HWND hwndOwner;
+    LPCITEMIDLIST pidlRoot;
+    LPSTR pszDisplayName;
+    LPCSTR lpszTitle;
+    UINT ulFlags;
+    BFFCALLBACK lpfn;
+    LPARAM lParam;
+    int iImage;
+}
+struct BROWSEINFOW
+{
+    HWND hwndOwner;
+    LPCITEMIDLIST pidlRoot;
+    LPWSTR pszDisplayName;
+    LPCWSTR lpszTitle;
+    UINT ulFlags;
+    BFFCALLBACK lpfn;
+    LPARAM lParam;
+    int iImage;
+}
+version( Win32SansUnicode )
+{
+    alias BROWSEINFOA BROWSEINFO;
+}
+else
+{
+    alias BROWSEINFOW BROWSEINFO;
+}
+alias BROWSEINFO* PBROWSEINFO, LPBROWSEINFO;
+
+struct FILETIME
+{
+    DWORD dwLowDateTime;
+    DWORD dwHighDateTime;
+}
+
+alias FILETIME* LPFILETIME;
+alias FILETIME _FILETIME;
+alias FILETIME TFILETIME;
+alias FILETIME* PFILETIME;
+
+struct BY_HANDLE_FILE_INFORMATION
+{
+    DWORD dwFileAttributes;
+    FILETIME ftCreationTime;
+    FILETIME ftLastAccessTime;
+    FILETIME ftLastWriteTime;
+    DWORD dwVolumeSerialNumber;
+    DWORD nFileSizeHigh;
+    DWORD nFileSizeLow;
+    DWORD nNumberOfLinks;
+    DWORD nFileIndexHigh;
+    DWORD nFileIndexLow;
+}
+
+alias BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION;
+alias BY_HANDLE_FILE_INFORMATION _BY_HANDLE_FILE_INFORMATION;
+alias BY_HANDLE_FILE_INFORMATION TBYHANDLEFILEINFORMATION;
+alias BY_HANDLE_FILE_INFORMATION* PBYHANDLEFILEINFORMATION;
+
+struct FIXED
+{
+    ushort fract;
+    int value;
+}
+
+alias FIXED _FIXED;
+alias FIXED TFIXED;
+alias FIXED* PFIXED;
+
+struct POINT
+{
+    LONG x;
+    LONG y;
+}
+
+alias POINT* LPPOINT;
+alias POINT TAGPOINT;
+alias POINT TPOINT;
+alias POINT* PPOINT;
+
+struct POINTFX
+{
+    FIXED x;
+    FIXED y;
+}
+
+alias POINTFX TAGPOINTFX;
+alias POINTFX TPOINTFX;
+alias POINTFX* PPOINTFX;
+
+struct POINTL
+{
+    LONG x;
+    LONG y;
+}
+
+alias POINTL _POINTL;
+alias POINTL TPOINTL;
+alias POINTL* PPOINTL;
+
+struct TSMALLPOINT
+{
+    byte X, Y;
+}
+
+
+struct POINTS
+{
+    SHORT x;
+    SHORT y;
+}
+
+alias POINTS TAGPOINTS;
+alias POINTS TPOINTS;
+alias POINTS* PPOINTS;
+
+struct CANDIDATEFORM
+{
+    DWORD dwIndex;
+    DWORD dwStyle;
+    POINT ptCurrentPos;
+    RECT rcArea;
+}
+
+alias CANDIDATEFORM* LPCANDIDATEFORM;
+alias CANDIDATEFORM _TAGCANDIDATEFORM;
+alias CANDIDATEFORM TCANDIDATEFORM;
+alias CANDIDATEFORM* PCANDIDATEFORM;
+
+struct CANDIDATELIST
+{
+    DWORD dwSize;
+    DWORD dwStyle;
+    DWORD dwCount;
+    DWORD dwSelection;
+    DWORD dwPageStart;
+    DWORD dwPageSize;
+    DWORD[1 + 0] dwOffset;
+}
+
+alias CANDIDATELIST* LPCANDIDATELIST;
+alias CANDIDATELIST _TAGCANDIDATELIST;
+alias CANDIDATELIST TCANDIDATELIST;
+alias CANDIDATELIST* PCANDIDATELIST;
+
+struct CREATESTRUCT
+{
+    LPVOID lpCreateParams;
+    HINST hInstance;
+    HMENU hMenu;
+    HWND hwndParent;
+    int cy;
+    int cx;
+    int y;
+    int x;
+    LONG style;
+    LPCTSTR lpszName;
+    LPCTSTR lpszClass;
+    DWORD dwExStyle;
+}
+
+alias CREATESTRUCT* LPCREATESTRUCT;
+alias CREATESTRUCT TAGCREATESTRUCT;
+alias CREATESTRUCT TCREATESTRUCT;
+alias CREATESTRUCT* PCREATESTRUCT;
+
+struct CBT_CREATEWND
+{
+    LPCREATESTRUCT lpcs;
+    HWND hwndInsertAfter;
+}
+
+alias CBT_CREATEWND TAGCBT_CREATEWND;
+alias CBT_CREATEWND TCBT_CREATEWND;
+alias CBT_CREATEWND* PCBT_CREATEWND;
+
+struct CBTACTIVATESTRUCT
+{
+    WINBOOL fMouse;
+    HWND hWndActive;
+}
+
+alias CBTACTIVATESTRUCT TAGCBTACTIVATESTRUCT;
+alias CBTACTIVATESTRUCT TCBTACTIVATESTRUCT;
+alias CBTACTIVATESTRUCT* PCBTACTIVATESTRUCT;
+
+struct CHAR_INFO
+{
+
+    union
+    {
+        struct
+        {
+            WCHAR UnicodeChar;
+            ushort Attributes;
+        }
+        struct
+        {
+            char AsciiChar;
+        }
+    }
+}
+
+alias CHAR_INFO _CHAR_INFO;
+alias CHAR_INFO TCHAR_INFO;
+alias CHAR_INFO* PCHAR_INFO;
+
+struct CHARFORMAT
+{
+    UINT cbSize;
+    DWORD dwMask;
+    DWORD dwEffects;
+    LONG yHeight;
+    LONG yOffset;
+    COLORREF crTextColor;
+    ubyte bCharSet;
+    ubyte bPitchAndFamily;
+    TCHAR[1 + LF_FACESIZE-1] szFaceName;
+}
+
+alias CHARFORMAT _CHARFORMAT;
+alias CHARFORMAT TCHARFORMAT;
+alias CHARFORMAT* PCHARFORMAT;
+
+struct CHARRANGE
+{
+    LONG cpMin;
+    LONG cpMax;
+}
+
+alias CHARRANGE _CHARRANGE;
+alias CHARRANGE TCHARRANGE;
+alias CHARRANGE* PCHARRANGE;
+
+struct CHARSET
+{
+    DWORD[1 + 2] aflBlock;
+    DWORD flLang;
+}
+
+alias CHARSET TAGCHARSET;
+alias CHARSET TCHARSET;
+alias CHARSET* PCHARSET;
+
+struct FONTSIGNATURE
+{
+    DWORD[1 + 3] fsUsb;
+    DWORD[1 + 1] fsCsb;
+}
+
+alias FONTSIGNATURE* LPFONTSIGNATURE;
+alias FONTSIGNATURE TAGFONTSIGNATURE;
+alias FONTSIGNATURE TFONTSIGNATURE;
+alias FONTSIGNATURE* PFONTSIGNATURE;
+
+struct CHARSETINFO
+{
+    UINT ciCharset;
+    UINT ciACP;
+    FONTSIGNATURE fs;
+}
+
+alias CHARSETINFO* LPCHARSETINFO;
+alias CHARSETINFO TCHARSETINFO;
+alias CHARSETINFO* PCHARSETINFO;
+
+struct CHOOSECOLORA {
+    DWORD        lStructSize;
+    HWND         hwndOwner;
+    HWND         hInstance;
+    COLORREF     rgbResult;
+    COLORREF*    lpCustColors;
+    DWORD        Flags;
+    LPARAM       lCustData;
+    LPCCHOOKPROC lpfnHook;
+    LPCSTR      lpTemplateName;
+}
+alias CHOOSECOLORA* PCHOOSECOLORA, LPCHOOSECOLORA;
+struct CHOOSECOLORW {
+    DWORD        lStructSize;
+    HWND         hwndOwner;
+    HWND         hInstance;
+    COLORREF     rgbResult;
+    COLORREF*    lpCustColors;
+    DWORD        Flags;
+    LPARAM       lCustData;
+    LPCCHOOKPROC lpfnHook;
+    LPCWSTR      lpTemplateName;
+}
+alias CHOOSECOLORW* PCHOOSECOLORW, LPCHOOSECOLORW;
+version(Win32SansUnicode)
+{
+    alias CHOOSECOLORA CHOOSECOLOR;
+}
+else
+{
+    alias CHOOSECOLORW CHOOSECOLOR;
+}
+alias CHOOSECOLOR* PCHOOSECOLOR, LPCHOOSECOLOR;
+
+struct LOGFONTA
+{
+    LONG lfHeight;
+    LONG lfWidth;
+    LONG lfEscapement;
+    LONG lfOrientation;
+    LONG lfWeight;
+    ubyte lfItalic;
+    ubyte lfUnderline;
+    ubyte lfStrikeOut;
+    ubyte lfCharSet;
+    ubyte lfOutPrecision;
+    ubyte lfClipPrecision;
+    ubyte lfQuality;
+    ubyte lfPitchAndFamily;
+    ubyte[1 + LF_FACESIZE-1] lfFaceName;
+}
+
+alias LOGFONTA  TLOGFONTA;
+alias LOGFONTA* PLOGFONTA;
+alias LOGFONTA* LPLOGFONTA;
+
+struct LOGFONTW
+{
+    LONG lfHeight;
+    LONG lfWidth;
+    LONG lfEscapement;
+    LONG lfOrientation;
+    LONG lfWeight;
+    ubyte lfItalic;
+    ubyte lfUnderline;
+    ubyte lfStrikeOut;
+    ubyte lfCharSet;
+    ubyte lfOutPrecision;
+    ubyte lfClipPrecision;
+    ubyte lfQuality;
+    ubyte lfPitchAndFamily;
+    WCHAR lfFaceName[LF_FACESIZE];
+};
+
+alias LOGFONTW  TLOGFONTW;
+alias LOGFONTW* LPLOGFONTW;
+alias LOGFONTW* PLOGFONTW;
+
+version( Win32SansUnicode ){
+    alias LOGFONTA  LOGFONT;
+    alias LOGFONTA  TLOGFONT;
+    alias LOGFONTA* PLOGFONT;
+    alias LOGFONTA* LPLOGFONT;
+}
+else{
+    alias LOGFONTW  LOGFONT;
+    alias LOGFONTW  TLOGFONT;
+    alias LOGFONTW* PLOGFONT;
+    alias LOGFONTW* LPLOGFONT;
+}
+
+struct TCHOOSEFONT
+{
+    DWORD lStructSize;
+    HWND hwndOwner;
+    HDC hDC;
+    LPLOGFONT lpLogFont;
+    INT iPointSize;
+    DWORD Flags;
+    DWORD rgbColors;
+    LPARAM lCustData;
+    LPCFHOOKPROC lpfnHook;
+    LPCTSTR lpTemplateName;
+    HINST hInstance;
+    LPTSTR lpszStyle;
+    ushort nFontType;
+    ushort ___MISSING_ALIGNMENT__;
+    INT nSizeMin;
+    INT nSizeMax;
+}
+
+alias TCHOOSEFONT* LPCHOOSEFONT;
+alias TCHOOSEFONT* PCHOOSEFONT;
+
+struct CIDA
+{
+    UINT cidl;
+    UINT[1 + 0] aoffset;
+}
+
+alias CIDA* LPIDA;
+alias CIDA _IDA;
+alias CIDA TIDA;
+alias CIDA* PIDA;
+
+struct CLIENTCREATESTRUCT
+{
+    HANDLE hWindowMenu;
+    UINT idFirstChild;
+}
+
+alias CLIENTCREATESTRUCT* LPCLIENTCREATESTRUCT;
+alias CLIENTCREATESTRUCT TAGCLIENTCREATESTRUCT;
+alias CLIENTCREATESTRUCT TCLIENTCREATESTRUCT;
+alias CLIENTCREATESTRUCT* PCLIENTCREATESTRUCT;
+
+struct CMINVOKECOMMANDINFO
+{
+    DWORD cbSize;
+    DWORD fMask;
+    HWND hwnd;
+    LPCSTR lpVerb;
+    LPCSTR lpParameters;
+    LPCSTR lpDirectory;
+    int nShow;
+    DWORD dwHotKey;
+    HANDLE hIcon;
+}
+
+alias CMINVOKECOMMANDINFO* LPCMINVOKECOMMANDINFO;
+alias CMINVOKECOMMANDINFO _CMINVOKECOMMANDINFO;
+alias CMINVOKECOMMANDINFO TCMINVOKECOMMANDINFO;
+alias CMINVOKECOMMANDINFO* PCMINVOKECOMMANDINFO;
+
+struct COLORADJUSTMENT
+{
+    ushort caSize;
+    ushort caFlags;
+    ushort caIlluminantIndex;
+    ushort caRedGamma;
+    ushort caGreenGamma;
+    ushort caBlueGamma;
+    ushort caReferenceBlack;
+    ushort caReferenceWhite;
+    SHORT caContrast;
+    SHORT caBrightness;
+    SHORT caColorfulness;
+    SHORT caRedGreenTint;
+}
+
+alias COLORADJUSTMENT* LPCOLORADJUSTMENT;
+alias COLORADJUSTMENT TAGCOLORADJUSTMENT;
+alias COLORADJUSTMENT TCOLORADJUSTMENT;
+alias COLORADJUSTMENT* PCOLORADJUSTMENT;
+
+struct COLORMAP
+{
+    COLORREF from;
+    COLORREF _to;
+}
+
+alias COLORMAP* LPCOLORMAP;
+alias COLORMAP _COLORMAP;
+alias COLORMAP TCOLORMAP;
+alias COLORMAP* PCOLORMAP;
+
+struct DCB
+{
+    DWORD DCBlength;
+    DWORD BaudRate;
+    int flag0;
+    ushort wReserved;
+    ushort XonLim;
+    ushort XoffLim;
+    ubyte ByteSize;
+    ubyte Parity;
+    ubyte StopBits;
+    char XonChar;
+    char XoffChar;
+    char ErrorChar;
+    char EofChar;
+    char EvtChar;
+    ushort wReserved1;
+}
+
+alias DCB* LPDCB;
+alias DCB _DCB;
+alias DCB TDCB;
+alias DCB* PDCB;
+enum : DWORD {
+    bm_DCB_fBinary = (0x1),
+    bp_DCB_fBinary = (0),
+    bm_DCB_fParity = (0x2),
+    bp_DCB_fParity = (1),
+    bm_DCB_fOutxCtsFlow = (0x4),
+    bp_DCB_fOutxCtsFlow = (2),
+    bm_DCB_fOutxDsrFlow = (0x8),
+    bp_DCB_fOutxDsrFlow = (3),
+    bm_DCB_fDtrControl = (0x30),
+    bp_DCB_fDtrControl = (4),
+    bm_DCB_fDsrSensitivity = (0x40),
+    bp_DCB_fDsrSensitivity = (6),
+    bm_DCB_fTXContinueOnXoff = (0x80),
+    bp_DCB_fTXContinueOnXoff = (7),
+    bm_DCB_fOutX = (0x100),
+    bp_DCB_fOutX = (8),
+    bm_DCB_fInX = (0x200),
+    bp_DCB_fInX = (9),
+    bm_DCB_fErrorChar = (0x400),
+    bp_DCB_fErrorChar = (10),
+    bm_DCB_fNull = (0x800),
+    bp_DCB_fNull = (11),
+    bm_DCB_fRtsControl = (0x3000),
+    bp_DCB_fRtsControl = (12),
+    bm_DCB_fAbortOnError = (0x4000),
+    bp_DCB_fAbortOnError = (14),
+    bm_DCB_fDummy2 = (0xFFFF8000),
+    bp_DCB_fDummy2 = (15),
+}
+
+struct COMMCONFIG
+{
+    DWORD dwSize;
+    ushort wVersion;
+    ushort wReserved;
+    DCB dcb;
+    DWORD dwProviderSubType;
+    DWORD dwProviderOffset;
+    DWORD dwProviderSize;
+    WCHAR[1 + 0] wcProviderData;
+}
+
+alias COMMCONFIG* LPCOMMCONFIG;
+alias COMMCONFIG _COMM_CONFIG;
+alias COMMCONFIG TCOMMCONFIG;
+alias COMMCONFIG* PCOMMCONFIG;
+
+struct COMMPROP
+{
+    ushort wPacketLength;
+    ushort wPacketVersion;
+    DWORD dwServiceMask;
+    DWORD dwReserved1;
+    DWORD dwMaxTxQueue;
+    DWORD dwMaxRxQueue;
+    DWORD dwMaxBaud;
+    DWORD dwProvSubType;
+    DWORD dwProvCapabilities;
+    DWORD dwSettableParams;
+    DWORD dwSettableBaud;
+    ushort wSettableData;
+    ushort wSettableStopParity;
+    DWORD dwCurrentTxQueue;
+    DWORD dwCurrentRxQueue;
+    DWORD dwProvSpec1;
+    DWORD dwProvSpec2;
+    WCHAR[1 + 0] wcProvChar;
+}
+
+alias COMMPROP* LPCOMMPROP;
+alias COMMPROP _COMMPROP;
+alias COMMPROP TCOMMPROP;
+alias COMMPROP* PCOMMPROP;
+
+struct COMMTIMEOUTS
+{
+    DWORD ReadIntervalTimeout;
+    DWORD ReadTotalTimeoutMultiplier;
+    DWORD ReadTotalTimeoutConstant;
+    DWORD WriteTotalTimeoutMultiplier;
+    DWORD WriteTotalTimeoutConstant;
+}
+
+alias COMMTIMEOUTS* LPCOMMTIMEOUTS;
+alias COMMTIMEOUTS _COMMTIMEOUTS;
+alias COMMTIMEOUTS TCOMMTIMEOUTS;
+alias COMMTIMEOUTS* PCOMMTIMEOUTS;
+
+struct COMPAREITEMSTRUCT
+{
+    UINT CtlType;
+    UINT CtlID;
+    HWND hwndItem;
+    UINT itemID1;
+    DWORD itemData1;
+    UINT itemID2;
+    DWORD itemData2;
+}
+
+alias COMPAREITEMSTRUCT TAGCOMPAREITEMSTRUCT;
+alias COMPAREITEMSTRUCT TCOMPAREITEMSTRUCT;
+alias COMPAREITEMSTRUCT* PCOMPAREITEMSTRUCT;
+
+struct COMPCOLOR
+{
+    COLORREF crText;
+    COLORREF crBackground;
+    DWORD dwEffects;
+}
+
+alias COMPCOLOR TCOMPCOLOR;
+alias COMPCOLOR* PCOMPCOLOR;
+
+struct COMPOSITIONFORM
+{
+    DWORD dwStyle;
+    POINT ptCurrentPos;
+    RECT rcArea;
+}
+
+alias COMPOSITIONFORM* LPCOMPOSITIONFORM;
+alias COMPOSITIONFORM _TAGCOMPOSITIONFORM;
+alias COMPOSITIONFORM TCOMPOSITIONFORM;
+alias COMPOSITIONFORM* PCOMPOSITIONFORM;
+
+struct COMSTAT
+{
+    int flag0;
+    DWORD cbInQue;
+    DWORD cbOutQue;
+}
+
+alias COMSTAT* LPCOMSTAT;
+alias COMSTAT _COMSTAT;
+alias COMSTAT TCOMSTAT;
+alias COMSTAT* PCOMSTAT;
+enum : DWORD {
+    bm_COMSTAT_fCtsHold = (0x1),
+    bp_COMSTAT_fCtsHold = (0),
+    bm_COMSTAT_fDsrHold = (0x2),
+    bp_COMSTAT_fDsrHold = (1),
+    bm_COMSTAT_fRlsdHold = (0x4),
+    bp_COMSTAT_fRlsdHold = (2),
+    bm_COMSTAT_fXoffHold = (0x8),
+    bp_COMSTAT_fXoffHold = (3),
+    bm_COMSTAT_fXoffSent = (0x10),
+    bp_COMSTAT_fXoffSent = (4),
+    bm_COMSTAT_fEof = (0x20),
+    bp_COMSTAT_fEof = (5),
+    bm_COMSTAT_fTxim = (0x40),
+    bp_COMSTAT_fTxim = (6),
+    bm_COMSTAT_fReserved = (0xFFFFFF80),
+    bp_COMSTAT_fReserved = (7),
+}
+struct CONSOLE_CURSOR_INFO
+{
+    DWORD dwSize;
+    WINBOOL bVisible;
+}
+
+alias CONSOLE_CURSOR_INFO* PCONSOLE_CURSOR_INFO;
+alias CONSOLE_CURSOR_INFO _CONSOLE_CURSOR_INFO;
+alias CONSOLE_CURSOR_INFO TCONSOLECURSORINFO;
+alias CONSOLE_CURSOR_INFO* PCONSOLECURSORINFO;
+alias CONSOLE_CURSOR_INFO TCURSORINFO;
+
+struct COORD
+{
+    SHORT X;
+    SHORT Y;
+}
+
+alias COORD _COORD;
+alias COORD TCOORD;
+alias COORD* PCOORD;
+
+struct SMALL_RECT
+{
+    SHORT Left;
+    SHORT Top;
+    SHORT Right;
+    SHORT Bottom;
+}
+
+alias SMALL_RECT _SMALL_RECT;
+alias SMALL_RECT TSMALL_RECT;
+alias SMALL_RECT* PSMALL_RECT;
+
+align(1) struct CONSOLE_SCREEN_BUFFER_INFO
+{
+    COORD dwSize;
+    COORD dwCursorPosition;
+    ushort wAttributes;
+    SMALL_RECT srWindow;
+    COORD dwMaximumWindowSize;
+}
+
+alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLE_SCREEN_BUFFER_INFO;
+alias CONSOLE_SCREEN_BUFFER_INFO _CONSOLE_SCREEN_BUFFER_INFO;
+alias CONSOLE_SCREEN_BUFFER_INFO TCONSOLESCREENBUFFERINFO;
+alias CONSOLE_SCREEN_BUFFER_INFO* PCONSOLESCREENBUFFERINFO;
+
+struct FLOATING_SAVE_AREA
+{
+    DWORD ControlWord;
+    DWORD StatusWord;
+    DWORD TagWord;
+    DWORD ErrorOffset;
+    DWORD ErrorSelector;
+    DWORD DataOffset;
+    DWORD DataSelector;
+    ubyte[1 + 79] RegisterArea;
+    DWORD Cr0NpxState;
+}
+
+alias FLOATING_SAVE_AREA _FLOATING_SAVE_AREA;
+alias FLOATING_SAVE_AREA TFLOATINGSAVEAREA;
+alias FLOATING_SAVE_AREA* PFLOATINGSAVEAREA;
+
+enum : DWORD
+{
+//
+// The following flags control the contents of the CONTEXT structure.
+//
+    CONTEXT_i386 = 0x00010000,    // this assumes that i386 and
+    CONTEXT_i486 = 0x00010000,    // i486 have identical context records
+
+    CONTEXT_CONTROL =         (CONTEXT_i386 | 0x00000001), // SS:SP, CS:IP, FLAGS, BP
+    CONTEXT_INTEGER =         (CONTEXT_i386 | 0x00000002), // AX, BX, CX, DX, SI, DI
+    CONTEXT_SEGMENTS =        (CONTEXT_i386 | 0x00000004), // DS, ES, FS, GS
+    CONTEXT_FLOATING_POINT =  (CONTEXT_i386 | 0x00000008), // 387 state
+    CONTEXT_DEBUG_REGISTERS = (CONTEXT_i386 | 0x00000010), // DB 0-3,6,7
+
+    CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS),
+}
+
+struct CONTEXT
+{
+    DWORD ContextFlags;
+    DWORD Dr0;
+    DWORD Dr1;
+    DWORD Dr2;
+    DWORD Dr3;
+    DWORD Dr6;
+    DWORD Dr7;
+    FLOATING_SAVE_AREA FloatSave;
+    DWORD SegGs;
+    DWORD SegFs;
+    DWORD SegEs;
+    DWORD SegDs;
+    DWORD Edi;
+    DWORD Esi;
+    DWORD Ebx;
+    DWORD Edx;
+    DWORD Ecx;
+    DWORD Eax;
+    DWORD Ebp;
+    DWORD Eip;
+    DWORD SegCs;
+    DWORD EFlags;
+    DWORD Esp;
+    DWORD SegSs;
+}
+
+alias CONTEXT* LPCONTEXT;
+alias CONTEXT _CONTEXT;
+alias CONTEXT TCONTEXT;
+alias CONTEXT* PCONTEXT;
+
+struct LIST_ENTRY
+{
+    _LIST_ENTRY* Flink;
+    _LIST_ENTRY* Blink;
+}
+
+alias LIST_ENTRY _LIST_ENTRY;
+alias LIST_ENTRY TLISTENTRY;
+alias LIST_ENTRY* PLISTENTRY;
+
+struct CRITICAL_SECTION_DEBUG
+{
+    ushort _Type;
+    ushort CreatorBackTraceIndex;
+    _CRITICAL_SECTION* CriticalSection;
+    LIST_ENTRY ProcessLocksList;
+    DWORD EntryCount;
+    DWORD ContentionCount;
+    DWORD Depth;
+    PVOID[1 + 4] OwnerBackTrace;
+}
+
+alias CRITICAL_SECTION_DEBUG* LPCRITICAL_SECTION_DEBUG;
+alias CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
+alias CRITICAL_SECTION_DEBUG _CRITICAL_SECTION_DEBUG;
+alias CRITICAL_SECTION_DEBUG TCRITICALSECTIONDEBUG;
+alias CRITICAL_SECTION_DEBUG* PCRITICALSECTIONDEBUG;
+
+struct CRITICAL_SECTION
+{
+    PCRITICAL_SECTION_DEBUG DebugInfo;
+    LONG LockCount;
+    LONG RecursionCount;
+    HANDLE OwningThread;
+    HANDLE LockSemaphore;
+    DWORD Reserved;
+}
+
+alias CRITICAL_SECTION* LPCRITICAL_SECTION;
+alias CRITICAL_SECTION* PCRITICAL_SECTION;
+alias CRITICAL_SECTION _CRITICAL_SECTION;
+alias CRITICAL_SECTION TCRITICALSECTION;
+alias CRITICAL_SECTION* PCRITICALSECTION;
+
+struct SECURITY_QUALITY_OF_SERVICE
+{
+    DWORD Length;
+    SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+    WINBOOL ContextTrackingMode;
+    ubyte EffectiveOnly;
+}
+
+alias SECURITY_QUALITY_OF_SERVICE* PSECURITY_QUALITY_OF_SERVICE;
+alias SECURITY_QUALITY_OF_SERVICE _SECURITY_QUALITY_OF_SERVICE;
+alias SECURITY_QUALITY_OF_SERVICE TSECURITYQUALITYOFSERVICE;
+alias SECURITY_QUALITY_OF_SERVICE* PSECURITYQUALITYOFSERVICE;
+
+struct CONVCONTEXT
+{
+    UINT cb;
+    UINT wFlags;
+    UINT wCountryID;
+    int iCodePage;
+    DWORD dwLangID;
+    DWORD dwSecurity;
+    SECURITY_QUALITY_OF_SERVICE qos;
+}
+
+alias CONVCONTEXT TAGCONVCONTEXT;
+alias CONVCONTEXT TCONVCONTEXT;
+alias CONVCONTEXT* PCONVCONTEXT;
+
+struct CONVINFO
+{
+    DWORD cb;
+    DWORD hUser;
+    HCONV hConvPartner;
+    HSZ hszSvcPartner;
+    HSZ hszServiceReq;
+    HSZ hszTopic;
+    HSZ hszItem;
+    UINT wFmt;
+    UINT wType;
+    UINT wStatus;
+    UINT wConvst;
+    UINT wLastError;
+    HCONVLIST hConvList;
+    CONVCONTEXT ConvCtxt;
+    HWND _hwnd;
+    HWND hwndPartner;
+}
+
+alias CONVINFO TAGCONVINFO;
+alias CONVINFO TCONVINFO;
+alias CONVINFO* PCONVINFO;
+
+struct COPYDATASTRUCT
+{
+    DWORD dwData;
+    DWORD cbData;
+    PVOID lpData;
+}
+
+alias COPYDATASTRUCT TAGCOPYDATASTRUCT;
+alias COPYDATASTRUCT TCOPYDATASTRUCT;
+alias COPYDATASTRUCT* PCOPYDATASTRUCT;
+
+struct CPINFO
+{
+    UINT MaxCharSize;
+    ubyte[1 + MAX_DEFAULTCHAR-1] DefaultChar;
+    ubyte[1 + MAX_LEADBYTES-1] LeadByte;
+}
+
+alias CPINFO* LPCPINFO;
+alias CPINFO _CPINFO;
+alias CPINFO TCPINFO;
+alias CPINFO* PCPINFO;
+
+struct CPLINFO
+{
+    int idIcon;
+    int idName;
+    int idInfo;
+    LONG lData;
+}
+
+alias CPLINFO TAGCPLINFO;
+alias CPLINFO TCPLINFO;
+alias CPLINFO* PCPLINFO;
+
+struct CREATE_PROCESS_DEBUG_INFO
+{
+    HANDLE hFile;
+    HANDLE hProcess;
+    HANDLE hThread;
+    LPVOID lpBaseOfImage;
+    DWORD dwDebugInfoFileOffset;
+    DWORD nDebugInfoSize;
+    LPVOID lpThreadLocalBase;
+    LPTHREAD_START_ROUTINE lpStartAddress;
+    LPVOID lpImageName;
+    ushort fUnicode;
+}
+
+alias CREATE_PROCESS_DEBUG_INFO _CREATE_PROCESS_DEBUG_INFO;
+alias CREATE_PROCESS_DEBUG_INFO TCREATEPROCESSDEBUGINFO;
+alias CREATE_PROCESS_DEBUG_INFO* PCREATEPROCESSDEBUGINFO;
+
+struct CREATE_THREAD_DEBUG_INFO
+{
+    HANDLE hThread;
+    LPVOID lpThreadLocalBase;
+    LPTHREAD_START_ROUTINE lpStartAddress;
+}
+
+alias CREATE_THREAD_DEBUG_INFO _CREATE_THREAD_DEBUG_INFO;
+alias CREATE_THREAD_DEBUG_INFO TCREATETHREADDEBUGINFO;
+alias CREATE_THREAD_DEBUG_INFO* PCREATETHREADDEBUGINFO;
+
+struct CURRENCYFMT
+{
+    UINT NumDigits;
+    UINT LeadingZero;
+    UINT Grouping;
+    LPTSTR lpDecimalSep;
+    LPTSTR lpThousandSep;
+    UINT NegativeOrder;
+    UINT PositiveOrder;
+    LPTSTR lpCurrencySymbol;
+}
+
+alias CURRENCYFMT _CURRENCYFMT;
+alias CURRENCYFMT TCURRENCYFMT;
+alias CURRENCYFMT* PCURRENCYFMT;
+
+struct CURSORSHAPE
+{
+    int xHotSpot;
+    int yHotSpot;
+    int cx;
+    int cy;
+    int cbWidth;
+    ubyte Planes;
+    ubyte BitsPixel;
+}
+
+alias CURSORSHAPE* LPCURSORSHAPE;
+alias CURSORSHAPE TAGCURSORSHAPE;
+alias CURSORSHAPE TCURSORSHAPE;
+alias CURSORSHAPE* PCURSORSHAPE;
+
+struct CWPRETSTRUCT
+{
+    LRESULT lResult;
+    LPARAM lParam;
+    WPARAM wParam;
+    DWORD message;
+    HWND hwnd;
+}
+
+alias CWPRETSTRUCT TAGCWPRETSTRUCT;
+alias CWPRETSTRUCT TCWPRETSTRUCT;
+alias CWPRETSTRUCT* PCWPRETSTRUCT;
+
+struct CWPSTRUCT
+{
+    LPARAM lParam;
+    WPARAM wParam;
+    UINT message;
+    HWND hwnd;
+}
+
+alias CWPSTRUCT TAGCWPSTRUCT;
+alias CWPSTRUCT TCWPSTRUCT;
+alias CWPSTRUCT* PCWPSTRUCT;
+
+struct DATATYPES_INFO_1
+{
+    LPTSTR pName;
+}
+
+alias DATATYPES_INFO_1 _DATATYPES_INFO_1;
+alias DATATYPES_INFO_1 TDATATYPESINFO1;
+alias DATATYPES_INFO_1* PDATATYPESINFO1;
+
+struct DDEACK
+{
+    ushort flag0;
+}
+
+alias DDEACK TDDEACK;
+alias DDEACK* PDDEACK;
+enum : DWORD {
+    bm_DDEACK_bAppReturnCode = (0xFF),
+    bp_DDEACK_bAppReturnCode = (0),
+    bm_DDEACK_reserved = (0x3F00),
+    bp_DDEACK_reserved = (8),
+    bm_DDEACK_fBusy = (0x4000),
+    bp_DDEACK_fBusy = (14),
+    bm_DDEACK_fAck = (0x8000),
+    bp_DDEACK_fAck = (15),
+}
+
+struct DDEADVISE
+{
+    ushort flag0;
+    int cfFormat;
+}
+
+alias DDEADVISE TDDEADVISE;
+alias DDEADVISE* PDDEADVISE;
+enum : DWORD {
+    bm_DDEADVISE_reserved = (0x3FFF),
+    bp_DDEADVISE_reserved = (0),
+    bm_DDEADVISE_fDeferUpd = (0x4000),
+    bp_DDEADVISE_fDeferUpd = (14),
+    bm_DDEADVISE_fAckReq = (0x8000),
+    bp_DDEADVISE_fAckReq = (15),
+}
+
+struct DDEDATA
+{
+    ushort flag0;
+    int cfFormat;
+    ubyte[1 + 0] Value;
+}
+
+alias DDEDATA* PDDEDATA;
+enum : DWORD {
+    bm_DDEDATA_unused = (0xFFF),
+    bp_DDEDATA_unused = (0),
+    bm_DDEDATA_fResponse = (0x1000),
+    bp_DDEDATA_fResponse = (12),
+    bm_DDEDATA_fRelease = (0x2000),
+    bp_DDEDATA_fRelease = (13),
+    bm_DDEDATA_reserved = (0x4000),
+    bp_DDEDATA_reserved = (14),
+    bm_DDEDATA_fAckReq = (0x8000),
+    bp_DDEDATA_fAckReq = (15),
+}
+
+struct DDELN
+{
+    ushort flag0;
+    int cfFormat;
+}
+
+alias DDELN TDDELN;
+alias DDELN* PDDELN;
+enum : DWORD {
+    bm_DDELN_unused = (0x1FFF),
+    bp_DDELN_unused = (0),
+    bm_DDELN_fRelease = (0x2000),
+    bp_DDELN_fRelease = (13),
+    bm_DDELN_fDeferUpd = (0x4000),
+    bp_DDELN_fDeferUpd = (14),
+    bm_DDELN_fAckReq = (0x8000),
+    bp_DDELN_fAckReq = (15),
+}
+
+struct DDEML_MSG_HOOK_DATA
+{
+    UINT uiLo;
+    UINT uiHi;
+    DWORD cbData;
+    DWORD[1 + 7] Data;
+}
+
+alias DDEML_MSG_HOOK_DATA TAGDDEML_MSG_HOOK_DATA;
+alias DDEML_MSG_HOOK_DATA TDDEMLMSGHOOKDATA;
+alias DDEML_MSG_HOOK_DATA* PDDEMLMSGHOOKDATA;
+
+struct DDEPOKE
+{
+    ushort flag0;
+    int cfFormat;
+    ubyte[1 + 0] Value;
+}
+
+alias DDEPOKE TDDEPOKE;
+alias DDEPOKE* PDDEPOKE;
+enum : DWORD {
+    bm_DDEPOKE_unused = (0x1FFF),
+    bp_DDEPOKE_unused = (0),
+    bm_DDEPOKE_fRelease = (0x2000),
+    bp_DDEPOKE_fRelease = (13),
+    bm_DDEPOKE_fReserved = (0xC000),
+    bp_DDEPOKE_fReserved = (14),
+}
+struct DDEUP
+{
+    ushort flag0;
+    int cfFormat;
+    ubyte[1 + 0] rgb;
+}
+
+alias DDEUP TDDEUP;
+alias DDEUP* PDDEUP;
+
+enum : DWORD {
+    bm_DDEUP_unused = (0xFFF),
+    bp_DDEUP_unused = (0),
+    bm_DDEUP_fAck = (0x1000),
+    bp_DDEUP_fAck = (12),
+    bm_DDEUP_fRelease = (0x2000),
+    bp_DDEUP_fRelease = (13),
+    bm_DDEUP_fReserved = (0x4000),
+    bp_DDEUP_fReserved = (14),
+    bm_DDEUP_fAckReq = (0x8000),
+    bp_DDEUP_fAckReq = (15),
+}
+
+struct EXCEPTION_RECORD
+{
+    DWORD ExceptionCode;
+    DWORD ExceptionFlags;
+    _EXCEPTION_RECORD* ExceptionRecord;
+    PVOID ExceptionAddress;
+    DWORD NumberParameters;
+    DWORD[1 + EXCEPTION_MAXIMUM_PARAMETERS-1] ExceptionInformation;
+}
+
+alias EXCEPTION_RECORD* PEXCEPTION_RECORD;
+alias EXCEPTION_RECORD _EXCEPTION_RECORD;
+alias EXCEPTION_RECORD TEXCEPTIONRECORD;
+alias EXCEPTION_RECORD* PEXCEPTIONRECORD;
+
+struct EXCEPTION_DEBUG_INFO
+{
+    EXCEPTION_RECORD ExceptionRecord;
+    DWORD dwFirstChance;
+}
+
+alias EXCEPTION_DEBUG_INFO* PEXCEPTION_DEBUG_INFO;
+alias EXCEPTION_DEBUG_INFO _EXCEPTION_DEBUG_INFO;
+alias EXCEPTION_DEBUG_INFO TEXCEPTIONDEBUGINFO;
+alias EXCEPTION_DEBUG_INFO* PEXCEPTIONDEBUGINFO;
+
+struct EXIT_PROCESS_DEBUG_INFO
+{
+    DWORD dwExitCode;
+}
+
+alias EXIT_PROCESS_DEBUG_INFO _EXIT_PROCESS_DEBUG_INFO;
+alias EXIT_PROCESS_DEBUG_INFO TEXITPROCESSDEBUGINFO;
+alias EXIT_PROCESS_DEBUG_INFO* PEXITPROCESSDEBUGINFO;
+
+struct EXIT_THREAD_DEBUG_INFO
+{
+    DWORD dwExitCode;
+}
+
+alias EXIT_THREAD_DEBUG_INFO _EXIT_THREAD_DEBUG_INFO;
+alias EXIT_THREAD_DEBUG_INFO TEXITTHREADDEBUGINFO;
+alias EXIT_THREAD_DEBUG_INFO* PEXITTHREADDEBUGINFO;
+
+struct LOAD_DLL_DEBUG_INFO
+{
+    HANDLE hFile;
+    LPVOID lpBaseOfDll;
+    DWORD dwDebugInfoFileOffset;
+    DWORD nDebugInfoSize;
+    LPVOID lpImageName;
+    ushort fUnicode;
+}
+
+alias LOAD_DLL_DEBUG_INFO _LOAD_DLL_DEBUG_INFO;
+alias LOAD_DLL_DEBUG_INFO TLOADDLLDEBUGINFO;
+alias LOAD_DLL_DEBUG_INFO* PLOADDLLDEBUGINFO;
+
+struct UNLOAD_DLL_DEBUG_INFO
+{
+    LPVOID lpBaseOfDll;
+}
+
+alias UNLOAD_DLL_DEBUG_INFO _UNLOAD_DLL_DEBUG_INFO;
+alias UNLOAD_DLL_DEBUG_INFO TUNLOADDLLDEBUGINFO;
+alias UNLOAD_DLL_DEBUG_INFO* PUNLOADDLLDEBUGINFO;
+
+struct OUTPUT_DEBUG_STRING_INFO
+{
+    LPSTR lpDebugStringData;
+    ushort fUnicode;
+    ushort nDebugStringLength;
+}
+
+alias OUTPUT_DEBUG_STRING_INFO _OUTPUT_DEBUG_STRING_INFO;
+alias OUTPUT_DEBUG_STRING_INFO TOUTPUTDEBUGSTRINGINFO;
+alias OUTPUT_DEBUG_STRING_INFO* POUTPUTDEBUGSTRINGINFO;
+
+struct RIP_INFO
+{
+    DWORD dwError;
+    DWORD dwType;
+}
+
+alias RIP_INFO _RIP_INFO;
+alias RIP_INFO TRIPINFO;
+alias RIP_INFO* PRIPINFO;
+
+struct DEBUG_EVENT
+{
+    DWORD dwDebugEventCode;
+    DWORD dwProcessId;
+    DWORD dwThreadId;
+
+    union
+    {
+        struct
+        {
+            EXCEPTION_DEBUG_INFO Exception;
+        }
+        struct
+        {
+            CREATE_THREAD_DEBUG_INFO CreateThread;
+        }
+        struct
+        {
+            CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
+        }
+        struct
+        {
+            EXIT_THREAD_DEBUG_INFO ExitThread;
+        }
+        struct
+        {
+            EXIT_PROCESS_DEBUG_INFO ExitProcess;
+        }
+        struct
+        {
+            LOAD_DLL_DEBUG_INFO LoadDll;
+        }
+        struct
+        {
+            UNLOAD_DLL_DEBUG_INFO UnloadDll;
+        }
+        struct
+        {
+            OUTPUT_DEBUG_STRING_INFO DebugString;
+        }
+        struct
+        {
+            RIP_INFO RipInfo;
+        }
+    }
+}
+
+alias DEBUG_EVENT* LPDEBUG_EVENT;
+alias DEBUG_EVENT _DEBUG_EVENT;
+alias DEBUG_EVENT TDEBUGEVENT;
+alias DEBUG_EVENT* PDEBUGEVENT;
+
+struct DEBUGHOOKINFO
+{
+    DWORD idThread;
+    DWORD idThreadInstaller;
+    LPARAM lParam;
+    WPARAM wParam;
+    int code;
+}
+
+alias DEBUGHOOKINFO TAGDEBUGHOOKINFO;
+alias DEBUGHOOKINFO TDEBUGHOOKINFO;
+alias DEBUGHOOKINFO* PDEBUGHOOKINFO;
+
+struct DELETEITEMSTRUCT
+{
+    UINT CtlType;
+    UINT CtlID;
+    UINT itemID;
+    HWND hwndItem;
+    UINT itemData;
+}
+
+alias DELETEITEMSTRUCT TAGDELETEITEMSTRUCT;
+alias DELETEITEMSTRUCT TDELETEITEMSTRUCT;
+alias DELETEITEMSTRUCT* PDELETEITEMSTRUCT;
+
+struct DEV_BROADCAST_HDR
+{
+    ULONG dbch_size;
+    ULONG dbch_devicetype;
+    ULONG dbch_reserved;
+}
+
+alias DEV_BROADCAST_HDR* PDEV_BROADCAST_HDR;
+alias DEV_BROADCAST_HDR _DEV_BROADCAST_HDR;
+alias DEV_BROADCAST_HDR TDEVBROADCASTHDR;
+alias DEV_BROADCAST_HDR* PDEVBROADCASTHDR;
+
+struct DEV_BROADCAST_OEM
+{
+    ULONG dbco_size;
+    ULONG dbco_devicetype;
+    ULONG dbco_reserved;
+    ULONG dbco_identifier;
+    ULONG dbco_suppfunc;
+}
+
+alias DEV_BROADCAST_OEM* PDEV_BROADCAST_OEM;
+alias DEV_BROADCAST_OEM _DEV_BROADCAST_OEM;
+alias DEV_BROADCAST_OEM TDEVBROADCASTOEM;
+alias DEV_BROADCAST_OEM* PDEVBROADCASTOEM;
+
+struct DEV_BROADCAST_PORT
+{
+    ULONG dbcp_size;
+    ULONG dbcp_devicetype;
+    ULONG dbcp_reserved;
+    char[1 + 0] dbcp_name;
+}
+
+alias DEV_BROADCAST_PORT* PDEV_BROADCAST_PORT;
+alias DEV_BROADCAST_PORT _DEV_BROADCAST_PORT;
+alias DEV_BROADCAST_PORT TDEVBROADCASTPORT;
+alias DEV_BROADCAST_PORT* PDEVBROADCASTPORT;
+
+struct _DEV_BROADCAST_USERDEFINED
+{
+    _DEV_BROADCAST_HDR dbud_dbh;
+    char[1 + 0] dbud_szName;
+    ubyte[1 + 0] dbud_rgbUserDefined;
+}
+
+alias _DEV_BROADCAST_USERDEFINED TDEVBROADCASTUSERDEFINED;
+alias _DEV_BROADCAST_USERDEFINED* PDEVBROADCASTUSERDEFINED;
+
+struct DEV_BROADCAST_VOLUME
+{
+    ULONG dbcv_size;
+    ULONG dbcv_devicetype;
+    ULONG dbcv_reserved;
+    ULONG dbcv_unitmask;
+    USHORT dbcv_flags;
+}
+
+alias DEV_BROADCAST_VOLUME* PDEV_BROADCAST_VOLUME;
+alias DEV_BROADCAST_VOLUME _DEV_BROADCAST_VOLUME;
+alias DEV_BROADCAST_VOLUME TDEVBROADCASTVOLUME;
+alias DEV_BROADCAST_VOLUME* PDEVBROADCASTVOLUME;
+
+struct DEVMODE
+{
+    BCHAR[1 + CCHDEVICENAME-1] dmDeviceName;
+    ushort dmSpecVersion;
+    ushort dmDriverVersion;
+    ushort dmSize;
+    ushort dmDriverExtra;
+    DWORD dmFields;
+    int dmOrientation;
+    int dmPaperSize;
+    int dmPaperLength;
+    int dmPaperWidth;
+    int dmScale;
+    int dmCopies;
+    int dmDefaultSource;
+    int dmPrintQuality;
+    int dmColor;
+    int dmDuplex;
+    int dmYResolution;
+    int dmTTOption;
+    int dmCollate;
+    BCHAR[1 + CCHFORMNAME-1] dmFormName;
+    ushort dmLogPixels;
+    DWORD dmBitsPerPel;
+    DWORD dmPelsWidth;
+    DWORD dmPelsHeight;
+    DWORD dmDisplayFlags;
+    DWORD dmDisplayFrequency;
+    DWORD dmICMMethod;
+    DWORD dmICMIntent;
+    DWORD dmMediaType;
+    DWORD dmDitherType;
+    DWORD dmICCManufacturer;
+    DWORD dmICCModel;
+}
+
+alias DEVMODE* LPDEVMODE;
+alias DEVMODE _DEVICEMODE;
+alias DEVMODE DEVICEMODE;
+alias DEVMODE TDEVICEMODE;
+alias DEVMODE TDEVICEMODEA;
+alias DEVMODE TDEVMODE;
+alias DEVMODE* PDEVMODE;
+
+struct DEVNAMES
+{
+    ushort wDriverOffset;
+    ushort wDeviceOffset;
+    ushort wOutputOffset;
+    ushort wDefault;
+}
+
+alias DEVNAMES* LPDEVNAMES;
+alias DEVNAMES TAGDEVNAMES;
+alias DEVNAMES TDEVNAMES;
+alias DEVNAMES* PDEVNAMES;
+
+struct DIBSECTION
+{
+    BITMAP dsBm;
+    BITMAPINFOHEADER dsBmih;
+    DWORD[1 + 2] dsBitfields;
+    HANDLE dshSection;
+    DWORD dsOffset;
+}
+
+alias DIBSECTION TAGDIBSECTION;
+alias DIBSECTION TDIBSECTION;
+alias DIBSECTION* PDIBSECTION;
+
+union LARGE_INTEGER
+{
+    struct
+    {
+        DWORD LowPart;
+        LONG HighPart;
+    };
+    struct u
+    {
+        DWORD LowPart;
+        LONG HighPart;
+    };
+    LONGLONG QuadPart;
+}
+
+alias LARGE_INTEGER* PLARGE_INTEGER;
+alias LARGE_INTEGER _LARGE_INTEGER;
+alias LARGE_INTEGER TLARGEINTEGER;
+alias LARGE_INTEGER* PLARGEINTEGER;
+
+struct DISK_GEOMETRY
+{
+    LARGE_INTEGER Cylinders;
+    MEDIA_TYPE MediaType;
+    DWORD TracksPerCylinder;
+    DWORD SectorsPerTrack;
+    DWORD BytesPerSector;
+}
+
+alias DISK_GEOMETRY _DISK_GEOMETRY;
+alias DISK_GEOMETRY TDISKGEOMETRY;
+alias DISK_GEOMETRY* PDISKGEOMETRY;
+
+struct DISK_PERFORMANCE
+{
+    LARGE_INTEGER BytesRead;
+    LARGE_INTEGER BytesWritten;
+    LARGE_INTEGER ReadTime;
+    LARGE_INTEGER WriteTime;
+    DWORD ReadCount;
+    DWORD WriteCount;
+    DWORD QueueDepth;
+}
+
+alias DISK_PERFORMANCE _DISK_PERFORMANCE;
+alias DISK_PERFORMANCE TDISKPERFORMANCE;
+alias DISK_PERFORMANCE* PDISKPERFORMANCE;
+
+align(1) struct DLGITEMTEMPLATE
+{
+    DWORD style;
+    DWORD dwExtendedStyle;
+    int x;
+    int y;
+    int cx;
+    int cy;
+    ushort id;
+}
+
+alias DLGITEMTEMPLATE* LPDLGITEMTEMPLATE;
+alias DLGITEMTEMPLATE TDLGITEMTEMPLATE;
+alias DLGITEMTEMPLATE* PDLGITEMTEMPLATE;
+
+align(1) struct DLGTEMPLATE
+{
+    DWORD style;
+    DWORD dwExtendedStyle;
+    ushort cdit;
+    int x;
+    int y;
+    int cx;
+    int cy;
+}
+
+alias DLGTEMPLATE* LPDLGTEMPLATE;
+alias DLGTEMPLATE* LPCDLGTEMPLATE;
+alias DLGTEMPLATE TDLGTEMPLATE;
+alias DLGTEMPLATE* PDLGTEMPLATE;
+
+struct DOC_INFO_1
+{
+    LPTSTR pDocName;
+    LPTSTR pOutputFile;
+    LPTSTR pDatatype;
+}
+
+alias DOC_INFO_1 _DOC_INFO_1;
+alias DOC_INFO_1 TDOCINFO1;
+alias DOC_INFO_1* PDOCINFO1;
+
+struct DOC_INFO_2
+{
+    LPTSTR pDocName;
+    LPTSTR pOutputFile;
+    LPTSTR pDatatype;
+    DWORD dwMode;
+    DWORD JobId;
+}
+
+alias DOC_INFO_2 _DOC_INFO_2;
+alias DOC_INFO_2 TDOCINFO2;
+alias DOC_INFO_2* PDOCINFO2;
+
+struct DOCINFOA
+{
+    int     cbSize;
+    LPCSTR   lpszDocName;
+    LPCSTR   lpszOutput;
+    LPCSTR   lpszDatatype;
+    DWORD    fwType;
+}
+alias DOCINFOA TDOCINFOA;
+
+struct DOCINFOW
+{
+    int     cbSize;
+    LPCWSTR  lpszDocName;
+    LPCWSTR  lpszOutput;
+    LPCWSTR  lpszDatatype;
+    DWORD    fwType;
+}
+alias DOCINFOW TDOCINFOW;
+
+version(Win32SansUnicode)
+{
+    alias DOCINFOA DOCINFO;
+}
+else
+{
+    alias DOCINFOW DOCINFO;
+}
+alias DOCINFO TDOCINFO;
+alias DOCINFO* LPDOCINFO;
+alias DOCINFO* PDOCINFO;
+
+struct DRAGLISTINFO
+{
+    UINT uNotification;
+    HWND hWnd;
+    POINT ptCursor;
+}
+
+alias DRAGLISTINFO* LPDRAGLISTINFO;
+alias DRAGLISTINFO TDRAGLISTINFO;
+alias DRAGLISTINFO* PDRAGLISTINFO;
+
+struct DRAWITEMSTRUCT
+{
+    UINT CtlType;
+    UINT CtlID;
+    UINT itemID;
+    UINT itemAction;
+    UINT itemState;
+    HWND hwndItem;
+    HDC hDC;
+    RECT rcItem;
+    DWORD itemData;
+}
+
+alias DRAWITEMSTRUCT* LPDRAWITEMSTRUCT;
+alias DRAWITEMSTRUCT TAGDRAWITEMSTRUCT;
+alias DRAWITEMSTRUCT TDRAWITEMSTRUCT;
+alias DRAWITEMSTRUCT* PDRAWITEMSTRUCT;
+
+struct DRAWTEXTPARAMS
+{
+    UINT cbSize;
+    int iTabLength;
+    int iLeftMargin;
+    int iRightMargin;
+    UINT uiLengthDrawn;
+}
+
+alias DRAWTEXTPARAMS* LPDRAWTEXTPARAMS;
+alias DRAWTEXTPARAMS TDRAWTEXTPARAMS;
+alias DRAWTEXTPARAMS* PDRAWTEXTPARAMS;
+
+struct PARTITION_INFORMATION
+{
+    ubyte PartitionType;
+    ubyte BootIndicator;
+    ubyte RecognizedPartition;
+    ubyte RewritePartition;
+    LARGE_INTEGER StartingOffset;
+    LARGE_INTEGER PartitionLength;
+    LARGE_INTEGER HiddenSectors;
+}
+
+alias PARTITION_INFORMATION _PARTITION_INFORMATION;
+alias PARTITION_INFORMATION TPARTITIONINFORMATION;
+alias PARTITION_INFORMATION* PPARTITIONINFORMATION;
+
+struct DRIVE_LAYOUT_INFORMATION
+{
+    DWORD PartitionCount;
+    DWORD Signature;
+    PARTITION_INFORMATION[1 + 0] PartitionEntry;
+}
+
+alias DRIVE_LAYOUT_INFORMATION _DRIVE_LAYOUT_INFORMATION;
+alias DRIVE_LAYOUT_INFORMATION TDRIVELAYOUTINFORMATION;
+alias DRIVE_LAYOUT_INFORMATION* PDRIVELAYOUTINFORMATION;
+
+struct DRIVER_INFO_1
+{
+    LPTSTR pName;
+}
+
+alias DRIVER_INFO_1 _DRIVER_INFO_1;
+alias DRIVER_INFO_1 TDRIVERINFO1;
+alias DRIVER_INFO_1* PDRIVERINFO1;
+
+struct DRIVER_INFO_2
+{
+    DWORD cVersion;
+    LPTSTR pName;
+    LPTSTR pEnvironment;
+    LPTSTR pDriverPath;
+    LPTSTR pDataFile;
+    LPTSTR pConfigFile;
+}
+
+alias DRIVER_INFO_2 _DRIVER_INFO_2;
+alias DRIVER_INFO_2 TDRIVERINFO2;
+alias DRIVER_INFO_2* PDRIVERINFO2;
+
+struct DRIVER_INFO_3
+{
+    DWORD cVersion;
+    LPTSTR pName;
+    LPTSTR pEnvironment;
+    LPTSTR pDriverPath;
+    LPTSTR pDataFile;
+    LPTSTR pConfigFile;
+    LPTSTR pHelpFile;
+    LPTSTR pDependentFiles;
+    LPTSTR pMonitorName;
+    LPTSTR pDefaultDataType;
+}
+
+alias DRIVER_INFO_3 _DRIVER_INFO_3;
+alias DRIVER_INFO_3 TDRIVERINFO3;
+alias DRIVER_INFO_3* PDRIVERINFO3;
+
+struct EDITSTREAM
+{
+    DWORD dwCookie;
+    DWORD dwError;
+    EDITSTREAMCALLBACK pfnCallback;
+}
+
+alias EDITSTREAM _EDITSTREAM;
+alias EDITSTREAM TEDITSTREAM;
+alias EDITSTREAM* PEDITSTREAM;
+
+struct EMR
+{
+    DWORD iType;
+    DWORD nSize;
+}
+
+alias EMR TAGEMR;
+alias EMR TEMR;
+alias EMR* PEMR;
+
+struct EMRANGLEARC
+{
+    EMR emr;
+    POINTL ptlCenter;
+    DWORD nRadius;
+    FLOAT eStartAngle;
+    FLOAT eSweepAngle;
+}
+
+alias EMRANGLEARC TAGEMRANGLEARC;
+alias EMRANGLEARC TEMRANGLEARC;
+alias EMRANGLEARC* PEMRANGLEARC;
+
+struct EMRARC
+{
+    EMR emr;
+    RECTL rclBox;
+    POINTL ptlStart;
+    POINTL ptlEnd;
+}
+
+alias EMRARC TAGEMRARC;
+alias EMRARC TEMRARC;
+alias EMRARC* PEMRARC;
+alias EMRARC EMRARCTO;
+alias EMRARC TEMRARCTO;
+alias EMRARC* PEMRARCTO;
+alias EMRARC EMRCHORD;
+alias EMRARC TEMRCHORD;
+alias EMRARC* PEMRCHORD;
+alias EMRARC EMRPIE;
+alias EMRARC TEMRPIE;
+alias EMRARC* PEMRPIE;
+
+struct XFORM
+{
+    FLOAT eM11;
+    FLOAT eM12;
+    FLOAT eM21;
+    FLOAT eM22;
+    FLOAT eDx;
+    FLOAT eDy;
+}
+
+alias XFORM* LPXFORM;
+alias XFORM _XFORM;
+alias XFORM TXFORM;
+alias XFORM* PXFORM;
+
+struct EMRBITBLT
+{
+    EMR emr;
+    RECTL rclBounds;
+    LONG xDest;
+    LONG yDest;
+    LONG cxDest;
+    LONG cyDest;
+    DWORD dwRop;
+    LONG xSrc;
+    LONG ySrc;
+    XFORM xformSrc;
+    COLORREF crBkColorSrc;
+    DWORD iUsageSrc;
+    DWORD offBmiSrc;
+    DWORD offBitsSrc;
+    DWORD cbBitsSrc;
+}
+
+alias EMRBITBLT TAGEMRBITBLT;
+alias EMRBITBLT TEMRBITBLT;
+alias EMRBITBLT* PEMRBITBLT;
+
+struct LOGBRUSH
+{
+    UINT lbStyle;
+    COLORREF lbColor;
+    LONG lbHatch;
+}
+
+alias LOGBRUSH TAGLOGBRUSH;
+alias LOGBRUSH TLOGBRUSH;
+alias LOGBRUSH* PLOGBRUSH;
+
+struct EMRCREATEBRUSHINDIRECT
+{
+    EMR emr;
+    DWORD ihBrush;
+    LOGBRUSH lb;
+}
+
+alias EMRCREATEBRUSHINDIRECT TAGEMRCREATEBRUSHINDIRECT;
+alias EMRCREATEBRUSHINDIRECT TEMRCREATEBRUSHINDIRECT;
+alias EMRCREATEBRUSHINDIRECT* PEMRCREATEBRUSHINDIRECT;
+alias LONG LCSCSTYPE;
+alias LONG LCSGAMUTMATCH;
+
+struct LOGCOLORSPACE
+{
+    DWORD lcsSignature;
+    DWORD lcsVersion;
+    DWORD lcsSize;
+    LCSCSTYPE lcsCSType;
+    LCSGAMUTMATCH lcsIntent;
+    CIEXYZTRIPLE lcsEndpoints;
+    DWORD lcsGammaRed;
+    DWORD lcsGammaGreen;
+    DWORD lcsGammaBlue;
+    TCHAR[1 + MAX_PATH-1] lcsFilename;
+}
+
+alias LOGCOLORSPACE* LPLOGCOLORSPACE;
+alias LOGCOLORSPACE TAGLOGCOLORSPACE;
+alias LOGCOLORSPACE TLOGCOLORSPACE;
+alias LOGCOLORSPACE TLOGCOLORSPACEA;
+alias LOGCOLORSPACE* PLOGCOLORSPACE;
+
+struct EMRCREATECOLORSPACE
+{
+    EMR emr;
+    DWORD ihCS;
+    LOGCOLORSPACE lcs;
+}
+
+alias EMRCREATECOLORSPACE TAGEMRCREATECOLORSPACE;
+alias EMRCREATECOLORSPACE TEMRCREATECOLORSPACE;
+alias EMRCREATECOLORSPACE* PEMRCREATECOLORSPACE;
+
+struct EMRCREATEDIBPATTERNBRUSHPT
+{
+    EMR emr;
+    DWORD ihBrush;
+    DWORD iUsage;
+    DWORD offBmi;
+    DWORD cbBmi;
+    DWORD offBits;
+    DWORD cbBits;
+}
+
+alias EMRCREATEDIBPATTERNBRUSHPT TAGEMRCREATEDIBPATTERNBRUSHPT;
+alias EMRCREATEDIBPATTERNBRUSHPT TEMRCREATEDIBPATTERNBRUSHPT;
+alias EMRCREATEDIBPATTERNBRUSHPT PEMRCREATEDIBPATTERNBRUSHPT;
+
+struct EMRCREATEMONOBRUSH
+{
+    EMR emr;
+    DWORD ihBrush;
+    DWORD iUsage;
+    DWORD offBmi;
+    DWORD cbBmi;
+    DWORD offBits;
+    DWORD cbBits;
+}
+
+alias EMRCREATEMONOBRUSH TAGEMRCREATEMONOBRUSH;
+alias EMRCREATEMONOBRUSH TEMRCREATEMONOBRUSH;
+alias EMRCREATEMONOBRUSH* PEMRCREATEMONOBRUSH;
+
+struct PALETTEENTRY
+{
+    ubyte peRed;
+    ubyte peGreen;
+    ubyte peBlue;
+    ubyte peFlags;
+}
+
+alias PALETTEENTRY* LPPALETTEENTRY;
+alias PALETTEENTRY TAGPALETTEENTRY;
+alias PALETTEENTRY TPALETTEENTRY;
+alias PALETTEENTRY* PPALETTEENTRY;
+
+struct LOGPALETTE
+{
+    ushort palVersion;
+    ushort palNumEntries;
+    PALETTEENTRY[1 + 0] palPalEntry;
+}
+
+alias LOGPALETTE* LPLOGPALETTE;
+alias LOGPALETTE TAGLOGPALETTE;
+alias LOGPALETTE TLOGPALETTE;
+alias LOGPALETTE* PLOGPALETTE;
+
+struct EMRCREATEPALETTE
+{
+    EMR emr;
+    DWORD ihPal;
+    LOGPALETTE lgpl;
+}
+
+alias EMRCREATEPALETTE TAGEMRCREATEPALETTE;
+alias EMRCREATEPALETTE TEMRCREATEPALETTE;
+alias EMRCREATEPALETTE* PEMRCREATEPALETTE;
+
+struct LOGPEN
+{
+    UINT lopnStyle;
+    POINT lopnWidth;
+    COLORREF lopnColor;
+}
+
+alias LOGPEN TAGLOGPEN;
+alias LOGPEN TLOGPEN;
+alias LOGPEN* PLOGPEN;
+
+struct EMRCREATEPEN
+{
+    EMR emr;
+    DWORD ihPen;
+    LOGPEN lopn;
+}
+
+alias EMRCREATEPEN TAGEMRCREATEPEN;
+alias EMRCREATEPEN TEMRCREATEPEN;
+alias EMRCREATEPEN* PEMRCREATEPEN;
+
+struct EMRELLIPSE
+{
+    EMR emr;
+    RECTL rclBox;
+}
+
+alias EMRELLIPSE TAGEMRELLIPSE;
+alias EMRELLIPSE TEMRELLIPSE;
+alias EMRELLIPSE* PEMRELLIPSE;
+alias EMRELLIPSE EMRRECTANGLE;
+alias EMRELLIPSE TEMRRECTANGLE;
+alias EMRELLIPSE* PEMRRECTANGLE;
+
+struct EMREOF
+{
+    EMR emr;
+    DWORD nPalEntries;
+    DWORD offPalEntries;
+    DWORD nSizeLast;
+}
+
+alias EMREOF TAGEMREOF;
+alias EMREOF TEMREOF;
+alias EMREOF* PEMREOF;
+
+struct EMREXCLUDECLIPRECT
+{
+    EMR emr;
+    RECTL rclClip;
+}
+
+alias EMREXCLUDECLIPRECT TAGEMREXCLUDECLIPRECT;
+alias EMREXCLUDECLIPRECT TEMREXCLUDECLIPRECT;
+alias EMREXCLUDECLIPRECT* PEMREXCLUDECLIPRECT;
+alias EMREXCLUDECLIPRECT EMRINTERSECTCLIPRECT;
+alias EMREXCLUDECLIPRECT TEMRINTERSECTCLIPRECT;
+alias EMREXCLUDECLIPRECT* PEMRINTERSECTCLIPRECT;
+
+struct PANOSE
+{
+    ubyte bFamilyType;
+    ubyte bSerifStyle;
+    ubyte bWeight;
+    ubyte bProportion;
+    ubyte bContrast;
+    ubyte bStrokeVariation;
+    ubyte bArmStyle;
+    ubyte bLetterform;
+    ubyte bMidline;
+    ubyte bXHeight;
+}
+
+alias PANOSE TAGPANOSE;
+alias PANOSE TPANOSE;
+alias PANOSE* PPANOSE;
+
+struct EXTLOGFONT
+{
+    LOGFONT elfLogFont;
+    BCHAR[1 + LF_FULLFACESIZE-1] elfFullName;
+    BCHAR[1 + LF_FACESIZE-1] elfStyle;
+    DWORD elfVersion;
+    DWORD elfStyleSize;
+    DWORD elfMatch;
+    DWORD elfReserved;
+    ubyte[1 + ELF_VENDOR_SIZE-1] elfVendorId;
+    DWORD elfCulture;
+    PANOSE elfPanose;
+}
+
+alias EXTLOGFONT TAGEXTLOGFONT;
+alias EXTLOGFONT TEXTLOGFONT;
+alias EXTLOGFONT* PEXTLOGFONT;
+
+struct EMREXTCREATEFONTINDIRECTW
+{
+    EMR emr;
+    DWORD ihFont;
+    EXTLOGFONT elfw;
+}
+
+alias EMREXTCREATEFONTINDIRECTW TAGEMREXTCREATEFONTINDIRECTW;
+alias EMREXTCREATEFONTINDIRECTW TEMREXTCREATEFONTINDIRECTW;
+alias EMREXTCREATEFONTINDIRECTW* PEMREXTCREATEFONTINDIRECTW;
+
+struct EXTLOGPEN
+{
+    UINT elpPenStyle;
+    UINT elpWidth;
+    UINT elpBrushStyle;
+    COLORREF elpColor;
+    LONG elpHatch;
+    DWORD elpNumEntries;
+    DWORD[1 + 0] elpStyleEntry;
+}
+
+alias EXTLOGPEN TAGEXTLOGPEN;
+alias EXTLOGPEN TEXTLOGPEN;
+alias EXTLOGPEN* PEXTLOGPEN;
+
+struct EMREXTCREATEPEN
+{
+    EMR emr;
+    DWORD ihPen;
+    DWORD offBmi;
+    DWORD cbBmi;
+    DWORD offBits;
+    DWORD cbBits;
+    EXTLOGPEN elp;
+}
+
+alias EMREXTCREATEPEN TAGEMREXTCREATEPEN;
+alias EMREXTCREATEPEN TEMREXTCREATEPEN;
+alias EMREXTCREATEPEN* PEMREXTCREATEPEN;
+
+struct EMREXTFLOODFILL
+{
+    EMR emr;
+    POINTL ptlStart;
+    COLORREF crColor;
+    DWORD iMode;
+}
+
+alias EMREXTFLOODFILL TAGEMREXTFLOODFILL;
+alias EMREXTFLOODFILL TEMREXTFLOODFILL;
+alias EMREXTFLOODFILL* PEMREXTFLOODFILL;
+
+struct EMREXTSELECTCLIPRGN
+{
+    EMR emr;
+    DWORD cbRgnData;
+    DWORD iMode;
+    ubyte[1 + 0] RgnData;
+}
+
+alias EMREXTSELECTCLIPRGN TAGEMREXTSELECTCLIPRGN;
+alias EMREXTSELECTCLIPRGN TEMREXTSELECTCLIPRGN;
+alias EMREXTSELECTCLIPRGN* PEMREXTSELECTCLIPRGN;
+
+struct EMRTEXT
+{
+    POINTL ptlReference;
+    DWORD nChars;
+    DWORD offString;
+    DWORD fOptions;
+    RECTL rcl;
+    DWORD offDx;
+}
+
+alias EMRTEXT TAGEMRTEXT;
+alias EMRTEXT TEMRTEXT;
+alias EMRTEXT* PEMRTEXT;
+
+struct EMREXTTEXTOUTA
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD iGraphicsMode;
+    FLOAT exScale;
+    FLOAT eyScale;
+    EMRTEXT emrtext;
+}
+
+alias EMREXTTEXTOUTA TAGEMREXTTEXTOUTA;
+alias EMREXTTEXTOUTA TEMREXTTEXTOUTA;
+alias EMREXTTEXTOUTA* PEMREXTTEXTOUTA;
+alias EMREXTTEXTOUTA EMREXTTEXTOUTW;
+alias EMREXTTEXTOUTA TEMREXTTEXTOUTW;
+alias EMREXTTEXTOUTA* PEMREXTTEXTOUTW;
+
+struct EMRFILLPATH
+{
+    EMR emr;
+    RECTL rclBounds;
+}
+
+alias EMRFILLPATH TAGEMRFILLPATH;
+alias EMRFILLPATH TEMRFILLPATH;
+alias EMRFILLPATH* PEMRFILLPATH;
+alias EMRFILLPATH EMRSTROKEANDFILLPATH;
+alias EMRFILLPATH TEMRSTROKEANDFILLPATH;
+alias EMRFILLPATH* PEMRSTROKEANDFILLPATH;
+alias EMRFILLPATH EMRSTROKEPATH;
+alias EMRFILLPATH TEMRSTROKEPATH;
+alias EMRFILLPATH* PEMRSTROKEPATH;
+
+struct EMRFILLRGN
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD cbRgnData;
+    DWORD ihBrush;
+    ubyte[1 + 0] RgnData;
+}
+
+alias EMRFILLRGN TAGEMRFILLRGN;
+alias EMRFILLRGN TEMRFILLRGN;
+alias EMRFILLRGN* PEMRFILLRGN;
+
+struct EMRFORMAT
+{
+    DWORD dSignature;
+    DWORD nVersion;
+    DWORD cbData;
+    DWORD offData;
+}
+
+alias EMRFORMAT TAGEMRFORMAT;
+alias EMRFORMAT TEMRFORMAT;
+alias EMRFORMAT* PEMRFORMAT;
+
+struct SIZE
+{
+    LONG cx;
+    LONG cy;
+}
+
+alias SIZE* LPSIZE;
+alias SIZE TAGSIZE;
+alias SIZE TSIZE;
+alias SIZE* PSIZE;
+alias SIZE SIZEL;
+alias SIZE TSIZEL;
+alias SIZE* PSIZEL;
+alias SIZE* LPSIZEL;
+
+struct EMRFRAMERGN
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD cbRgnData;
+    DWORD ihBrush;
+    SIZEL szlStroke;
+    ubyte[1 + 0] RgnData;
+}
+
+alias EMRFRAMERGN TAGEMRFRAMERGN;
+alias EMRFRAMERGN TEMRFRAMERGN;
+alias EMRFRAMERGN* PEMRFRAMERGN;
+
+struct EMRGDICOMMENT
+{
+    EMR emr;
+    DWORD cbData;
+    ubyte[1 + 0] Data;
+}
+
+alias EMRGDICOMMENT TAGEMRGDICOMMENT;
+alias EMRGDICOMMENT TEMRGDICOMMENT;
+alias EMRGDICOMMENT* PEMRGDICOMMENT;
+
+struct EMRINVERTRGN
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD cbRgnData;
+    ubyte[1 + 0] RgnData;
+}
+
+alias EMRINVERTRGN TAGEMRINVERTRGN;
+alias EMRINVERTRGN TEMRINVERTRGN;
+alias EMRINVERTRGN* PEMRINVERTRGN;
+alias EMRINVERTRGN EMRPAINTRGN;
+alias EMRINVERTRGN TEMRPAINTRGN;
+alias EMRINVERTRGN* PEMRPAINTRGN;
+
+struct EMRLINETO
+{
+    EMR emr;
+    POINTL ptl;
+}
+
+alias EMRLINETO TAGEMRLINETO;
+alias EMRLINETO TEMRLINETO;
+alias EMRLINETO* PEMRLINETO;
+alias EMRLINETO EMRMOVETOEX;
+alias EMRLINETO TEMRMOVETOEX;
+alias EMRLINETO* PEMRMOVETOEX;
+
+struct EMRMASKBLT
+{
+    EMR emr;
+    RECTL rclBounds;
+    LONG xDest;
+    LONG yDest;
+    LONG cxDest;
+    LONG cyDest;
+    DWORD dwRop;
+    LONG xSrc;
+    LONG ySrc;
+    XFORM xformSrc;
+    COLORREF crBkColorSrc;
+    DWORD iUsageSrc;
+    DWORD offBmiSrc;
+    DWORD cbBmiSrc;
+    DWORD offBitsSrc;
+    DWORD cbBitsSrc;
+    LONG xMask;
+    LONG yMask;
+    DWORD iUsageMask;
+    DWORD offBmiMask;
+    DWORD cbBmiMask;
+    DWORD offBitsMask;
+    DWORD cbBitsMask;
+}
+
+alias EMRMASKBLT TAGEMRMASKBLT;
+alias EMRMASKBLT TEMRMASKBLT;
+alias EMRMASKBLT* PEMRMASKBLT;
+
+struct EMRMODIFYWORLDTRANSFORM
+{
+    EMR emr;
+    XFORM xform;
+    DWORD iMode;
+}
+
+alias EMRMODIFYWORLDTRANSFORM TAGEMRMODIFYWORLDTRANSFORM;
+alias EMRMODIFYWORLDTRANSFORM TEMRMODIFYWORLDTRANSFORM;
+alias EMRMODIFYWORLDTRANSFORM PEMRMODIFYWORLDTRANSFORM;
+
+struct EMROFFSETCLIPRGN
+{
+    EMR emr;
+    POINTL ptlOffset;
+}
+
+alias EMROFFSETCLIPRGN TAGEMROFFSETCLIPRGN;
+alias EMROFFSETCLIPRGN TEMROFFSETCLIPRGN;
+alias EMROFFSETCLIPRGN* PEMROFFSETCLIPRGN;
+
+struct EMRPLGBLT
+{
+    EMR emr;
+    RECTL rclBounds;
+    POINTL[1 + 2] aptlDest;
+    LONG xSrc;
+    LONG ySrc;
+    LONG cxSrc;
+    LONG cySrc;
+    XFORM xformSrc;
+    COLORREF crBkColorSrc;
+    DWORD iUsageSrc;
+    DWORD offBmiSrc;
+    DWORD cbBmiSrc;
+    DWORD offBitsSrc;
+    DWORD cbBitsSrc;
+    LONG xMask;
+    LONG yMask;
+    DWORD iUsageMask;
+    DWORD offBmiMask;
+    DWORD cbBmiMask;
+    DWORD offBitsMask;
+    DWORD cbBitsMask;
+}
+
+alias EMRPLGBLT TAGEMRPLGBLT;
+alias EMRPLGBLT TEMRPLGBLT;
+alias EMRPLGBLT* PEMRPLGBLT;
+
+struct EMRPOLYDRAW
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD cptl;
+    POINTL[1 + 0] aptl;
+    ubyte[1 + 0] abTypes;
+}
+
+alias EMRPOLYDRAW TAGEMRPOLYDRAW;
+alias EMRPOLYDRAW TEMRPOLYDRAW;
+alias EMRPOLYDRAW* PEMRPOLYDRAW;
+
+struct EMRPOLYDRAW16
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD cpts;
+    POINTS[1 + 0] apts;
+    ubyte[1 + 0] abTypes;
+}
+
+alias EMRPOLYDRAW16 TAGEMRPOLYDRAW16;
+alias EMRPOLYDRAW16 TEMRPOLYDRAW16;
+alias EMRPOLYDRAW16* PEMRPOLYDRAW16;
+
+struct EMRPOLYLINE
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD cptl;
+    POINTL[1 + 0] aptl;
+}
+
+alias EMRPOLYLINE TAGEMRPOLYLINE;
+alias EMRPOLYLINE TEMRPOLYLINE;
+alias EMRPOLYLINE* PEMRPOLYLINE;
+alias EMRPOLYLINE EMRPOLYBEZIER;
+alias EMRPOLYLINE TEMRPOLYBEZIER;
+alias EMRPOLYLINE* PEMRPOLYBEZIER;
+alias EMRPOLYLINE EMRPOLYGON;
+alias EMRPOLYLINE TEMRPOLYGON;
+alias EMRPOLYLINE* PEMRPOLYGON;
+alias EMRPOLYLINE EMRPOLYBEZIERTO;
+alias EMRPOLYLINE TEMRPOLYBEZIERTO;
+alias EMRPOLYLINE* PEMRPOLYBEZIERTO;
+alias EMRPOLYLINE EMRPOLYLINETO;
+alias EMRPOLYLINE TEMRPOLYLINETO;
+alias EMRPOLYLINE* PEMRPOLYLINETO;
+
+struct EMRPOLYLINE16
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD cpts;
+    POINTL[1 + 0] apts;
+}
+
+alias EMRPOLYLINE16 TAGEMRPOLYLINE16;
+alias EMRPOLYLINE16 TEMRPOLYLINE16;
+alias EMRPOLYLINE16* PEMRPOLYLINE16;
+alias EMRPOLYLINE16 EMRPOLYBEZIER16;
+alias EMRPOLYLINE16 TEMRPOLYBEZIER16;
+alias EMRPOLYLINE16* PEMRPOLYBEZIER16;
+alias EMRPOLYLINE16 EMRPOLYGON16;
+alias EMRPOLYLINE16 TEMRPOLYGON16;
+alias EMRPOLYLINE16* PEMRPOLYGON16;
+alias EMRPOLYLINE16 EMRPOLYBEZIERTO16;
+alias EMRPOLYLINE16 TEMRPOLYBEZIERTO16;
+alias EMRPOLYLINE16* PEMRPOLYBEZIERTO16;
+alias EMRPOLYLINE16 EMRPOLYLINETO16;
+alias EMRPOLYLINE16 TEMRPOLYLINETO16;
+alias EMRPOLYLINE16* PEMRPOLYLINETO16;
+
+struct EMRPOLYPOLYLINE
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD nPolys;
+    DWORD cptl;
+    DWORD[1 + 0] aPolyCounts;
+    POINTL[1 + 0] aptl;
+}
+
+alias EMRPOLYPOLYLINE TAGEMRPOLYPOLYLINE;
+alias EMRPOLYPOLYLINE TEMRPOLYPOLYLINE;
+alias EMRPOLYPOLYLINE* PEMRPOLYPOLYLINE;
+alias EMRPOLYPOLYLINE EMRPOLYPOLYGON;
+alias EMRPOLYPOLYLINE TEMRPOLYPOLYGON;
+alias EMRPOLYPOLYLINE* PEMRPOLYPOLYGON;
+
+struct EMRPOLYPOLYLINE16
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD nPolys;
+    DWORD cpts;
+    DWORD[1 + 0] aPolyCounts;
+    POINTS[1 + 0] apts;
+}
+
+alias EMRPOLYPOLYLINE16 TAGEMRPOLYPOLYLINE16;
+alias EMRPOLYPOLYLINE16 TEMRPOLYPOLYLINE16;
+alias EMRPOLYPOLYLINE16* PEMRPOLYPOLYLINE16;
+alias EMRPOLYPOLYLINE16 EMRPOLYPOLYGON16;
+alias EMRPOLYPOLYLINE16 TEMRPOLYPOLYGON16;
+alias EMRPOLYPOLYLINE16* PEMRPOLYPOLYGON16;
+
+struct EMRPOLYTEXTOUTA
+{
+    EMR emr;
+    RECTL rclBounds;
+    DWORD iGraphicsMode;
+    FLOAT exScale;
+    FLOAT eyScale;
+    LONG cStrings;
+    EMRTEXT[1 + 0] aemrtext;
+}
+
+alias EMRPOLYTEXTOUTA TAGEMRPOLYTEXTOUTA;
+alias EMRPOLYTEXTOUTA TEMRPOLYTEXTOUTA;
+alias EMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTA;
+alias EMRPOLYTEXTOUTA EMRPOLYTEXTOUTW;
+alias EMRPOLYTEXTOUTA TEMRPOLYTEXTOUTW;
+alias EMRPOLYTEXTOUTA* PEMRPOLYTEXTOUTW;
+
+struct EMRRESIZEPALETTE
+{
+    EMR emr;
+    DWORD ihPal;
+    DWORD cEntries;
+}
+
+alias EMRRESIZEPALETTE TAGEMRRESIZEPALETTE;
+alias EMRRESIZEPALETTE TEMRRESIZEPALETTE;
+alias EMRRESIZEPALETTE* PEMRRESIZEPALETTE;
+
+struct EMRRESTOREDC
+{
+    EMR emr;
+    LONG iRelative;
+}
+
+alias EMRRESTOREDC TAGEMRRESTOREDC;
+alias EMRRESTOREDC TEMRRESTOREDC;
+alias EMRRESTOREDC* PEMRRESTOREDC;
+
+struct EMRROUNDRECT
+{
+    EMR emr;
+    RECTL rclBox;
+    SIZEL szlCorner;
+}
+
+alias EMRROUNDRECT TAGEMRROUNDRECT;
+alias EMRROUNDRECT TEMRROUNDRECT;
+alias EMRROUNDRECT* PEMRROUNDRECT;
+
+struct EMRSCALEVIEWPORTEXTEX
+{
+    EMR emr;
+    LONG xNum;
+    LONG xDenom;
+    LONG yNum;
+    LONG yDenom;
+}
+
+alias EMRSCALEVIEWPORTEXTEX TAGEMRSCALEVIEWPORTEXTEX;
+alias EMRSCALEVIEWPORTEXTEX TEMRSCALEVIEWPORTEXTEX;
+alias EMRSCALEVIEWPORTEXTEX* PEMRSCALEVIEWPORTEXTEX;
+alias EMRSCALEVIEWPORTEXTEX EMRSCALEWINDOWEXTEX;
+alias EMRSCALEVIEWPORTEXTEX TEMRSCALEWINDOWEXTEX;
+alias EMRSCALEVIEWPORTEXTEX* PEMRSCALEWINDOWEXTEX;
+
+struct EMRSELECTCOLORSPACE
+{
+    EMR emr;
+    DWORD ihCS;
+}
+
+alias EMRSELECTCOLORSPACE TAGEMRSELECTCOLORSPACE;
+alias EMRSELECTCOLORSPACE TEMRSELECTCOLORSPACE;
+alias EMRSELECTCOLORSPACE* PEMRSELECTCOLORSPACE;
+alias EMRSELECTCOLORSPACE EMRDELETECOLORSPACE;
+alias EMRSELECTCOLORSPACE TEMRDELETECOLORSPACE;
+alias EMRSELECTCOLORSPACE* PEMRDELETECOLORSPACE;
+
+struct EMRSELECTOBJECT
+{
+    EMR emr;
+    DWORD ihObject;
+}
+
+alias EMRSELECTOBJECT TAGEMRSELECTOBJECT;
+alias EMRSELECTOBJECT TEMRSELECTOBJECT;
+alias EMRSELECTOBJECT* PEMRSELECTOBJECT;
+alias EMRSELECTOBJECT EMRDELETEOBJECT;
+alias EMRSELECTOBJECT TEMRDELETEOBJECT;
+alias EMRSELECTOBJECT* PEMRDELETEOBJECT;
+
+struct EMRSELECTPALETTE
+{
+    EMR emr;
+    DWORD ihPal;
+}
+
+alias EMRSELECTPALETTE TAGEMRSELECTPALETTE;
+alias EMRSELECTPALETTE TEMRSELECTPALETTE;
+alias EMRSELECTPALETTE* PEMRSELECTPALETTE;
+
+struct EMRSETARCDIRECTION
+{
+    EMR emr;
+    DWORD iArcDirection;
+}
+
+alias EMRSETARCDIRECTION TAGEMRSETARCDIRECTION;
+alias EMRSETARCDIRECTION TEMRSETARCDIRECTION;
+alias EMRSETARCDIRECTION* PEMRSETARCDIRECTION;
+
+struct EMRSETBKCOLOR
+{
+    EMR emr;
+    COLORREF crColor;
+}
+
+alias EMRSETBKCOLOR TAGEMRSETTEXTCOLOR;
+alias EMRSETBKCOLOR TEMRSETBKCOLOR;
+alias EMRSETBKCOLOR* PEMRSETBKCOLOR;
+alias EMRSETBKCOLOR EMRSETTEXTCOLOR;
+alias EMRSETBKCOLOR TEMRSETTEXTCOLOR;
+alias EMRSETBKCOLOR* PEMRSETTEXTCOLOR;
+
+struct EMRSETCOLORADJUSTMENT
+{
+    EMR emr;
+    COLORADJUSTMENT ColorAdjustment;
+}
+
+alias EMRSETCOLORADJUSTMENT TAGEMRSETCOLORADJUSTMENT;
+alias EMRSETCOLORADJUSTMENT TEMRSETCOLORADJUSTMENT;
+alias EMRSETCOLORADJUSTMENT* PEMRSETCOLORADJUSTMENT;
+
+struct EMRSETDIBITSTODEVICE
+{
+    EMR emr;
+    RECTL rclBounds;
+    LONG xDest;
+    LONG yDest;
+    LONG xSrc;
+    LONG ySrc;
+    LONG cxSrc;
+    LONG cySrc;
+    DWORD offBmiSrc;
+    DWORD cbBmiSrc;
+    DWORD offBitsSrc;
+    DWORD cbBitsSrc;
+    DWORD iUsageSrc;
+    DWORD iStartScan;
+    DWORD cScans;
+}
+
+alias EMRSETDIBITSTODEVICE TAGEMRSETDIBITSTODEVICE;
+alias EMRSETDIBITSTODEVICE TEMRSETDIBITSTODEVICE;
+alias EMRSETDIBITSTODEVICE* PEMRSETDIBITSTODEVICE;
+
+struct EMRSETMAPPERFLAGS
+{
+    EMR emr;
+    DWORD dwFlags;
+}
+
+alias EMRSETMAPPERFLAGS TAGEMRSETMAPPERFLAGS;
+alias EMRSETMAPPERFLAGS TEMRSETMAPPERFLAGS;
+alias EMRSETMAPPERFLAGS* PEMRSETMAPPERFLAGS;
+
+struct EMRSETMITERLIMIT
+{
+    EMR emr;
+    FLOAT eMiterLimit;
+}
+
+alias EMRSETMITERLIMIT TAGEMRSETMITERLIMIT;
+alias EMRSETMITERLIMIT TEMRSETMITERLIMIT;
+alias EMRSETMITERLIMIT* PEMRSETMITERLIMIT;
+
+struct EMRSETPALETTEENTRIES
+{
+    EMR emr;
+    DWORD ihPal;
+    DWORD iStart;
+    DWORD cEntries;
+    PALETTEENTRY[1 + 0] aPalEntries;
+}
+
+alias EMRSETPALETTEENTRIES TAGEMRSETPALETTEENTRIES;
+alias EMRSETPALETTEENTRIES TEMRSETPALETTEENTRIES;
+alias EMRSETPALETTEENTRIES* PEMRSETPALETTEENTRIES;
+
+struct EMRSETPIXELV
+{
+    EMR emr;
+    POINTL ptlPixel;
+    COLORREF crColor;
+}
+
+alias EMRSETPIXELV TAGEMRSETPIXELV;
+alias EMRSETPIXELV TEMRSETPIXELV;
+alias EMRSETPIXELV* PEMRSETPIXELV;
+
+struct EMRSETVIEWPORTEXTEX
+{
+    EMR emr;
+    SIZEL szlExtent;
+}
+
+alias EMRSETVIEWPORTEXTEX TAGEMRSETVIEWPORTEXTEX;
+alias EMRSETVIEWPORTEXTEX TEMRSETVIEWPORTEXTEX;
+alias EMRSETVIEWPORTEXTEX* PEMRSETVIEWPORTEXTEX;
+alias EMRSETVIEWPORTEXTEX EMRSETWINDOWEXTEX;
+alias EMRSETVIEWPORTEXTEX TEMRSETWINDOWEXTEX;
+alias EMRSETVIEWPORTEXTEX* PEMRSETWINDOWEXTEX;
+
+struct EMRSETVIEWPORTORGEX
+{
+    EMR emr;
+    POINTL ptlOrigin;
+}
+
+alias EMRSETVIEWPORTORGEX TAGEMRSETVIEWPORTORGEX;
+alias EMRSETVIEWPORTORGEX TEMRSETVIEWPORTORGEX;
+alias EMRSETVIEWPORTORGEX* PEMRSETVIEWPORTORGEX;
+alias EMRSETVIEWPORTORGEX EMRSETWINDOWORGEX;
+alias EMRSETVIEWPORTORGEX TEMRSETWINDOWORGEX;
+alias EMRSETVIEWPORTORGEX* PEMRSETWINDOWORGEX;
+alias EMRSETVIEWPORTORGEX EMRSETBRUSHORGEX;
+alias EMRSETVIEWPORTORGEX TEMRSETBRUSHORGEX;
+alias EMRSETVIEWPORTORGEX* PEMRSETBRUSHORGEX;
+
+struct EMRSETWORLDTRANSFORM
+{
+    EMR emr;
+    XFORM xform;
+}
+
+alias EMRSETWORLDTRANSFORM TAGEMRSETWORLDTRANSFORM;
+alias EMRSETWORLDTRANSFORM TEMRSETWORLDTRANSFORM;
+alias EMRSETWORLDTRANSFORM* PEMRSETWORLDTRANSFORM;
+
+struct EMRSTRETCHBLT
+{
+    EMR emr;
+    RECTL rclBounds;
+    LONG xDest;
+    LONG yDest;
+    LONG cxDest;
+    LONG cyDest;
+    DWORD dwRop;
+    LONG xSrc;
+    LONG ySrc;
+    XFORM xformSrc;
+    COLORREF crBkColorSrc;
+    DWORD iUsageSrc;
+    DWORD offBmiSrc;
+    DWORD cbBmiSrc;
+    DWORD offBitsSrc;
+    DWORD cbBitsSrc;
+    LONG cxSrc;
+    LONG cySrc;
+}
+
+alias EMRSTRETCHBLT TAGEMRSTRETCHBLT;
+alias EMRSTRETCHBLT TEMRSTRETCHBLT;
+alias EMRSTRETCHBLT* PEMRSTRETCHBLT;
+
+struct EMRSTRETCHDIBITS
+{
+    EMR emr;
+    RECTL rclBounds;
+    LONG xDest;
+    LONG yDest;
+    LONG xSrc;
+    LONG ySrc;
+    LONG cxSrc;
+    LONG cySrc;
+    DWORD offBmiSrc;
+    DWORD cbBmiSrc;
+    DWORD offBitsSrc;
+    DWORD cbBitsSrc;
+    DWORD iUsageSrc;
+    DWORD dwRop;
+    LONG cxDest;
+    LONG cyDest;
+}
+
+alias EMRSTRETCHDIBITS TAGEMRSTRETCHDIBITS;
+alias EMRSTRETCHDIBITS TEMRSTRETCHDIBITS;
+alias EMRSTRETCHDIBITS* PEMRSTRETCHDIBITS;
+
+struct EMRABORTPATH
+{
+    EMR emr;
+}
+
+alias EMRABORTPATH TEMRABORTPATH;
+alias EMRABORTPATH* PEMRABORTPATH;
+alias EMRABORTPATH TAGABORTPATH;
+alias EMRABORTPATH TABORTPATH;
+alias EMRABORTPATH EMRBEGINPATH;
+alias EMRABORTPATH TEMRBEGINPATH;
+alias EMRABORTPATH* PEMRBEGINPATH;
+alias EMRABORTPATH EMRENDPATH;
+alias EMRABORTPATH TEMRENDPATH;
+alias EMRABORTPATH* PEMRENDPATH;
+alias EMRABORTPATH EMRCLOSEFIGURE;
+alias EMRABORTPATH TEMRCLOSEFIGURE;
+alias EMRABORTPATH* PEMRCLOSEFIGURE;
+alias EMRABORTPATH EMRFLATTENPATH;
+alias EMRABORTPATH TEMRFLATTENPATH;
+alias EMRABORTPATH* PEMRFLATTENPATH;
+alias EMRABORTPATH EMRWIDENPATH;
+alias EMRABORTPATH TEMRWIDENPATH;
+alias EMRABORTPATH* PEMRWIDENPATH;
+alias EMRABORTPATH EMRSETMETARGN;
+alias EMRABORTPATH TEMRSETMETARGN;
+alias EMRABORTPATH* PEMRSETMETARGN;
+alias EMRABORTPATH EMRSAVEDC;
+alias EMRABORTPATH TEMRSAVEDC;
+alias EMRABORTPATH* PEMRSAVEDC;
+alias EMRABORTPATH EMRREALIZEPALETTE;
+alias EMRABORTPATH TEMRREALIZEPALETTE;
+alias EMRABORTPATH* PEMRREALIZEPALETTE;
+
+struct EMRSELECTCLIPPATH
+{
+    EMR emr;
+    DWORD iMode;
+}
+
+alias EMRSELECTCLIPPATH TAGEMRSELECTCLIPPATH;
+alias EMRSELECTCLIPPATH TEMRSELECTCLIPPATH;
+alias EMRSELECTCLIPPATH* PEMRSELECTCLIPPATH;
+alias EMRSELECTCLIPPATH EMRSETBKMODE;
+alias EMRSELECTCLIPPATH TEMRSETBKMODE;
+alias EMRSELECTCLIPPATH* PEMRSETBKMODE;
+alias EMRSELECTCLIPPATH EMRSETMAPMODE;
+alias EMRSELECTCLIPPATH TEMRSETMAPMODE;
+alias EMRSELECTCLIPPATH* PEMRSETMAPMODE;
+alias EMRSELECTCLIPPATH EMRSETPOLYFILLMODE;
+alias EMRSELECTCLIPPATH TEMRSETPOLYFILLMODE;
+alias EMRSELECTCLIPPATH* PEMRSETPOLYFILLMODE;
+alias EMRSELECTCLIPPATH EMRSETROP2;
+alias EMRSELECTCLIPPATH TEMRSETROP2;
+alias EMRSELECTCLIPPATH* PEMRSETROP2;
+alias EMRSELECTCLIPPATH EMRSETSTRETCHBLTMODE;
+alias EMRSELECTCLIPPATH TEMRSETSTRETCHBLTMODE;
+alias EMRSELECTCLIPPATH* PEMRSETSTRETCHBLTMODE;
+alias EMRSELECTCLIPPATH EMRSETTEXTALIGN;
+alias EMRSELECTCLIPPATH TEMRSETTEXTALIGN;
+alias EMRSELECTCLIPPATH* PEMRSETTEXTALIGN;
+alias EMRSELECTCLIPPATH EMRENABLEICM;
+alias EMRSELECTCLIPPATH TEMRENABLEICM;
+alias EMRSELECTCLIPPATH* PEMRENABLEICM;
+
+struct NMHDR
+{
+    HWND hwndFrom;
+    UINT idFrom;
+    UINT code;
+}
+
+alias NMHDR TAGNMHDR;
+alias NMHDR TNMHDR;
+alias NMHDR* PNMHDR;
+
+struct ENCORRECTTEXT
+{
+    NMHDR nmhdr;
+    CHARRANGE chrg;
+    ushort seltyp;
+}
+
+alias ENCORRECTTEXT _ENCORRECTTEXT;
+alias ENCORRECTTEXT TENCORRECTTEXT;
+alias ENCORRECTTEXT* PENCORRECTTEXT;
+
+struct ENDROPFILES
+{
+    NMHDR nmhdr;
+    HANDLE hDrop;
+    LONG cp;
+    WINBOOL fProtected;
+}
+
+alias ENDROPFILES _ENDROPFILES;
+alias ENDROPFILES TENDROPFILES;
+alias ENDROPFILES* PENDROPFILES;
+
+struct ENSAVECLIPBOARD
+{
+    NMHDR nmhdr;
+    LONG cObjectCount;
+    LONG cch;
+}
+
+alias ENSAVECLIPBOARD TENSAVECLIPBOARD;
+alias ENSAVECLIPBOARD* PENSAVECLIPBOARD;
+
+struct ENOLEOPFAILED
+{
+    NMHDR nmhdr;
+    LONG iob;
+    LONG lOper;
+    HRESULT hr;
+}
+
+alias ENOLEOPFAILED TENOLEOPFAILED;
+alias ENOLEOPFAILED* PENOLEOPFAILED;
+
+struct ENHMETAHEADER
+{
+    DWORD iType;
+    DWORD nSize;
+    RECTL rclBounds;
+    RECTL rclFrame;
+    DWORD dSignature;
+    DWORD nVersion;
+    DWORD nBytes;
+    DWORD nRecords;
+    ushort nHandles;
+    ushort sReserved;
+    DWORD nDescription;
+    DWORD offDescription;
+    DWORD nPalEntries;
+    SIZEL szlDevice;
+    SIZEL szlMillimeters;
+}
+
+alias ENHMETAHEADER* LPENHMETAHEADER;
+alias ENHMETAHEADER TAGENHMETAHEADER;
+alias ENHMETAHEADER TENHMETAHEADER;
+alias ENHMETAHEADER* PENHMETAHEADER;
+
+struct ENHMETARECORD
+{
+    DWORD iType;
+    DWORD nSize;
+    DWORD[1 + 0] dParm;
+}
+
+alias ENHMETARECORD* LPENHMETARECORD;
+alias ENHMETARECORD TAGENHMETARECORD;
+alias ENHMETARECORD TENHMETARECORD;
+alias ENHMETARECORD* PENHMETARECORD;
+
+struct ENPROTECTED
+{
+    NMHDR nmhdr;
+    UINT msg;
+    WPARAM wParam;
+    LPARAM lParam;
+    CHARRANGE chrg;
+}
+
+alias ENPROTECTED _ENPROTECTED;
+alias ENPROTECTED TENPROTECTED;
+alias ENPROTECTED* PENPROTECTED;
+
+struct SERVICE_STATUS
+{
+    DWORD dwServiceType;
+    DWORD dwCurrentState;
+    DWORD dwControlsAccepted;
+    DWORD dwWin32ExitCode;
+    DWORD dwServiceSpecificExitCode;
+    DWORD dwCheckPoint;
+    DWORD dwWaitHint;
+}
+
+alias SERVICE_STATUS* LPSERVICE_STATUS;
+alias SERVICE_STATUS _SERVICE_STATUS;
+alias SERVICE_STATUS TSERVICESTATUS;
+alias SERVICE_STATUS* PSERVICESTATUS;
+
+struct ENUM_SERVICE_STATUS
+{
+    LPTSTR lpServiceName;
+    LPTSTR lpDisplayName;
+    SERVICE_STATUS ServiceStatus;
+}
+
+alias ENUM_SERVICE_STATUS* LPENUM_SERVICE_STATUS;
+alias ENUM_SERVICE_STATUS _ENUM_SERVICE_STATUS;
+alias ENUM_SERVICE_STATUS TENUMSERVICESTATUS;
+alias ENUM_SERVICE_STATUS* PENUMSERVICESTATUS;
+
+struct ENUMLOGFONTA {
+  LOGFONTA elfLogFont;
+  BYTE     elfFullName[LF_FULLFACESIZE];
+  BYTE     elfStyle[LF_FACESIZE];
+}
+struct ENUMLOGFONTW {
+  LOGFONTW elfLogFont;
+  WCHAR    elfFullName[LF_FULLFACESIZE];
+  WCHAR    elfStyle[LF_FACESIZE];
+}
+struct ENUMLOGFONTEXA {
+    LOGFONTA  elfLogFont;
+    BYTE      elfFullName[LF_FULLFACESIZE];
+    BYTE      elfStyle[LF_FACESIZE];
+    BYTE      elfScript[LF_FACESIZE];
+}
+struct ENUMLOGFONTEXW {
+    LOGFONTW  elfLogFont;
+    WCHAR     elfFullName[LF_FULLFACESIZE];
+    WCHAR     elfStyle[LF_FACESIZE];
+    WCHAR     elfScript[LF_FACESIZE];
+}
+version(Win32SansUnicode){
+    alias ENUMLOGFONTA ENUMLOGFONT;
+    alias ENUMLOGFONTEXA ENUMLOGFONTEX;
+}else {
+    alias ENUMLOGFONTW ENUMLOGFONT;
+    alias ENUMLOGFONTEXW ENUMLOGFONTEX;
+}
+alias ENUMLOGFONT TAGENUMLOGFONT;
+alias ENUMLOGFONT TENUMLOGFONT;
+alias ENUMLOGFONT* PENUMLOGFONT;
+alias ENUMLOGFONTEX TAGENUMLOGFONTEX;
+alias ENUMLOGFONTEX TENUMLOGFONTEX;
+alias ENUMLOGFONTEX* PENUMLOGFONTEX;
+
+struct EVENTLOGRECORD
+{
+    DWORD Length;
+    DWORD Reserved;
+    DWORD RecordNumber;
+    DWORD TimeGenerated;
+    DWORD TimeWritten;
+    DWORD EventID;
+    ushort EventType;
+    ushort NumStrings;
+    ushort EventCategory;
+    ushort ReservedFlags;
+    DWORD ClosingRecordNumber;
+    DWORD StringOffset;
+    DWORD UserSidLength;
+    DWORD UserSidOffset;
+    DWORD DataLength;
+    DWORD DataOffset;
+}
+
+alias EVENTLOGRECORD _EVENTLOGRECORD;
+alias EVENTLOGRECORD TEVENTLOGRECORD;
+alias EVENTLOGRECORD* PEVENTLOGRECORD;
+
+struct EVENTMSG
+{
+    UINT message;
+    UINT paramL;
+    UINT paramH;
+    DWORD time;
+    HWND hwnd;
+}
+
+alias EVENTMSG TAGEVENTMSG;
+alias EVENTMSG TEVENTMSG;
+alias EVENTMSG* PEVENTMSG;
+
+struct EXCEPTION_POINTERS
+{
+    PEXCEPTION_RECORD ExceptionRecord;
+    PCONTEXT ContextRecord;
+}
+
+alias EXCEPTION_POINTERS* LPEXCEPTION_POINTERS;
+alias EXCEPTION_POINTERS* PEXCEPTION_POINTERS;
+alias EXCEPTION_POINTERS _EXCEPTION_POINTERS;
+alias EXCEPTION_POINTERS TEXCEPTIONPOINTERS;
+alias EXCEPTION_POINTERS* PEXCEPTIONPOINTERS;
+
+struct EXT_BUTTON
+{
+    ushort idCommand;
+    ushort idsHelp;
+    ushort fsStyle;
+}
+
+alias EXT_BUTTON* LPEXT_BUTTON;
+alias EXT_BUTTON _EXT_BUTTON;
+alias EXT_BUTTON TEXTBUTTON;
+alias EXT_BUTTON* PEXTBUTTON;
+
+struct FILTERKEYS
+{
+    UINT cbSize;
+    DWORD dwFlags;
+    DWORD iWaitMSec;
+    DWORD iDelayMSec;
+    DWORD iRepeatMSec;
+    DWORD iBounceMSec;
+}
+
+alias FILTERKEYS TAGFILTERKEYS;
+alias FILTERKEYS TFILTERKEYS;
+alias FILTERKEYS* PFILTERKEYS;
+
+struct FIND_NAME_BUFFER
+{
+    UCHAR length;
+    UCHAR access_control;
+    UCHAR frame_control;
+    UCHAR[1 + 5] destination_addr;
+    UCHAR[1 + 5] source_addr;
+    UCHAR[1 + 17] routing_info;
+}
+
+alias FIND_NAME_BUFFER _FIND_NAME_BUFFER;
+alias FIND_NAME_BUFFER TFINDNAMEBUFFER;
+alias FIND_NAME_BUFFER* PFINDNAMEBUFFER;
+
+struct FIND_NAME_HEADER
+{
+    ushort node_count;
+    UCHAR reserved;
+    UCHAR unique_group;
+}
+
+alias FIND_NAME_HEADER _FIND_NAME_HEADER;
+alias FIND_NAME_HEADER TFINDNAMEHEADER;
+alias FIND_NAME_HEADER* PFINDNAMEHEADER;
+
+struct FINDREPLACE
+{
+    DWORD lStructSize;
+    HWND hwndOwner;
+    HINST hInstance;
+    DWORD Flags;
+    LPTSTR lpstrFindWhat;
+    LPTSTR lpstrReplaceWith;
+    ushort wFindWhatLen;
+    ushort wReplaceWithLen;
+    LPARAM lCustData;
+    LPFRHOOKPROC lpfnHook;
+    LPCTSTR lpTemplateName;
+}
+
+alias FINDREPLACE* LPFINDREPLACE;
+alias FINDREPLACE TFINDREPLACE;
+alias FINDREPLACE* PFINDREPLACE;
+
+struct TFINDTEXT
+{
+    CHARRANGE chrg;
+    LPSTR lpstrText;
+}
+
+alias TFINDTEXT _FINDTEXT;
+alias TFINDTEXT* PFINDTEXT;
+
+struct FINDTEXTEX
+{
+    CHARRANGE chrg;
+    LPSTR lpstrText;
+    CHARRANGE chrgText;
+}
+
+alias FINDTEXTEX _FINDTEXTEX;
+alias FINDTEXTEX TFINDTEXTEX;
+alias FINDTEXTEX* PFINDTEXTEX;
+
+struct FMS_GETDRIVEINFO
+{
+    DWORD dwTotalSpace;
+    DWORD dwFreeSpace;
+    TCHAR[1 + 259] szPath;
+    TCHAR[1 + 13] szVolume;
+    TCHAR[1 + 127] szShare;
+}
+
+alias FMS_GETDRIVEINFO _FMS_GETDRIVEINFO;
+alias FMS_GETDRIVEINFO TFMSGETDRIVEINFO;
+alias FMS_GETDRIVEINFO* PFMSGETDRIVEINFO;
+
+struct FMS_GETFILESEL
+{
+    FILETIME ftTime;
+    DWORD dwSize;
+    ubyte bAttr;
+    TCHAR[1 + 259] szName;
+}
+
+alias FMS_GETFILESEL _FMS_GETFILESEL;
+alias FMS_GETFILESEL TFMSGETFILESEL;
+alias FMS_GETFILESEL* PFMSGETFILESEL;
+
+struct FMS_LOAD
+{
+    DWORD dwSize;
+    TCHAR[1 + MENU_TEXT_LEN-1] szMenuName;
+    HMENU hMenu;
+    UINT wMenuDelta;
+}
+
+alias FMS_LOAD _FMS_LOAD;
+alias FMS_LOAD TFMSLOAD;
+alias FMS_LOAD* PFMSLOAD;
+
+struct FMS_TOOLBARLOAD
+{
+    DWORD dwSize;
+    LPEXT_BUTTON lpButtons;
+    ushort cButtons;
+    ushort cBitmaps;
+    ushort idBitmap;
+    HBITMAP hBitmap;
+}
+
+alias FMS_TOOLBARLOAD _FMS_TOOLBARLOAD;
+alias FMS_TOOLBARLOAD TFMSTOOLBARLOAD;
+alias FMS_TOOLBARLOAD* PFMSTOOLBARLOAD;
+
+struct FOCUS_EVENT_RECORD
+{
+    WINBOOL bSetFocus;
+}
+
+alias FOCUS_EVENT_RECORD _FOCUS_EVENT_RECORD;
+alias FOCUS_EVENT_RECORD TFOCUSEVENTRECORD;
+alias FOCUS_EVENT_RECORD* PFOCUSEVENTRECORD;
+
+struct FORM_INFO_1
+{
+    DWORD Flags;
+    LPTSTR pName;
+    SIZEL Size;
+    RECTL ImageableArea;
+}
+
+alias FORM_INFO_1 _FORM_INFO_1;
+alias FORM_INFO_1 TFORMINFO1;
+alias FORM_INFO_1* PFORMINFO1;
+
+struct FORMAT_PARAMETERS
+{
+    MEDIA_TYPE MediaType;
+    DWORD StartCylinderNumber;
+    DWORD EndCylinderNumber;
+    DWORD StartHeadNumber;
+    DWORD EndHeadNumber;
+}
+
+alias FORMAT_PARAMETERS _FORMAT_PARAMETERS;
+alias FORMAT_PARAMETERS TFORMATPARAMETERS;
+alias FORMAT_PARAMETERS* PFORMATPARAMETERS;
+
+struct FORMATRANGE
+{
+    HDC _hdc;
+    HDC hdcTarget;
+    RECT rc;
+    RECT rcPage;
+    CHARRANGE chrg;
+}
+
+alias FORMATRANGE _FORMATRANGE;
+alias FORMATRANGE TFORMATRANGE;
+alias FORMATRANGE* PFORMATRANGE;
+
+struct GCP_RESULTSA
+{
+    DWORD   lStructSize;
+    LPSTR   lpOutString;
+    UINT  * lpOrder;
+    int   * lpDx;
+    int   * lpCaretPos;
+    LPSTR   lpClass;
+    LPWSTR  lpGlyphs;
+    UINT    nGlyphs;
+    int     nMaxFit;
+}
+
+struct GCP_RESULTSW
+{
+    DWORD   lStructSize;
+    LPWSTR  lpOutString;
+    UINT  * lpOrder;
+    int   * lpDx;
+    int   * lpCaretPos;
+    LPSTR   lpClass;
+    LPWSTR  lpGlyphs;
+    UINT    nGlyphs;
+    int     nMaxFit;
+}
+version(Win32SansUnicode)
+{
+    alias GCP_RESULTSA GCP_RESULTS;
+}
+else
+{
+    alias GCP_RESULTSW GCP_RESULTS;
+}
+alias GCP_RESULTS* LPGCP_RESULTS;
+alias GCP_RESULTS TAGGCP_RESULTS;
+alias GCP_RESULTS TGCPRESULTS;
+alias GCP_RESULTS* PGCPRESULTS;
+
+struct GENERIC_MAPPING
+{
+    ACCESS_MASK GenericRead;
+    ACCESS_MASK GenericWrite;
+    ACCESS_MASK GenericExecute;
+    ACCESS_MASK GenericAll;
+}
+
+alias GENERIC_MAPPING* PGENERIC_MAPPING;
+alias GENERIC_MAPPING _GENERIC_MAPPING;
+alias GENERIC_MAPPING TGENERICMAPPING;
+alias GENERIC_MAPPING* PGENERICMAPPING;
+
+struct GLYPHMETRICS
+{
+    UINT gmBlackBoxX;
+    UINT gmBlackBoxY;
+    POINT gmptGlyphOrigin;
+    int gmCellIncX;
+    int gmCellIncY;
+}
+
+alias GLYPHMETRICS* LPGLYPHMETRICS;
+alias GLYPHMETRICS _GLYPHMETRICS;
+alias GLYPHMETRICS TGLYPHMETRICS;
+alias GLYPHMETRICS* PGLYPHMETRICS;
+
+struct HANDLETABLE
+{
+    HGDIOBJ[1 + 0] objectHandle;
+}
+
+alias HANDLETABLE TAGHANDLETABLE;
+alias HANDLETABLE THANDLETABLE;
+alias HANDLETABLE* LPHANDLETABLE;
+
+struct HD_HITTESTINFO
+{
+    POINT pt;
+    UINT flags;
+    int iItem;
+}
+
+alias HD_HITTESTINFO _HD_HITTESTINFO;
+alias HD_HITTESTINFO THDHITTESTINFO;
+alias HD_HITTESTINFO  HDHITTESTINFO;
+alias HD_HITTESTINFO* PHDHITTESTINFO;
+
+struct HD_ITEM
+{
+    UINT mask;
+    int cxy;
+    LPTSTR pszText;
+    HBITMAP hbm;
+    int cchTextMax;
+    int fmt;
+    LPARAM lParam;
+}
+
+alias HD_ITEM _HD_ITEM;
+alias HD_ITEM THDITEM;
+alias HD_ITEM* PHDITEM;
+
+struct WINDOWPOS
+{
+    HWND _hwnd;
+    HWND hwndInsertAfter;
+    int x;
+    int y;
+    int cx;
+    int cy;
+    UINT flags;
+}
+
+alias WINDOWPOS* LPWINDOWPOS;
+alias WINDOWPOS _WINDOWPOS;
+alias WINDOWPOS TWINDOWPOS;
+alias WINDOWPOS* PWINDOWPOS;
+
+struct HD_LAYOUT
+{
+    RECT* prc;
+    WINDOWPOS* pwpos;
+}
+
+alias HD_LAYOUT _HD_LAYOUT;
+alias HD_LAYOUT THDLAYOUT;
+alias HD_LAYOUT  HDLAYOUT;
+alias HD_LAYOUT* PHDLAYOUT;
+
+struct HD_NOTIFY
+{
+    NMHDR hdr;
+    int iItem;
+    int iButton;
+    HD_ITEM* pitem;
+}
+
+alias HD_NOTIFY _HD_NOTIFY;
+alias HD_NOTIFY THDNOTIFY;
+alias HD_NOTIFY* PHDNOTIFY;
+
+struct HELPINFO
+{
+    UINT cbSize;
+    int iContextType;
+    int iCtrlId;
+    HANDLE hItemHandle;
+    DWORD dwContextId;
+    POINT MousePos;
+}
+
+alias HELPINFO* LPHELPINFO;
+alias HELPINFO TAGHELPINFO;
+alias HELPINFO THELPINFO;
+alias HELPINFO* PHELPINFO;
+
+struct HELPWININFO
+{
+    int wStructSize;
+    int x;
+    int y;
+    int dx;
+    int dy;
+    int wMax;
+    TCHAR[1 + 1] rgchMember;
+}
+
+alias HELPWININFO THELPWININFO;
+alias HELPWININFO* PHELPWININFO;
+
+struct HIGHCONTRASTA
+{
+    UINT             cbSize;
+    DWORD            dwFlags;
+    LPSTR            lpszDefaultScheme;
+}
+struct HIGHCONTRASTW
+{
+    UINT             cbSize;
+    DWORD            dwFlags;
+    LPWSTR           lpszDefaultScheme;
+}
+version(Win32SansUnicode)
+{
+    alias HIGHCONTRASTA HIGHCONTRAST;
+}
+else
+{
+    alias HIGHCONTRASTW HIGHCONTRAST;
+}
+alias HIGHCONTRAST* LPHIGHCONTRAST;
+alias HIGHCONTRAST TAGHIGHCONTRAST;
+alias HIGHCONTRAST THIGHCONTRAST;
+alias HIGHCONTRAST* PHIGHCONTRAST;
+
+struct HSZPAIR
+{
+    HSZ hszSvc;
+    HSZ hszTopic;
+}
+
+alias HSZPAIR TAGHSZPAIR;
+alias HSZPAIR THSZPAIR;
+alias HSZPAIR* PHSZPAIR;
+
+struct ICONINFO
+{
+    WINBOOL fIcon;
+    DWORD xHotspot;
+    DWORD yHotspot;
+    HBITMAP hbmMask;
+    HBITMAP hbmColor;
+}
+
+alias ICONINFO _ICONINFO;
+alias ICONINFO TICONINFO;
+alias ICONINFO* PICONINFO;
+
+struct ICONMETRICS
+{
+    UINT cbSize;
+    int iHorzSpacing;
+    int iVertSpacing;
+    int iTitleWrap;
+    LOGFONT lfFont;
+}
+
+alias ICONMETRICS* LPICONMETRICS;
+alias ICONMETRICS TAGICONMETRICS;
+alias ICONMETRICS TICONMETRICS;
+alias ICONMETRICS* PICONMETRICS;
+
+struct IMAGEINFO
+{
+    HBITMAP hbmImage;
+    HBITMAP hbmMask;
+    int Unused1;
+    int Unused2;
+    RECT rcImage;
+}
+
+alias IMAGEINFO _IMAGEINFO;
+alias IMAGEINFO TIMAGEINFO;
+alias IMAGEINFO* PIMAGEINFO;
+
+align(1) struct KEY_EVENT_RECORD
+{
+    WINBOOL bKeyDown;
+    ushort wRepeatCount;
+    ushort wVirtualKeyCode;
+    ushort wVirtualScanCode;
+
+    union
+    {
+        struct
+        {
+            WCHAR UnicodeChar;
+            DWORD dwControlKeyState;
+        }
+        struct
+        {
+            char AsciiChar;
+        }
+    }
+}
+
+alias KEY_EVENT_RECORD _KEY_EVENT_RECORD;
+alias KEY_EVENT_RECORD TKEYEVENTRECORD;
+alias KEY_EVENT_RECORD* PKEYEVENTRECORD;
+
+struct MOUSE_EVENT_RECORD
+{
+    COORD dwMousePosition;
+    DWORD dwButtonState;
+    DWORD dwControlKeyState;
+    DWORD dwEventFlags;
+}
+
+alias MOUSE_EVENT_RECORD _MOUSE_EVENT_RECORD;
+alias MOUSE_EVENT_RECORD TMOUSEEVENTRECORD;
+alias MOUSE_EVENT_RECORD* PMOUSEEVENTRECORD;
+
+struct WINDOW_BUFFER_SIZE_RECORD
+{
+    COORD dwSize;
+}
+
+alias WINDOW_BUFFER_SIZE_RECORD _WINDOW_BUFFER_SIZE_RECORD;
+alias WINDOW_BUFFER_SIZE_RECORD TWINDOWBUFFERSIZERECORD;
+alias WINDOW_BUFFER_SIZE_RECORD* PWINDOWBUFFERSIZERECORD;
+
+struct MENU_EVENT_RECORD
+{
+    UINT dwCommandId;
+}
+
+alias MENU_EVENT_RECORD* PMENU_EVENT_RECORD;
+alias MENU_EVENT_RECORD _MENU_EVENT_RECORD;
+alias MENU_EVENT_RECORD TMENUEVENTRECORD;
+alias MENU_EVENT_RECORD* PMENUEVENTRECORD;
+
+struct INPUT_RECORD
+{
+    ushort EventType;
+
+    union
+    {
+        struct
+        {
+            KEY_EVENT_RECORD KeyEvent;
+        }
+        struct
+        {
+            MOUSE_EVENT_RECORD MouseEvent;
+        }
+        struct
+        {
+            WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
+        }
+        struct
+        {
+            MENU_EVENT_RECORD MenuEvent;
+        }
+        struct
+        {
+            FOCUS_EVENT_RECORD FocusEvent;
+        }
+    }
+}
+
+alias INPUT_RECORD* PINPUT_RECORD;
+alias INPUT_RECORD _INPUT_RECORD;
+alias INPUT_RECORD TINPUTRECORD;
+alias INPUT_RECORD* PINPUTRECORD;
+
+struct SYSTEMTIME
+{
+    ushort wYear;
+    ushort wMonth;
+    ushort wDayOfWeek;
+    ushort wDay;
+    ushort wHour;
+    ushort wMinute;
+    ushort wSecond;
+    ushort wMilliseconds;
+}
+
+alias SYSTEMTIME* LPSYSTEMTIME;
+alias SYSTEMTIME _SYSTEMTIME;
+alias SYSTEMTIME TSYSTEMTIME;
+alias SYSTEMTIME* PSYSTEMTIME;
+
+struct JOB_INFO_1
+{
+    DWORD JobId;
+    LPTSTR pPrinterName;
+    LPTSTR pMachineName;
+    LPTSTR pUserName;
+    LPTSTR pDocument;
+    LPTSTR pDatatype;
+    LPTSTR pStatus;
+    DWORD Status;
+    DWORD Priority;
+    DWORD Position;
+    DWORD TotalPages;
+    DWORD PagesPrinted;
+    SYSTEMTIME Submitted;
+}
+
+alias JOB_INFO_1 _JOB_INFO_1;
+alias JOB_INFO_1 TJOBINFO1;
+alias JOB_INFO_1* PJOBINFO1;
+
+struct SID_IDENTIFIER_AUTHORITY
+{
+    ubyte[1 + 5] Value;
+}
+
+alias SID_IDENTIFIER_AUTHORITY* LPSID_IDENTIFIER_AUTHORITY;
+alias SID_IDENTIFIER_AUTHORITY* PSID_IDENTIFIER_AUTHORITY;
+alias SID_IDENTIFIER_AUTHORITY _SID_IDENTIFIER_AUTHORITY;
+alias SID_IDENTIFIER_AUTHORITY TSIDIDENTIFIERAUTHORITY;
+alias SID_IDENTIFIER_AUTHORITY* PSIDIDENTIFIERAUTHORITY;
+
+struct SID
+{
+    ubyte Revision;
+    ubyte SubAuthorityCount;
+    SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+    DWORD[1 + ANYSIZE_ARRAY-1] SubAuthority;
+}
+
+alias SID _SID;
+alias SID TSID;
+alias SID* PSID;
+alias ushort SECURITY_DESCRIPTOR_CONTROL;
+alias SECURITY_DESCRIPTOR_CONTROL* PSECURITY_DESCRIPTOR_CONTROL;
+alias SECURITY_DESCRIPTOR_CONTROL TSECURITYDESCRIPTORCONTROL;
+alias SECURITY_DESCRIPTOR_CONTROL* PSECURITYDESCRIPTORCONTROL;
+
+struct SECURITY_DESCRIPTOR
+{
+    ubyte Revision;
+    ubyte Sbz1;
+    SECURITY_DESCRIPTOR_CONTROL Control;
+    PSID Owner;
+    PSID Group;
+    PACL Sacl;
+    PACL Dacl;
+}
+
+alias SECURITY_DESCRIPTOR* PSECURITY_DESCRIPTOR;
+alias SECURITY_DESCRIPTOR _SECURITY_DESCRIPTOR;
+alias SECURITY_DESCRIPTOR TSECURITYDESCRIPTOR;
+alias SECURITY_DESCRIPTOR* PSECURITYDESCRIPTOR;
+
+struct JOB_INFO_2
+{
+    DWORD JobId;
+    LPTSTR pPrinterName;
+    LPTSTR pMachineName;
+    LPTSTR pUserName;
+    LPTSTR pDocument;
+    LPTSTR pNotifyName;
+    LPTSTR pDatatype;
+    LPTSTR pPrintProcessor;
+    LPTSTR pParameters;
+    LPTSTR pDriverName;
+    LPDEVMODE pDevMode;
+    LPTSTR pStatus;
+    PSECURITY_DESCRIPTOR pSecurityDescriptor;
+    DWORD Status;
+    DWORD Priority;
+    DWORD Position;
+    DWORD StartTime;
+    DWORD UntilTime;
+    DWORD TotalPages;
+    DWORD Size;
+    SYSTEMTIME Submitted;
+    DWORD Time;
+    DWORD PagesPrinted;
+}
+
+alias JOB_INFO_2 _JOB_INFO_2;
+alias JOB_INFO_2 TJOBINFO2;
+alias JOB_INFO_2* PJOBINFO2;
+
+struct KERNINGPAIR
+{
+    ushort wFirst;
+    ushort wSecond;
+    int iKernAmount;
+}
+
+alias KERNINGPAIR* LPKERNINGPAIR;
+alias KERNINGPAIR TAGKERNINGPAIR;
+alias KERNINGPAIR TKERNINGPAIR;
+alias KERNINGPAIR* PKERNINGPAIR;
+
+struct LANA_ENUM
+{
+    UCHAR length;
+    UCHAR[1 + MAX_LANA-1] lana;
+}
+
+alias LANA_ENUM _LANA_ENUM;
+alias LANA_ENUM TLANAENUM;
+alias LANA_ENUM* PLANAENUM;
+
+struct LDT_ENTRY
+{
+    ushort LimitLow;
+    ushort BaseLow;
+
+    union
+    {
+        struct
+        {
+            ubyte BaseMid;
+            ubyte Flags1;
+            ubyte Flags2;
+            ubyte BaseHi;
+        }
+        struct
+        {
+            int flag0;
+        }
+    }
+}
+
+alias LDT_ENTRY* LPLDT_ENTRY;
+alias LDT_ENTRY* PLDT_ENTRY;
+alias LDT_ENTRY _LDT_ENTRY;
+alias LDT_ENTRY TLDTENTRY;
+alias LDT_ENTRY* PLDTENTRY;
+enum : DWORD {
+    bm_LDT_ENTRY_BaseMid = (0xFF),
+    bp_LDT_ENTRY_BaseMid = (0),
+    bm_LDT_ENTRY_Type = (0x1F00),
+    bp_LDT_ENTRY_Type = (8),
+    bm_LDT_ENTRY_Dpl = (0x6000),
+    bp_LDT_ENTRY_Dpl = (13),
+    bm_LDT_ENTRY_Pres = (0x8000),
+    bp_LDT_ENTRY_Pres = (15),
+    bm_LDT_ENTRY_LimitHi = (0xF0000),
+    bp_LDT_ENTRY_LimitHi = (16),
+    bm_LDT_ENTRY_Sys = (0x100000),
+    bp_LDT_ENTRY_Sys = (20),
+    bm_LDT_ENTRY_Reserved_0 = (0x200000),
+    bp_LDT_ENTRY_Reserved_0 = (21),
+    bm_LDT_ENTRY_Default_Big = (0x400000),
+    bp_LDT_ENTRY_Default_Big = (22),
+    bm_LDT_ENTRY_Granularity = (0x800000),
+    bp_LDT_ENTRY_Granularity = (23),
+    bm_LDT_ENTRY_BaseHi = (0xFF000000),
+    bp_LDT_ENTRY_BaseHi = (24),
+}
+
+struct LOCALESIGNATURE
+{
+    DWORD[1 + 3] lsUsb;
+    DWORD[1 + 1] lsCsbDefault;
+    DWORD[1 + 1] lsCsbSupported;
+}
+
+alias LOCALESIGNATURE TAGLOCALESIGNATURE;
+alias LOCALESIGNATURE TLOCALESIGNATURE;
+alias LOCALESIGNATURE* PLOCALESIGNATURE;
+
+struct LOCALGROUP_MEMBERS_INFO_0
+{
+    PSID lgrmi0_sid;
+}
+
+alias LOCALGROUP_MEMBERS_INFO_0 _LOCALGROUP_MEMBERS_INFO_0;
+alias LOCALGROUP_MEMBERS_INFO_0 TLOCALGROUPMEMBERSINFO0;
+alias LOCALGROUP_MEMBERS_INFO_0* PLOCALGROUPMEMBERSINFO0;
+
+struct LOCALGROUP_MEMBERS_INFO_3
+{
+    LPWSTR lgrmi3_domainandname;
+}
+
+alias LOCALGROUP_MEMBERS_INFO_3 _LOCALGROUP_MEMBERS_INFO_3;
+alias LOCALGROUP_MEMBERS_INFO_3 TLOCALGROUPMEMBERSINFO3;
+alias LOCALGROUP_MEMBERS_INFO_3* PLOCALGROUPMEMBERSINFO3;
+alias int FXPT16DOT16;
+alias FXPT16DOT16* LPFXPT16DOT16;
+alias FXPT16DOT16 TFXPT16DOT16;
+alias FXPT16DOT16* PFXPT16DOT16;
+alias LARGE_INTEGER LUID;
+alias LUID TLUID;
+alias LUID* PLUID;
+
+struct LUID_AND_ATTRIBUTES
+{
+    LUID Luid;
+    DWORD Attributes;
+}
+
+alias LUID_AND_ATTRIBUTES _LUID_AND_ATTRIBUTES;
+alias LUID_AND_ATTRIBUTES TLUIDANDATTRIBUTES;
+alias LUID_AND_ATTRIBUTES* PLUIDANDATTRIBUTES;
+alias LUID_AND_ATTRIBUTES[1 + ANYSIZE_ARRAY-1] LUID_AND_ATTRIBUTES_ARRAY;
+alias LUID_AND_ATTRIBUTES_ARRAY* PLUID_AND_ATTRIBUTES_ARRAY;
+alias LUID_AND_ATTRIBUTES_ARRAY TLUIDANDATTRIBUTESARRAY;
+alias LUID_AND_ATTRIBUTES_ARRAY* PLUIDANDATTRIBUTESARRAY;
+
+struct LV_COLUMN
+{
+    UINT mask;
+    int fmt;
+    int cx;
+    LPTSTR pszText;
+    int cchTextMax;
+    int iSubItem;
+}
+
+alias LV_COLUMN _LV_COLUMN;
+alias LV_COLUMN TLVCOLUMN;
+alias LV_COLUMN* PLVCOLUMN;
+
+struct LV_ITEM
+{
+    UINT mask;
+    int iItem;
+    int iSubItem;
+    UINT state;
+    UINT stateMask;
+    LPTSTR pszText;
+    int cchTextMax;
+    int iImage;
+    LPARAM lParam;
+}
+
+alias LV_ITEM _LV_ITEM;
+alias LV_ITEM TLVITEM;
+alias LV_ITEM* PLVITEM;
+
+struct LV_DISPINFO
+{
+    NMHDR hdr;
+    LV_ITEM item;
+}
+
+alias LV_DISPINFO TAGLV_DISPINFO;
+alias LV_DISPINFO TLVDISPINFO;
+alias LV_DISPINFO* PLVDISPINFO;
+
+struct LV_FINDINFO
+{
+    UINT flags;
+    LPCTSTR psz;
+    LPARAM lParam;
+    POINT pt;
+    UINT vkDirection;
+}
+
+alias LV_FINDINFO _LV_FINDINFO;
+alias LV_FINDINFO TLVFINDINFO;
+alias LV_FINDINFO* PLVFINDINFO;
+
+struct LV_HITTESTINFO
+{
+    POINT pt;
+    UINT flags;
+    int iItem;
+}
+
+alias LV_HITTESTINFO _LV_HITTESTINFO;
+alias LV_HITTESTINFO TLVHITTESTINFO;
+alias LV_HITTESTINFO* PLVHITTESTINFO;
+
+struct LV_KEYDOWN
+{
+    NMHDR hdr;
+    ushort wVKey;
+    UINT flags;
+}
+
+alias LV_KEYDOWN TAGLV_KEYDOWN;
+alias LV_KEYDOWN TLVKEYDOWN;
+alias LV_KEYDOWN* PLVKEYDOWN;
+
+struct MAT2
+{
+    FIXED eM11;
+    FIXED eM12;
+    FIXED eM21;
+    FIXED eM22;
+}
+
+alias MAT2 _MAT2;
+alias MAT2 TMAT2;
+alias MAT2* PMAT2;
+
+struct MDICREATESTRUCT
+{
+    LPCTSTR szClass;
+    LPCTSTR szTitle;
+    HANDLE hOwner;
+    int x;
+    int y;
+    int cx;
+    int cy;
+    DWORD style;
+    LPARAM lParam;
+}
+
+alias MDICREATESTRUCT* LPMDICREATESTRUCT;
+alias MDICREATESTRUCT TAGMDICREATESTRUCT;
+alias MDICREATESTRUCT TMDICREATESTRUCT;
+alias MDICREATESTRUCT* PMDICREATESTRUCT;
+
+struct MEASUREITEMSTRUCT
+{
+    UINT CtlType;
+    UINT CtlID;
+    UINT itemID;
+    UINT itemWidth;
+    UINT itemHeight;
+    DWORD itemData;
+}
+
+alias MEASUREITEMSTRUCT* LPMEASUREITEMSTRUCT;
+alias MEASUREITEMSTRUCT TAGMEASUREITEMSTRUCT;
+alias MEASUREITEMSTRUCT TMEASUREITEMSTRUCT;
+alias MEASUREITEMSTRUCT* PMEASUREITEMSTRUCT;
+
+struct MEMORY_BASIC_INFORMATION
+{
+    PVOID BaseAddress;
+    PVOID AllocationBase;
+    DWORD AllocationProtect;
+    DWORD RegionSize;
+    DWORD State;
+    DWORD Protect;
+    DWORD _Type;
+}
+
+alias MEMORY_BASIC_INFORMATION* PMEMORY_BASIC_INFORMATION;
+alias MEMORY_BASIC_INFORMATION _MEMORY_BASIC_INFORMATION;
+alias MEMORY_BASIC_INFORMATION TMEMORYBASICINFORMATION;
+alias MEMORY_BASIC_INFORMATION* PMEMORYBASICINFORMATION;
+
+struct MEMORYSTATUS
+{
+    DWORD dwLength;
+    DWORD dwMemoryLoad;
+    DWORD dwTotalPhys;
+    DWORD dwAvailPhys;
+    DWORD dwTotalPageFile;
+    DWORD dwAvailPageFile;
+    DWORD dwTotalVirtual;
+    DWORD dwAvailVirtual;
+}
+
+alias MEMORYSTATUS* LPMEMORYSTATUS;
+alias MEMORYSTATUS _MEMORYSTATUS;
+alias MEMORYSTATUS TMEMORYSTATUS;
+alias MEMORYSTATUS* PMEMORYSTATUS;
+
+struct MENUEX_TEMPLATE_HEADER
+{
+    ushort wVersion;
+    ushort wOffset;
+    DWORD dwHelpId;
+}
+
+alias MENUEX_TEMPLATE_HEADER TMENUXTEMPLATEHEADER;
+alias MENUEX_TEMPLATE_HEADER* PMENUXTEMPLATEHEADER;
+
+struct MENUEX_TEMPLATE_ITEM
+{
+    DWORD dwType;
+    DWORD dwState;
+    UINT uId;
+    ubyte bResInfo;
+    WCHAR[1 + 0] szText;
+    DWORD dwHelpId;
+}
+
+alias MENUEX_TEMPLATE_ITEM TMENUEXTEMPLATEITEM;
+alias MENUEX_TEMPLATE_ITEM* PMENUEXTEMPLATEITEM;
+
+/*
+* Feature in Windows.  The hbmpItem field requires Windows 4.10
+* or greater.  On Windows NT 4.0, passing in a larger struct size
+* in the cbSize field does nothing.  On Windows 95, the MENUITEMINFO
+* calls fail when the struct size is too large.  The fix is to ensure
+* that the correct struct size is used for the Windows platform.
+*/
+struct MENUITEMINFOA
+{
+    UINT    cbSize;
+    UINT    fMask;
+    UINT    fType;          // used if MIIM_TYPE
+    UINT    fState;         // used if MIIM_STATE
+    UINT    wID;            // used if MIIM_ID
+    HMENU   hSubMenu;       // used if MIIM_SUBMENU
+    HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
+    HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
+    DWORD   dwItemData;     // used if MIIM_DATA
+    LPSTR   dwTypeData;     // used if MIIM_TYPE
+    UINT    cch;            // used if MIIM_TYPE
+    HBITMAP hbmpItem;
+}
+alias MENUITEMINFOA* PMENUITEMINFOA, LPMENUITEMINFOA;
+struct MENUITEMINFOW
+{
+    UINT    cbSize;
+    UINT    fMask;
+    UINT    fType;          // used if MIIM_TYPE
+    UINT    fState;         // used if MIIM_STATE
+    UINT    wID;            // used if MIIM_ID
+    HMENU   hSubMenu;       // used if MIIM_SUBMENU
+    HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
+    HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
+    DWORD   dwItemData;     // used if MIIM_DATA
+    LPWSTR  dwTypeData;     // used if MIIM_TYPE
+    UINT    cch;            // used if MIIM_TYPE
+    HBITMAP hbmpItem;
+}   alias MENUITEMINFOW* PMENUITEMINFOW, LPMENUITEMINFOW;
+version(Win32SansUnicode)
+{
+    alias MENUITEMINFOA MENUITEMINFO;
+}
+else
+{
+    alias MENUITEMINFOW MENUITEMINFO;
+}
+alias MENUITEMINFO * LPMENUITEMINFO;
+alias MENUITEMINFO * LPCMENUITEMINFO;
+alias MENUITEMINFO TAGMENUITEMINFO;
+alias MENUITEMINFO TMENUITEMINFO;
+alias MENUITEMINFO TMENUITEMINFOA;
+alias MENUITEMINFO* PMENUITEMINFO;
+
+struct MENUITEMTEMPLATE
+{
+    ushort mtOption;
+    ushort mtID;
+    WCHAR[1 + 0] mtString;
+}
+
+alias MENUITEMTEMPLATE TMENUITEMTEMPLATE;
+alias MENUITEMTEMPLATE* PMENUITEMTEMPLATE;
+
+struct MENUITEMTEMPLATEHEADER
+{
+    ushort versionNumber;
+    ushort offset;
+}
+
+alias MENUITEMTEMPLATEHEADER TMENUITEMTEMPLATEHEADER;
+alias MENUITEMTEMPLATEHEADER* PMENUITEMTEMPLATEHEADER;
+
+struct MENUTEMPLATE
+{
+}
+
+alias MENUTEMPLATE* LPMENUTEMPLATE;
+alias MENUTEMPLATE TMENUTEMPLATE;
+alias MENUTEMPLATE* PMENUTEMPLATE;
+
+struct METAFILEPICT
+{
+    LONG mm;
+    LONG xExt;
+    LONG yExt;
+    HMETAFILE hMF;
+}
+
+alias METAFILEPICT* LPMETAFILEPICT;
+alias METAFILEPICT TAGMETAFILEPICT;
+alias METAFILEPICT TMETAFILEPICT;
+alias METAFILEPICT* PMETAFILEPICT;
+
+align(1) struct METAHEADER
+{
+    ushort mtType;
+    ushort mtHeaderSize;
+    ushort mtVersion;
+    DWORD mtSize;
+    ushort mtNoObjects;
+    DWORD mtMaxRecord;
+    ushort mtNoParameters;
+}
+
+alias METAHEADER TAGMETAHEADER;
+alias METAHEADER TMETAHEADER;
+alias METAHEADER* PMETAHEADER;
+
+struct METARECORD
+{
+    DWORD rdSize;
+    ushort rdFunction;
+    ushort[1 + 0] rdParm;
+}
+
+alias METARECORD* LPMETARECORD;
+alias METARECORD TAGMETARECORD;
+alias METARECORD TMETARECORD;
+alias METARECORD* PMETARECORD;
+
+struct MINIMIZEDMETRICS
+{
+    UINT cbSize;
+    int iWidth;
+    int iHorzGap;
+    int iVertGap;
+    int iArrange;
+}
+
+alias MINIMIZEDMETRICS* LPMINIMIZEDMETRICS;
+alias MINIMIZEDMETRICS TAGMINIMIZEDMETRICS;
+alias MINIMIZEDMETRICS TMINIMIZEDMETRICS;
+alias MINIMIZEDMETRICS* PMINIMIZEDMETRICS;
+
+struct MINMAXINFO
+{
+    POINT ptReserved;
+    POINT ptMaxSize;
+    POINT ptMaxPosition;
+    POINT ptMinTrackSize;
+    POINT ptMaxTrackSize;
+}
+
+alias MINMAXINFO TAGMINMAXINFO;
+alias MINMAXINFO TMINMAXINFO;
+alias MINMAXINFO* PMINMAXINFO;
+
+struct MODEMDEVCAPS
+{
+    DWORD dwActualSize;
+    DWORD dwRequiredSize;
+    DWORD dwDevSpecificOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwModemProviderVersion;
+    DWORD dwModemManufacturerOffset;
+    DWORD dwModemManufacturerSize;
+    DWORD dwModemModelOffset;
+    DWORD dwModemModelSize;
+    DWORD dwModemVersionOffset;
+    DWORD dwModemVersionSize;
+    DWORD dwDialOptions;
+    DWORD dwCallSetupFailTimer;
+    DWORD dwInactivityTimeout;
+    DWORD dwSpeakerVolume;
+    DWORD dwSpeakerMode;
+    DWORD dwModemOptions;
+    DWORD dwMaxDTERate;
+    DWORD dwMaxDCERate;
+    ubyte[1 + 0] abVariablePortion;
+}
+
+alias MODEMDEVCAPS* LPMODEMDEVCAPS;
+alias MODEMDEVCAPS TMODEMDEVCAPS;
+alias MODEMDEVCAPS* PMODEMDEVCAPS;
+alias MODEMDEVCAPS MODEMDEVCAPS_TAG;
+
+struct MODEMSETTINGS
+{
+    DWORD dwActualSize;
+    DWORD dwRequiredSize;
+    DWORD dwDevSpecificOffset;
+    DWORD dwDevSpecificSize;
+    DWORD dwCallSetupFailTimer;
+    DWORD dwInactivityTimeout;
+    DWORD dwSpeakerVolume;
+    DWORD dwSpeakerMode;
+    DWORD dwPreferredModemOptions;
+    DWORD dwNegotiatedModemOptions;
+    DWORD dwNegotiatedDCERate;
+    ubyte[1 + 0] abVariablePortion;
+}
+
+alias MODEMSETTINGS* LPMODEMSETTINGS;
+alias MODEMSETTINGS TMODEMSETTINGS;
+alias MODEMSETTINGS* PMODEMSETTINGS;
+alias MODEMSETTINGS MODEMSETTINGS_TAG;
+
+struct MONCBSTRUCT
+{
+    UINT cb;
+    DWORD dwTime;
+    HANDLE hTask;
+    DWORD dwRet;
+    UINT wType;
+    UINT wFmt;
+    HCONV hConv;
+    HSZ hsz1;
+    HSZ hsz2;
+    HDDEDATA hData;
+    DWORD dwData1;
+    DWORD dwData2;
+    CONVCONTEXT cc;
+    DWORD cbData;
+    DWORD[1 + 7] Data;
+}
+
+alias MONCBSTRUCT TAGMONCBSTRUCT;
+alias MONCBSTRUCT TMONCBSTRUCT;
+alias MONCBSTRUCT* PMONCBSTRUCT;
+
+struct MONCONVSTRUCT
+{
+    UINT cb;
+    WINBOOL fConnect;
+    DWORD dwTime;
+    HANDLE hTask;
+    HSZ hszSvc;
+    HSZ hszTopic;
+    HCONV hConvClient;
+    HCONV hConvServer;
+}
+
+alias MONCONVSTRUCT TAGMONCONVSTRUCT;
+alias MONCONVSTRUCT TMONCONVSTRUCT;
+alias MONCONVSTRUCT* PMONCONVSTRUCT;
+
+struct MONERRSTRUCT
+{
+    UINT cb;
+    UINT wLastError;
+    DWORD dwTime;
+    HANDLE hTask;
+}
+
+alias MONERRSTRUCT TAGMONERRSTRUCT;
+alias MONERRSTRUCT TMONERRSTRUCT;
+alias MONERRSTRUCT* PMONERRSTRUCT;
+
+struct MONHSZSTRUCT
+{
+    UINT cb;
+    WINBOOL fsAction;
+    DWORD dwTime;
+    HSZ hsz;
+    HANDLE hTask;
+    TCHAR[1 + 0] str;
+}
+
+alias MONHSZSTRUCT TAGMONHSZSTRUCT;
+alias MONHSZSTRUCT TMONHSZSTRUCT;
+alias MONHSZSTRUCT* PMONHSZSTRUCT;
+
+struct MONITOR_INFO_1
+{
+    LPTSTR pName;
+}
+
+alias MONITOR_INFO_1 _MONITOR_INFO_1;
+alias MONITOR_INFO_1 TMONITORINFO1;
+alias MONITOR_INFO_1* PMONITORINFO1;
+
+struct MONITOR_INFO_2
+{
+    LPTSTR pName;
+    LPTSTR pEnvironment;
+    LPTSTR pDLLName;
+}
+
+alias MONITOR_INFO_2 _MONITOR_INFO_2;
+alias MONITOR_INFO_2 TMONITORINFO2;
+alias MONITOR_INFO_2* PMONITORINFO2;
+
+struct MONLINKSTRUCT
+{
+    UINT cb;
+    DWORD dwTime;
+    HANDLE hTask;
+    WINBOOL fEstablished;
+    WINBOOL fNoData;
+    HSZ hszSvc;
+    HSZ hszTopic;
+    HSZ hszItem;
+    UINT wFmt;
+    WINBOOL fServer;
+    HCONV hConvServer;
+    HCONV hConvClient;
+}
+
+alias MONLINKSTRUCT TAGMONLINKSTRUCT;
+alias MONLINKSTRUCT TMONLINKSTRUCT;
+alias MONLINKSTRUCT* PMONLINKSTRUCT;
+
+struct MONMSGSTRUCT
+{
+    UINT cb;
+    HWND hwndTo;
+    DWORD dwTime;
+    HANDLE hTask;
+    UINT wMsg;
+    WPARAM wParam;
+    LPARAM lParam;
+    DDEML_MSG_HOOK_DATA dmhd;
+}
+
+alias MONMSGSTRUCT TAGMONMSGSTRUCT;
+alias MONMSGSTRUCT TMONMSGSTRUCT;
+alias MONMSGSTRUCT* PMONMSGSTRUCT;
+
+struct MOUSEHOOKSTRUCT
+{
+    POINT pt;
+    HWND hwnd;
+    UINT wHitTestCode;
+    DWORD dwExtraInfo;
+}
+
+alias MOUSEHOOKSTRUCT* LPMOUSEHOOKSTRUCT;
+alias MOUSEHOOKSTRUCT TAGMOUSEHOOKSTRUCT;
+alias MOUSEHOOKSTRUCT TMOUSEHOOKSTRUCT;
+alias MOUSEHOOKSTRUCT* PMOUSEHOOKSTRUCT;
+
+struct MOUSEKEYS
+{
+    DWORD cbSize;
+    DWORD dwFlags;
+    DWORD iMaxSpeed;
+    DWORD iTimeToMaxSpeed;
+    DWORD iCtrlSpeed;
+    DWORD dwReserved1;
+    DWORD dwReserved2;
+}
+
+alias MOUSEKEYS TMOUSEKEYS;
+alias MOUSEKEYS* PMOUSEKEYS;
+
+struct MSG
+{
+    HWND hwnd;
+    UINT message;
+    WPARAM wParam;
+    LPARAM lParam;
+    DWORD time;
+    POINT pt;
+}
+
+alias MSG* LPMSG;
+alias MSG TAGMSG;
+alias MSG TMSG;
+alias MSG* PMSG;
+extern(Windows){
+alias void (*MSGBOXCALLBACK)(LPHELPINFO);
+}
+alias MSGBOXCALLBACK TMSGBOXCALLBACK;
+
+struct MSGBOXPARAMS
+{
+    UINT cbSize;
+    HWND hwndOwner;
+    HINST hInstance;
+    LPCSTR lpszText;
+    LPCSTR lpszCaption;
+    DWORD dwStyle;
+    LPCSTR lpszIcon;
+    DWORD dwContextHelpId;
+    MSGBOXCALLBACK lpfnMsgBoxCallback;
+    DWORD dwLanguageId;
+}
+
+alias MSGBOXPARAMS* LPMSGBOXPARAMS;
+alias MSGBOXPARAMS TMSGBOXPARAMS;
+alias MSGBOXPARAMS TMSGBOXPARAMSA;
+alias MSGBOXPARAMS* PMSGBOXPARAMS;
+
+struct MSGFILTER
+{
+    NMHDR nmhdr;
+    UINT msg;
+    WPARAM wParam;
+    LPARAM lParam;
+}
+
+alias MSGFILTER _MSGFILTER;
+alias MSGFILTER TMSGFILTER;
+alias MSGFILTER* PMSGFILTER;
+
+struct MULTIKEYHELP
+{
+    DWORD mkSize;
+    TCHAR mkKeylist;
+    TCHAR[1 + 0] szKeyphrase;
+}
+
+alias MULTIKEYHELP TAGMULTIKEYHELP;
+alias MULTIKEYHELP TMULTIKEYHELP;
+alias MULTIKEYHELP* PMULTIKEYHELP;
+
+struct NAME_BUFFER
+{
+    UCHAR[1 + NCBNAMSZ-1] name;
+    UCHAR name_num;
+    UCHAR name_flags;
+}
+
+alias NAME_BUFFER _NAME_BUFFER;
+alias NAME_BUFFER TNAMEBUFFER;
+alias NAME_BUFFER* PNAMEBUFFER;
+alias _NCB* P_NCB;
+
+struct NCB
+{
+    UCHAR ncb_command;
+    UCHAR ncb_retcode;
+    UCHAR ncb_lsn;
+    UCHAR ncb_num;
+    PUCHAR ncb_buffer;
+    ushort ncb_length;
+    UCHAR[1 + NCBNAMSZ-1] ncb_callname;
+    UCHAR[1 + NCBNAMSZ-1] ncb_name;
+    UCHAR ncb_rto;
+    UCHAR ncb_sto;
+    POINTER ncb_post;
+    UCHAR ncb_lana_num;
+    UCHAR ncb_cmd_cplt;
+    UCHAR[1 + 9] ncb_reserve;
+    HANDLE ncb_event;
+}
+
+alias NCB _NCB;
+alias NCB TNCB;
+alias NCB* PNCB;
+
+struct NCCALCSIZE_PARAMS
+{
+    RECT[1 + 2] rgrc;
+    PWINDOWPOS lppos;
+}
+
+alias NCCALCSIZE_PARAMS _NCCALCSIZE_PARAMS;
+alias NCCALCSIZE_PARAMS TNCCALCSIZEPARAMS;
+alias NCCALCSIZE_PARAMS* PNCCALCSIZEPARAMS;
+
+struct NDDESHAREINFO
+{
+    LONG lRevision;
+    LPTSTR lpszShareName;
+    LONG lShareType;
+    LPTSTR lpszAppTopicList;
+    LONG fSharedFlag;
+    LONG fService;
+    LONG fStartAppFlag;
+    LONG nCmdShow;
+    LONG[1 + 1] qModifyId;
+    LONG cNumItems;
+    LPTSTR lpszItemList;
+}
+
+alias NDDESHAREINFO _NDDESHAREINFO;
+alias NDDESHAREINFO TNDDESHAREINFO;
+alias NDDESHAREINFO* PNDDESHAREINFO;
+
+struct NETRESOURCE
+{
+    DWORD dwScope;
+    DWORD dwType;
+    DWORD dwDisplayType;
+    DWORD dwUsage;
+    LPTSTR lpLocalName;
+    LPTSTR lpRemoteName;
+    LPTSTR lpComment;
+    LPTSTR lpProvider;
+}
+
+alias NETRESOURCE* LPNETRESOURCE;
+alias NETRESOURCE _NETRESOURCE;
+alias NETRESOURCE TNETRESOURCE;
+alias NETRESOURCE TNETRESOURCEA;
+alias NETRESOURCE* PNETRESOURCE;
+alias NETRESOURCE* PNETRESOURCEA;
+
+struct NEWCPLINFO
+{
+    DWORD dwSize;
+    DWORD dwFlags;
+    DWORD dwHelpContext;
+    LONG lData;
+    HICON hIcon;
+    TCHAR[1 + 31] szName;
+    TCHAR[1 + 63] szInfo;
+    TCHAR[1 + 127] szHelpFile;
+}
+
+alias NEWCPLINFO TAGNEWCPLINFO;
+alias NEWCPLINFO TNEWCPLINFO;
+alias NEWCPLINFO* PNEWCPLINFO;
+
+struct NEWTEXTMETRICA {
+    LONG   tmHeight;
+    LONG   tmAscent;
+    LONG   tmDescent;
+    LONG   tmInternalLeading;
+    LONG   tmExternalLeading;
+    LONG   tmAveCharWidth;
+    LONG   tmMaxCharWidth;
+    LONG   tmWeight;
+    LONG   tmOverhang;
+    LONG   tmDigitizedAspectX;
+    LONG   tmDigitizedAspectY;
+    BYTE  tmFirstChar;
+    BYTE  tmLastChar;
+    BYTE  tmDefaultChar;
+    BYTE  tmBreakChar;
+    BYTE   tmItalic;
+    BYTE   tmUnderlined;
+    BYTE   tmStruckOut;
+    BYTE   tmPitchAndFamily;
+    BYTE   tmCharSet;
+    DWORD  ntmFlags;
+    UINT   ntmSizeEM;
+    UINT   ntmCellHeight;
+    UINT   ntmAvgWidth;
+}
+struct NEWTEXTMETRICW {
+    LONG   tmHeight;
+    LONG   tmAscent;
+    LONG   tmDescent;
+    LONG   tmInternalLeading;
+    LONG   tmExternalLeading;
+    LONG   tmAveCharWidth;
+    LONG   tmMaxCharWidth;
+    LONG   tmWeight;
+    LONG   tmOverhang;
+    LONG   tmDigitizedAspectX;
+    LONG   tmDigitizedAspectY;
+    WCHAR  tmFirstChar;
+    WCHAR  tmLastChar;
+    WCHAR  tmDefaultChar;
+    WCHAR  tmBreakChar;
+    BYTE   tmItalic;
+    BYTE   tmUnderlined;
+    BYTE   tmStruckOut;
+    BYTE   tmPitchAndFamily;
+    BYTE   tmCharSet;
+    DWORD  ntmFlags;
+    UINT   ntmSizeEM;
+    UINT   ntmCellHeight;
+    UINT   ntmAvgWidth;
+}
+
+struct NEWTEXTMETRICEXA
+{
+    NEWTEXTMETRICA  ntmentm;
+    FONTSIGNATURE  ntmeFontSignature;
+}
+struct NEWTEXTMETRICEXW
+{
+    NEWTEXTMETRICW  ntmentm;
+    FONTSIGNATURE  ntmeFontSignature;
+}
+
+
+version(Win32SansUnicode)
+{
+    alias NEWTEXTMETRICA NEWTEXTMETRIC;
+    alias NEWTEXTMETRICEXA NEWTEXTMETRICEX;
+}
+else
+{
+    alias NEWTEXTMETRICW NEWTEXTMETRIC;
+    alias NEWTEXTMETRICEXW NEWTEXTMETRICEX;
+}
+
+alias NEWTEXTMETRIC TNEWTEXTMETRIC;
+alias NEWTEXTMETRIC* PNEWTEXTMETRIC;
+alias NEWTEXTMETRIC* LPNEWTEXTMETRIC;
+alias NEWTEXTMETRIC TAGNEWTEXTMETRIC;
+alias NEWTEXTMETRICEX TAGNEWTEXTMETRICEX;
+alias NEWTEXTMETRICEX TNEWTEXTMETRICEX;
+alias NEWTEXTMETRICEX* PNEWTEXTMETRICEX;
+
+struct NM_LISTVIEW
+{
+    NMHDR hdr;
+    int iItem;
+    int iSubItem;
+    UINT uNewState;
+    UINT uOldState;
+    UINT uChanged;
+    POINT ptAction;
+    LPARAM lParam;
+}
+
+alias NM_LISTVIEW TAGNM_LISTVIEW;
+alias NM_LISTVIEW TNMLISTVIEW;
+alias NM_LISTVIEW* PNMLISTVIEW;
+
+struct TVITEMA
+{
+    UINT      mask;
+    HTREEITEM hItem;
+    UINT      state;
+    UINT      stateMask;
+    LPSTR     pszText;
+    int       cchTextMax;
+    int       iImage;
+    int       iSelectedImage;
+    int       cChildren;
+    LPARAM    lParam;
+}
+struct TVITEMW
+{
+    UINT      mask;
+    HTREEITEM hItem;
+    UINT      state;
+    UINT      stateMask;
+    LPWSTR    pszText;
+    int       cchTextMax;
+    int       iImage;
+    int       iSelectedImage;
+    int       cChildren;
+    LPARAM    lParam;
+}
+version(Win32SansUnicode)
+{
+    alias TVITEMA TVITEM;
+}
+else
+{
+    alias TVITEMW TVITEM;
+}
+alias TVITEM* LPTVITEM;
+alias TVITEM* LPTV_ITEM;
+alias TVITEM _TV_ITEM;
+alias TVITEM TTVITEM;
+alias TVITEM TV_ITEM;
+alias TVITEM* PTVITEM;
+
+struct NMTREEVIEW
+{
+    NMHDR hdr;
+    UINT action;
+    TVITEM itemOld;
+    TVITEM itemNew;
+    POINT ptDrag;
+}
+alias NMTREEVIEW* PNMTREEVIEW;
+alias NMTREEVIEW* LPNMTREEVIEW;
+alias NMTREEVIEW  NM_TREEVIEW;
+alias NM_TREEVIEW* LPNM_TREEVIEW;
+alias NM_TREEVIEW _NM_TREEVIEW;
+alias NM_TREEVIEW TNMTREEVIEW;
+
+struct NM_UPDOWNW
+{
+    NMHDR hdr;
+    int iPos;
+    int iDelta;
+}
+
+alias NM_UPDOWNW _NM_UPDOWN;
+alias NM_UPDOWNW TNMUPDOWN;
+alias NM_UPDOWNW* PNMUPDOWN;
+alias NM_UPDOWNW NMUPDOWN;
+
+struct NONCLIENTMETRICSA {
+    int cbSize;
+    int iBorderWidth;
+    int iScrollWidth;
+    int iScrollHeight;
+    int iCaptionWidth;
+    int iCaptionHeight;
+    LOGFONTA lfCaptionFont;
+    int iSmCaptionWidth;
+    int iSmCaptionHeight;
+    LOGFONTA lfSmCaptionFont;
+    int iMenuWidth;
+    int iMenuHeight;
+    LOGFONTA lfMenuFont;
+    LOGFONTA lfStatusFont;
+    LOGFONTA lfMessageFont;
+}
+struct NONCLIENTMETRICSW {
+    int cbSize;
+    int iBorderWidth;
+    int iScrollWidth;
+    int iScrollHeight;
+    int iCaptionWidth;
+    int iCaptionHeight;
+    LOGFONTW lfCaptionFont;
+    int iSmCaptionWidth;
+    int iSmCaptionHeight;
+    LOGFONTW lfSmCaptionFont;
+    int iMenuWidth;
+    int iMenuHeight;
+    LOGFONTW lfMenuFont;
+    LOGFONTW lfStatusFont;
+    LOGFONTW lfMessageFont;
+}
+version(Win32SansUnicode)
+{
+    alias NONCLIENTMETRICSA NONCLIENTMETRICS;
+}
+else
+{
+    alias NONCLIENTMETRICSW NONCLIENTMETRICS;
+}
+alias NONCLIENTMETRICS* LPNONCLIENTMETRICS;
+alias NONCLIENTMETRICS TAGNONCLIENTMETRICS;
+alias NONCLIENTMETRICS TNONCLIENTMETRICS;
+alias NONCLIENTMETRICS* PNONCLIENTMETRICS;
+
+struct SERVICE_ADDRESS
+{
+    DWORD dwAddressType;
+    DWORD dwAddressFlags;
+    DWORD dwAddressLength;
+    DWORD dwPrincipalLength;
+    ubyte* lpAddress;
+    ubyte* lpPrincipal;
+}
+
+alias SERVICE_ADDRESS _SERVICE_ADDRESS;
+alias SERVICE_ADDRESS TSERVICEADDRESS;
+alias SERVICE_ADDRESS* PSERVICEADDRESS;
+
+struct SERVICE_ADDRESSES
+{
+    DWORD dwAddressCount;
+    SERVICE_ADDRESS[1 + 0] Addresses;
+}
+
+alias SERVICE_ADDRESSES* LPSERVICE_ADDRESSES;
+alias SERVICE_ADDRESSES _SERVICE_ADDRESSES;
+alias SERVICE_ADDRESSES TSERVICEADDRESSES;
+alias SERVICE_ADDRESSES* PSERVICEADDRESSES;
+
+align(1) struct __GUID
+{
+
+    union
+    {
+        struct
+        {
+            uint Data1;
+            ushort Data2;
+            ushort Data3;
+            ubyte[1 + 7] Data4;
+        }
+        struct
+        {
+            uint D1;
+            ushort D2;
+            ushort D3;
+            ubyte[1 + 7] D4;
+        }
+    }
+}
+
+alias __GUID* LPGUID;
+alias __GUID _GUID;
+alias __GUID GUID;
+alias __GUID TGUID;
+alias __GUID* PGUID;
+alias __GUID __CLSID;
+alias __CLSID* LPCLSID;
+alias __CLSID TCLSID;
+alias __CLSID* PCLSID;
+
+struct SERVICE_INFO
+{
+    LPGUID lpServiceType;
+    LPTSTR lpServiceName;
+    LPTSTR lpComment;
+    LPTSTR lpLocale;
+    DWORD dwDisplayHint;
+    DWORD dwVersion;
+    DWORD dwTime;
+    LPTSTR lpMachineName;
+    LPSERVICE_ADDRESSES lpServiceAddress;
+    BLOB ServiceSpecificInfo;
+}
+
+alias SERVICE_INFO _SERVICE_INFO;
+alias SERVICE_INFO TSERVICEINFO;
+alias SERVICE_INFO* PSERVICEINFO;
+
+struct NS_SERVICE_INFO
+{
+    DWORD dwNameSpace;
+    SERVICE_INFO ServiceInfo;
+}
+
+alias NS_SERVICE_INFO _NS_SERVICE_INFO;
+alias NS_SERVICE_INFO TNSSERVICEINFO;
+alias NS_SERVICE_INFO* PNSSERVICEINFO;
+
+struct NUMBERFMT
+{
+    UINT NumDigits;
+    UINT LeadingZero;
+    UINT Grouping;
+    LPTSTR lpDecimalSep;
+    LPTSTR lpThousandSep;
+    UINT NegativeOrder;
+}
+
+alias NUMBERFMT _NUMBERFMT;
+alias NUMBERFMT TNUMBERFMT;
+alias NUMBERFMT* PNUMBERFMT;
+
+struct OFSTRUCT
+{
+    ubyte cBytes;
+    ubyte fFixedDisk;
+    ushort nErrCode;
+    ushort Reserved1;
+    ushort Reserved2;
+    char[1 + OFS_MAXPATHNAME-1] szPathName;
+}
+
+alias OFSTRUCT* LPOFSTRUCT;
+alias OFSTRUCT _OFSTRUCT;
+alias OFSTRUCT TOFSTRUCT;
+alias OFSTRUCT* POFSTRUCT;
+
+struct OPENFILENAME
+{
+    DWORD lStructSize;
+    HWND hwndOwner;
+    HINST hInstance;
+    LPCTSTR lpstrFilter;
+    LPTSTR lpstrCustomFilter;
+    DWORD nMaxCustFilter;
+    DWORD nFilterIndex;
+    LPTSTR lpstrFile;
+    DWORD nMaxFile;
+    LPTSTR lpstrFileTitle;
+    DWORD nMaxFileTitle;
+    LPCTSTR lpstrInitialDir;
+    LPCTSTR lpstrTitle;
+    DWORD Flags;
+    ushort nFileOffset;
+    ushort nFileExtension;
+    LPCTSTR lpstrDefExt;
+    DWORD lCustData;
+    LPOFNHOOKPROC lpfnHook;
+    LPCTSTR lpTemplateName;
+}
+
+alias OPENFILENAME* LPOPENFILENAME;
+alias OPENFILENAME TOPENFILENAME;
+alias OPENFILENAME* POPENFILENAME;
+alias OPENFILENAME TAGOFN;
+alias OPENFILENAME TOFN;
+alias OPENFILENAME* POFN;
+
+struct OFNOTIFY
+{
+    NMHDR hdr;
+    LPOPENFILENAME lpOFN;
+    LPTSTR pszFile;
+}
+
+alias OFNOTIFY* LPOFNOTIFY;
+alias OFNOTIFY _OFNOTIFY;
+alias OFNOTIFY TOFNOTIFY;
+alias OFNOTIFY* POFNOTIFY;
+
+struct OSVERSIONINFOA
+{
+    DWORD dwOSVersionInfoSize;
+    DWORD dwMajorVersion;
+    DWORD dwMinorVersion;
+    DWORD dwBuildNumber;
+    DWORD dwPlatformId;
+    CHAR szCSDVersion[ 128 ];
+}
+alias OSVERSIONINFOA* POSVERSIONINFOA, LPOSVERSIONINFOA;
+
+struct OSVERSIONINFOW
+{
+    DWORD dwOSVersionInfoSize;
+    DWORD dwMajorVersion;
+    DWORD dwMinorVersion;
+    DWORD dwBuildNumber;
+    DWORD dwPlatformId;
+    WCHAR szCSDVersion[ 128 ];
+}
+alias OSVERSIONINFOW* POSVERSIONINFOW, LPOSVERSIONINFOW;
+version(Win32SansUnicode)
+{
+    alias OSVERSIONINFOA OSVERSIONINFO;
+}
+else
+{
+    alias OSVERSIONINFOW OSVERSIONINFO;
+}
+alias OSVERSIONINFO* LPOSVERSIONINFO;
+alias OSVERSIONINFO _OSVERSIONINFO;
+alias OSVERSIONINFO TOSVERSIONINFO;
+alias OSVERSIONINFO* POSVERSIONINFO;
+
+struct TEXTMETRICA {
+    align(1):
+    LONG tmHeight;
+    LONG tmAscent;
+    LONG tmDescent;
+    LONG tmInternalLeading;
+    LONG tmExternalLeading;
+    LONG tmAveCharWidth;
+    LONG tmMaxCharWidth;
+    LONG tmWeight;
+    LONG tmOverhang;
+    LONG tmDigitizedAspectX;
+    LONG tmDigitizedAspectY;
+
+    BYTE tmFirstChar;
+    BYTE tmLastChar;
+    BYTE tmDefaultChar;
+    BYTE tmBreakChar;
+
+    BYTE tmItalic;
+    BYTE tmUnderlined;
+    BYTE tmStruckOut;
+    BYTE tmPitchAndFamily;
+    BYTE tmCharSet;
+}
+struct TEXTMETRICW {
+    align(1):
+    LONG tmHeight;
+    LONG tmAscent;
+    LONG tmDescent;
+    LONG tmInternalLeading;
+    LONG tmExternalLeading;
+    LONG tmAveCharWidth;
+    LONG tmMaxCharWidth;
+    LONG tmWeight;
+    LONG tmOverhang;
+    LONG tmDigitizedAspectX;
+    LONG tmDigitizedAspectY;
+
+    WCHAR tmFirstChar;
+    WCHAR tmLastChar;
+    WCHAR tmDefaultChar;
+    WCHAR tmBreakChar;
+
+    BYTE tmItalic;
+    BYTE tmUnderlined;
+    BYTE tmStruckOut;
+    BYTE tmPitchAndFamily;
+    BYTE tmCharSet;
+}
+version(Win32SansUnicode)
+{
+    alias TEXTMETRICA TEXTMETRIC;
+}
+else
+{
+    alias TEXTMETRICW TEXTMETRIC;
+}
+alias TEXTMETRIC* LPTEXTMETRIC;
+alias TEXTMETRIC TAGTEXTMETRIC;
+alias TEXTMETRIC TTEXTMETRIC;
+alias TEXTMETRIC* PTEXTMETRIC;
+
+struct OUTLINETEXTMETRICA
+{
+    UINT       otmSize;
+    TEXTMETRICA otmTextMetrics;
+    BYTE       otmFiller;
+    PANOSE     otmPanoseNumber;
+    UINT       otmfsSelection;
+    UINT       otmfsType;
+    int        otmsCharSlopeRise;
+    int        otmsCharSlopeRun;
+    int        otmItalicAngle;
+    UINT       otmEMSquare;
+    int        otmAscent;
+    int        otmDescent;
+    UINT       otmLineGap;
+    UINT       otmsCapEmHeight;
+    UINT       otmsXHeight;
+    RECT       otmrcFontBox;
+    int        otmMacAscent;
+    int        otmMacDescent;
+    UINT       otmMacLineGap;
+    UINT       otmusMinimumPPEM;
+    POINT      otmptSubscriptSize;
+    POINT      otmptSubscriptOffset;
+    POINT      otmptSuperscriptSize;
+    POINT      otmptSuperscriptOffset;
+    UINT       otmsStrikeoutSize;
+    int        otmsStrikeoutPosition;
+    int        otmsUnderscoreSize;
+    int        otmsUnderscorePosition;
+    PSTR       otmpFamilyName;
+    PSTR       otmpFaceName;
+    PSTR       otmpStyleName;
+    PSTR       otmpFullName;
+}
+struct OUTLINETEXTMETRICW
+{
+    UINT       otmSize;
+    TEXTMETRICW otmTextMetrics;
+    BYTE       otmFiller;
+    PANOSE     otmPanoseNumber;
+    UINT       otmfsSelection;
+    UINT       otmfsType;
+    int        otmsCharSlopeRise;
+    int        otmsCharSlopeRun;
+    int        otmItalicAngle;
+    UINT       otmEMSquare;
+    int        otmAscent;
+    int        otmDescent;
+    UINT       otmLineGap;
+    UINT       otmsCapEmHeight;
+    UINT       otmsXHeight;
+    RECT       otmrcFontBox;
+    int        otmMacAscent;
+    int        otmMacDescent;
+    UINT       otmMacLineGap;
+    UINT       otmusMinimumPPEM;
+    POINT      otmptSubscriptSize;
+    POINT      otmptSubscriptOffset;
+    POINT      otmptSuperscriptSize;
+    POINT      otmptSuperscriptOffset;
+    UINT       otmsStrikeoutSize;
+    int        otmsStrikeoutPosition;
+    int        otmsUnderscoreSize;
+    int        otmsUnderscorePosition;
+    PSTR       otmpFamilyName;
+    PSTR       otmpFaceName;
+    PSTR       otmpStyleName;
+    PSTR       otmpFullName;
+}
+
+alias OUTLINETEXTMETRIC* LPOUTLINETEXTMETRIC;
+alias OUTLINETEXTMETRIC _OUTLINETEXTMETRIC;
+alias OUTLINETEXTMETRIC TOUTLINETEXTMETRIC;
+alias OUTLINETEXTMETRIC* POUTLINETEXTMETRIC;
+version(Win32SansUnicode)
+{
+    alias OUTLINETEXTMETRICA OUTLINETEXTMETRIC;
+    alias OUTLINETEXTMETRICA* LPOUTLINETEXTMETRICA;
+}
+else
+{
+    alias OUTLINETEXTMETRICW OUTLINETEXTMETRIC;
+    alias OUTLINETEXTMETRICW* LPOUTLINETEXTMETRICW;
+}
+
+struct OVERLAPPED
+{
+    DWORD Internal;
+    DWORD InternalHigh;
+    DWORD Offset;
+    DWORD OffsetHigh;
+    HANDLE hEvent;
+}
+
+alias OVERLAPPED* LPOVERLAPPED;
+alias OVERLAPPED _OVERLAPPED;
+alias OVERLAPPED TOVERLAPPED;
+alias OVERLAPPED* POVERLAPPED;
+
+struct TPAGESETUPDLG
+{
+    DWORD lStructSize;
+    HWND hwndOwner;
+    HGLOBAL hDevMode;
+    HGLOBAL hDevNames;
+    DWORD Flags;
+    POINT ptPaperSize;
+    RECT rtMinMargin;
+    RECT rtMargin;
+    HINST hInstance;
+    LPARAM lCustData;
+    LPPAGESETUPHOOK lpfnPageSetupHook;
+    LPPAGEPAINTHOOK lpfnPagePaintHook;
+    LPCTSTR lpPageSetupTemplateName;
+    HGLOBAL hPageSetupTemplate;
+}
+
+alias TPAGESETUPDLG* LPPAGESETUPDLG;
+alias TPAGESETUPDLG* PPAGESETUPDLG;
+alias TPAGESETUPDLG TAGPSD;
+alias TPAGESETUPDLG TPSD;
+alias TPAGESETUPDLG* PPSD;
+
+struct PAINTSTRUCT
+{
+    HDC hdc;
+    WINBOOL fErase;
+    RECT rcPaint;
+    WINBOOL fRestore;
+    WINBOOL fIncUpdate;
+    ubyte[1 + 31] rgbReserved;
+}
+
+alias PAINTSTRUCT* LPPAINTSTRUCT;
+alias PAINTSTRUCT TAGPAINTSTRUCT;
+alias PAINTSTRUCT TPAINTSTRUCT;
+alias PAINTSTRUCT* PPAINTSTRUCT;
+
+struct PARAFORMAT
+{
+    UINT cbSize;
+    DWORD dwMask;
+    ushort wNumbering;
+    ushort wReserved;
+    LONG dxStartIndent;
+    LONG dxRightIndent;
+    LONG dxOffset;
+    ushort wAlignment;
+    SHORT cTabCount;
+    LONG[1 + MAX_TAB_STOPS-1] rgxTabs;
+}
+
+alias PARAFORMAT _PARAFORMAT;
+alias PARAFORMAT TPARAFORMAT;
+alias PARAFORMAT* PPARAFORMAT;
+
+struct PERF_COUNTER_BLOCK
+{
+    DWORD ByteLength;
+}
+
+alias PERF_COUNTER_BLOCK _PERF_COUNTER_BLOCK;
+alias PERF_COUNTER_BLOCK TPERFCOUNTERBLOCK;
+alias PERF_COUNTER_BLOCK* PPERFCOUNTERBLOCK;
+
+struct PERF_COUNTER_DEFINITION
+{
+    DWORD ByteLength;
+    DWORD CounterNameTitleIndex;
+    LPWSTR CounterNameTitle;
+    DWORD CounterHelpTitleIndex;
+    LPWSTR CounterHelpTitle;
+    DWORD DefaultScale;
+    DWORD DetailLevel;
+    DWORD CounterType;
+    DWORD CounterSize;
+    DWORD CounterOffset;
+}
+
+alias PERF_COUNTER_DEFINITION _PERF_COUNTER_DEFINITION;
+alias PERF_COUNTER_DEFINITION TPERFCOUNTERDEFINITION;
+alias PERF_COUNTER_DEFINITION* PPERFCOUNTERDEFINITION;
+
+struct PERF_DATA_BLOCK
+{
+    WCHAR[1 + 3] Signature;
+    DWORD LittleEndian;
+    DWORD Version;
+    DWORD Revision;
+    DWORD TotalByteLength;
+    DWORD HeaderLength;
+    DWORD NumObjectTypes;
+    DWORD DefaultObject;
+    SYSTEMTIME SystemTime;
+    LARGE_INTEGER PerfTime;
+    LARGE_INTEGER PerfFreq;
+    LARGE_INTEGER PerfTime100nSec;
+    DWORD SystemNameLength;
+    DWORD SystemNameOffset;
+}
+
+alias PERF_DATA_BLOCK _PERF_DATA_BLOCK;
+alias PERF_DATA_BLOCK TPERFDATABLOCK;
+alias PERF_DATA_BLOCK* PPERFDATABLOCK;
+
+struct PERF_INSTANCE_DEFINITION
+{
+    DWORD ByteLength;
+    DWORD ParentObjectTitleIndex;
+    DWORD ParentObjectInstance;
+    DWORD UniqueID;
+    DWORD NameOffset;
+    DWORD NameLength;
+}
+
+alias PERF_INSTANCE_DEFINITION _PERF_INSTANCE_DEFINITION;
+alias PERF_INSTANCE_DEFINITION TPERFINSTANCEDEFINITION;
+alias PERF_INSTANCE_DEFINITION PPERFINSTANCEDEFINITION;
+
+struct PERF_OBJECT_TYPE
+{
+    DWORD TotalByteLength;
+    DWORD DefinitionLength;
+    DWORD HeaderLength;
+    DWORD ObjectNameTitleIndex;
+    LPWSTR ObjectNameTitle;
+    DWORD ObjectHelpTitleIndex;
+    LPWSTR ObjectHelpTitle;
+    DWORD DetailLevel;
+    DWORD NumCounters;
+    DWORD DefaultCounter;
+    DWORD NumInstances;
+    DWORD CodePage;
+    LARGE_INTEGER PerfTime;
+    LARGE_INTEGER PerfFreq;
+}
+
+alias PERF_OBJECT_TYPE _PERF_OBJECT_TYPE;
+alias PERF_OBJECT_TYPE TPERFOBJECTTYPE;
+alias PERF_OBJECT_TYPE* PPERFOBJECTTYPE;
+
+struct POLYTEXT
+{
+    int x;
+    int y;
+    UINT n;
+    LPCTSTR lpstr;
+    UINT uiFlags;
+    RECT rcl;
+    int* pdx;
+}
+
+alias POLYTEXT _POLYTEXT;
+alias POLYTEXT TPOLYTEXT;
+alias POLYTEXT* PPOLYTEXT;
+
+struct PORT_INFO_1
+{
+    LPTSTR pName;
+}
+
+alias PORT_INFO_1 _PORT_INFO_1;
+alias PORT_INFO_1 TPORTINFO1;
+alias PORT_INFO_1* PPORTINFO1;
+
+struct PORT_INFO_2
+{
+    LPSTR pPortName;
+    LPSTR pMonitorName;
+    LPSTR pDescription;
+    DWORD fPortType;
+    DWORD Reserved;
+}
+
+alias PORT_INFO_2 _PORT_INFO_2;
+alias PORT_INFO_2 TPORTINFO2;
+alias PORT_INFO_2* PPORTINFO2;
+
+struct PREVENT_MEDIA_REMOVAL
+{
+    ubyte PreventMediaRemoval;
+}
+
+alias PREVENT_MEDIA_REMOVAL _PREVENT_MEDIA_REMOVAL;
+alias PREVENT_MEDIA_REMOVAL TPREVENTMEDIAREMOVAL;
+alias PREVENT_MEDIA_REMOVAL* PPREVENTMEDIAREMOVAL;
+
+align(1) struct TPRINTDLG
+{
+    DWORD lStructSize;
+    HWND hwndOwner;
+    HANDLE hDevMode;
+    HANDLE hDevNames;
+    HDC hDC;
+    DWORD Flags;
+    ushort nFromPage;
+    ushort nToPage;
+    ushort nMinPage;
+    ushort nMaxPage;
+    ushort nCopies;
+    HINST hInstance;
+    DWORD lCustData;
+    LPPRINTHOOKPROC lpfnPrintHook;
+    LPSETUPHOOKPROC lpfnSetupHook;
+    LPCTSTR lpPrintTemplateName;
+    LPCTSTR lpSetupTemplateName;
+    HANDLE hPrintTemplate;
+    HANDLE hSetupTemplate;
+}
+
+alias TPRINTDLG* LPPRINTDLG;
+alias TPRINTDLG* PPRINTDLG;
+alias TPRINTDLG TAGPD;
+alias TPRINTDLG TPD;
+alias TPRINTDLG* PPD;
+
+struct PRINTER_DEFAULTS
+{
+    LPTSTR pDatatype;
+    LPDEVMODE pDevMode;
+    ACCESS_MASK DesiredAccess;
+}
+
+alias PRINTER_DEFAULTS _PRINTER_DEFAULTS;
+alias PRINTER_DEFAULTS TPRINTERDEFAULTS;
+alias PRINTER_DEFAULTS* PPRINTERDEFAULTS;
+
+struct PRINTER_INFO_1
+{
+    DWORD Flags;
+    LPTSTR pDescription;
+    LPTSTR pName;
+    LPTSTR pComment;
+}
+
+alias PRINTER_INFO_1* LPPRINTER_INFO_1;
+alias PRINTER_INFO_1* PPRINTER_INFO_1;
+alias PRINTER_INFO_1 _PRINTER_INFO_1;
+alias PRINTER_INFO_1 TPRINTERINFO1;
+alias PRINTER_INFO_1* PPRINTERINFO1;
+
+struct PRINTER_INFO_2
+{
+    LPTSTR pServerName;
+    LPTSTR pPrinterName;
+    LPTSTR pShareName;
+    LPTSTR pPortName;
+    LPTSTR pDriverName;
+    LPTSTR pComment;
+    LPTSTR pLocation;
+    LPDEVMODE pDevMode;
+    LPTSTR pSepFile;
+    LPTSTR pPrintProcessor;
+    LPTSTR pDatatype;
+    LPTSTR pParameters;
+    PSECURITY_DESCRIPTOR pSecurityDescriptor;
+    DWORD Attributes;
+    DWORD Priority;
+    DWORD DefaultPriority;
+    DWORD StartTime;
+    DWORD UntilTime;
+    DWORD Status;
+    DWORD cJobs;
+    DWORD AveragePPM;
+}
+
+alias PRINTER_INFO_2 _PRINTER_INFO_2;
+alias PRINTER_INFO_2 TPRINTERINFO2;
+alias PRINTER_INFO_2* PPRINTERINFO2;
+
+struct PRINTER_INFO_3
+{
+    PSECURITY_DESCRIPTOR pSecurityDescriptor;
+}
+
+alias PRINTER_INFO_3 _PRINTER_INFO_3;
+alias PRINTER_INFO_3 TPRINTERINFO3;
+alias PRINTER_INFO_3* PPRINTERINFO3;
+
+struct PRINTER_INFO_4
+{
+    LPTSTR pPrinterName;
+    LPTSTR pServerName;
+    DWORD Attributes;
+}
+
+alias PRINTER_INFO_4 _PRINTER_INFO_4;
+alias PRINTER_INFO_4 TPRINTERINFO4;
+alias PRINTER_INFO_4* PPRINTERINFO4;
+
+struct PRINTER_INFO_5
+{
+    LPTSTR pPrinterName;
+    LPTSTR pPortName;
+    DWORD Attributes;
+    DWORD DeviceNotSelectedTimeout;
+    DWORD TransmissionRetryTimeout;
+}
+
+alias PRINTER_INFO_5 _PRINTER_INFO_5;
+alias PRINTER_INFO_5 TPRINTERINFO5;
+alias PRINTER_INFO_5* PPRINTERINFO5;
+
+struct PRINTER_NOTIFY_INFO_DATA
+{
+    ushort _Type;
+    ushort Field;
+    DWORD Reserved;
+    DWORD Id;
+
+    union
+    {
+        struct
+        {
+            DWORD[1 + 1] adwData;
+        }
+        struct
+        {
+            DWORD cbBuf;
+            LPVOID pBuf;
+        }
+    }
+}
+
+alias PRINTER_NOTIFY_INFO_DATA _PRINTER_NOTIFY_INFO_DATA;
+alias PRINTER_NOTIFY_INFO_DATA TPRINTERNOTIFYINFODATA;
+alias PRINTER_NOTIFY_INFO_DATA* PPRINTERNOTIFYINFODATA;
+
+struct PRINTER_NOTIFY_INFO
+{
+    DWORD Version;
+    DWORD Flags;
+    DWORD Count;
+    PRINTER_NOTIFY_INFO_DATA[1 + 0] aData;
+}
+
+alias PRINTER_NOTIFY_INFO _PRINTER_NOTIFY_INFO;
+alias PRINTER_NOTIFY_INFO TPRINTERNOTIFYINFO;
+alias PRINTER_NOTIFY_INFO* PPRINTERNOTIFYINFO;
+
+struct PRINTER_NOTIFY_OPTIONS_TYPE
+{
+    ushort _Type;
+    ushort Reserved0;
+    DWORD Reserved1;
+    DWORD Reserved2;
+    DWORD Count;
+    PWORD pFields;
+}
+
+alias PRINTER_NOTIFY_OPTIONS_TYPE* PPRINTER_NOTIFY_OPTIONS_TYPE;
+alias PRINTER_NOTIFY_OPTIONS_TYPE _PRINTER_NOTIFY_OPTIONS_TYPE;
+alias PRINTER_NOTIFY_OPTIONS_TYPE TPRINTERNOTIFYOPTIONSTYPE;
+alias PRINTER_NOTIFY_OPTIONS_TYPE* PPRINTERNOTIFYOPTIONSTYPE;
+
+struct PRINTER_NOTIFY_OPTIONS
+{
+    DWORD Version;
+    DWORD Flags;
+    DWORD Count;
+    PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
+}
+
+alias PRINTER_NOTIFY_OPTIONS _PRINTER_NOTIFY_OPTIONS;
+alias PRINTER_NOTIFY_OPTIONS TPRINTERNOTIFYOPTIONS;
+alias PRINTER_NOTIFY_OPTIONS* PPRINTERNOTIFYOPTIONS;
+
+struct PRINTPROCESSOR_INFO_1
+{
+    LPTSTR pName;
+}
+
+alias PRINTPROCESSOR_INFO_1 _PRINTPROCESSOR_INFO_1;
+alias PRINTPROCESSOR_INFO_1 TPRINTPROCESSORINFO1;
+alias PRINTPROCESSOR_INFO_1* PPRINTPROCESSORINFO1;
+
+struct PRIVILEGE_SET
+{
+    DWORD PrivilegeCount;
+    DWORD Control;
+    LUID_AND_ATTRIBUTES[1 + ANYSIZE_ARRAY-1] Privilege;
+}
+
+alias PRIVILEGE_SET* LPPRIVILEGE_SET;
+alias PRIVILEGE_SET* PPRIVILEGE_SET;
+alias PRIVILEGE_SET _PRIVILEGE_SET;
+alias PRIVILEGE_SET TPRIVILEGESET;
+alias PRIVILEGE_SET* PPRIVILEGESET;
+
+struct PROCESS_HEAPENTRY
+{
+    PVOID lpData;
+    DWORD cbData;
+    ubyte cbOverhead;
+    ubyte iRegionIndex;
+    ushort wFlags;
+    DWORD dwCommittedSize;
+    DWORD dwUnCommittedSize;
+    LPVOID lpFirstBlock;
+    LPVOID lpLastBlock;
+    HANDLE hMem;
+}
+
+alias PROCESS_HEAPENTRY* LPPROCESS_HEAP_ENTRY;
+alias PROCESS_HEAPENTRY _PROCESS_HEAP_ENTRY;
+alias PROCESS_HEAPENTRY TPROCESSHEAPENTRY;
+alias PROCESS_HEAPENTRY* PPROCESSHEAPENTRY;
+
+struct PROCESS_INFORMATION
+{
+    HANDLE hProcess;
+    HANDLE hThread;
+    DWORD dwProcessId;
+    DWORD dwThreadId;
+}
+
+alias PROCESS_INFORMATION* LPPROCESS_INFORMATION;
+alias PROCESS_INFORMATION _PROCESS_INFORMATION;
+alias PROCESS_INFORMATION TPROCESSINFORMATION;
+alias PROCESS_INFORMATION* PPROCESSINFORMATION;
+extern(Windows){alias UINT (*LPFNPSPCALLBACK)(HWND, UINT, LPVOID);}
+alias LPFNPSPCALLBACK TFNPSPCALLBACK;
+
+struct PROPSHEETPAGE_U1
+{
+
+    union
+    {
+        struct
+        {
+            LPCTSTR pszTemplate;
+        }
+        struct
+        {
+            LPCDLGTEMPLATE pResource;
+        }
+    }
+}
+
+
+struct PROPSHEETPAGE_U2
+{
+
+    union
+    {
+        struct
+        {
+            HICON hIcon;
+        }
+        struct
+        {
+            LPCTSTR pszIcon;
+        }
+    }
+}
+
+
+struct PROPSHEETPAGE
+{
+    DWORD dwSize;
+    DWORD dwFlags;
+    HINST hInstance;
+    PROPSHEETPAGE_U1 u1;
+    PROPSHEETPAGE_U2 u2;
+    LPCTSTR pszTitle;
+    DLGPROC pfnDlgProc;
+    LPARAM lParam;
+    LPFNPSPCALLBACK pfnCallback;
+    UINT* pcRefParent;
+}
+
+alias PROPSHEETPAGE* LPPROPSHEETPAGE;
+alias PROPSHEETPAGE* LPCPROPSHEETPAGE;
+alias PROPSHEETPAGE _PROPSHEETPAGE;
+alias PROPSHEETPAGE TPROPSHEETPAGE;
+alias PROPSHEETPAGE* PPROPSHEETPAGE;
+
+struct EMPTYRECORD
+{
+}
+
+alias EMPTYRECORD* HPROPSHEETPAGE;
+
+struct PROPSHEETHEADER_U1
+{
+
+    union
+    {
+        struct
+        {
+            HICON hIcon;
+        }
+        struct
+        {
+            LPCTSTR pszIcon;
+        }
+    }
+}
+
+
+struct PROPSHEETHEADER_U2
+{
+
+    union
+    {
+        struct
+        {
+            UINT nStartPage;
+        }
+        struct
+        {
+            LPCTSTR pStartPage;
+        }
+    }
+}
+
+
+struct PROPSHEETHEADER_U3
+{
+
+    union
+    {
+        struct
+        {
+            LPCPROPSHEETPAGE ppsp;
+        }
+        struct
+        {
+            HPROPSHEETPAGE* phpage;
+        }
+    }
+}
+
+
+struct PROPSHEETHEADER
+{
+    DWORD dwSize;
+    DWORD dwFlags;
+    HWND hwndParent;
+    HINST hInstance;
+    PROPSHEETHEADER_U1 u1;
+    LPCTSTR pszCaption;
+    UINT nPages;
+    PROPSHEETHEADER_U2 u2;
+    PROPSHEETHEADER_U3 u3;
+    PFNPROPSHEETCALLBACK pfnCallback;
+}
+
+alias PROPSHEETHEADER* LPPROPSHEETHEADER;
+alias PROPSHEETHEADER* LPCPROPSHEETHEADER;
+alias PROPSHEETHEADER _PROPSHEETHEADER;
+alias PROPSHEETHEADER TPROPSHEETHEADER;
+alias PROPSHEETHEADER* PPROPSHEETHEADER;
+extern(Windows){
+alias WINBOOL (*LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM);
+alias WINBOOL (*LPFNADDPROPSHEETPAGES)(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM);
+}
+alias LPFNADDPROPSHEETPAGE TFNADDPROPSHEETPAGE;
+alias LPFNADDPROPSHEETPAGES TFNADDPROPSHEETPAGES;
+
+struct PROTOCOL_INFO
+{
+    DWORD dwServiceFlags;
+    INT iAddressFamily;
+    INT iMaxSockAddr;
+    INT iMinSockAddr;
+    INT iSocketType;
+    INT iProtocol;
+    DWORD dwMessageSize;
+    LPTSTR lpProtocol;
+}
+
+alias PROTOCOL_INFO _PROTOCOL_INFO;
+alias PROTOCOL_INFO TPROTOCOLINFO;
+alias PROTOCOL_INFO* PPROTOCOLINFO;
+
+struct PROVIDOR_INFO_1
+{
+    LPTSTR pName;
+    LPTSTR pEnvironment;
+    LPTSTR pDLLName;
+}
+
+alias PROVIDOR_INFO_1 _PROVIDOR_INFO_1;
+alias PROVIDOR_INFO_1 TPROVIDORINFO1;
+alias PROVIDOR_INFO_1* PPROVIDORINFO1;
+
+struct PSHNOTIFY
+{
+    NMHDR hdr;
+    LPARAM lParam;
+}
+
+alias PSHNOTIFY* LPPSHNOTIFY;
+alias PSHNOTIFY _PSHNOTIFY;
+alias PSHNOTIFY TPSHNOTIFY;
+alias PSHNOTIFY* PPSHNOTIFY;
+
+struct PUNCTUATION
+{
+    UINT iSize;
+    LPSTR szPunctuation;
+}
+
+alias PUNCTUATION _PUNCTUATION;
+alias PUNCTUATION TPUNCTUATION;
+alias PUNCTUATION* PPUNCTUATION;
+
+struct QUERY_SERVICE_CONFIG
+{
+    DWORD dwServiceType;
+    DWORD dwStartType;
+    DWORD dwErrorControl;
+    LPTSTR lpBinaryPathName;
+    LPTSTR lpLoadOrderGroup;
+    DWORD dwTagId;
+    LPTSTR lpDependencies;
+    LPTSTR lpServiceStartName;
+    LPTSTR lpDisplayName;
+}
+
+alias QUERY_SERVICE_CONFIG* LPQUERY_SERVICE_CONFIG;
+alias QUERY_SERVICE_CONFIG _QUERY_SERVICE_CONFIG;
+alias QUERY_SERVICE_CONFIG TQUERYSERVICECONFIG;
+alias QUERY_SERVICE_CONFIG* PQUERYSERVICECONFIG;
+
+struct QUERY_SERVICE_LOCK_STATUS
+{
+    DWORD fIsLocked;
+    LPTSTR lpLockOwner;
+    DWORD dwLockDuration;
+}
+
+alias QUERY_SERVICE_LOCK_STATUS* LPQUERY_SERVICE_LOCK_STATUS;
+alias QUERY_SERVICE_LOCK_STATUS _QUERY_SERVICE_LOCK_STATUS;
+alias QUERY_SERVICE_LOCK_STATUS TQUERYSERVICELOCKSTATUS;
+alias QUERY_SERVICE_LOCK_STATUS* PQUERYSERVICELOCKSTATUS;
+
+struct RASAMB
+{
+    DWORD dwSize;
+    DWORD dwError;
+    TCHAR[1 + NETBIOS_NAME_LEN+1-1] szNetBiosError;
+    ubyte bLana;
+}
+
+alias RASAMB _RASAMB;
+alias RASAMB TRASAMB;
+alias RASAMB* PRASAMB;
+
+struct RASCONN
+{
+    DWORD dwSize;
+    HRASCONN hrasconn;
+    TCHAR[1 + RAS_MaxEntryName+1-1] szEntryName;
+    char[1 + RAS_MaxDeviceType+1-1] szDeviceType;
+    char[1 + RAS_MaxDeviceName+1-1] szDeviceName;
+}
+
+alias RASCONN _RASCONN;
+alias RASCONN TRASCONN;
+alias RASCONN* PRASCONN;
+
+struct RASCONNSTATUS
+{
+    DWORD dwSize;
+    RASCONNSTATE rasconnstate;
+    DWORD dwError;
+    TCHAR[1 + RAS_MaxDeviceType+1-1] szDeviceType;
+    TCHAR[1 + RAS_MaxDeviceName+1-1] szDeviceName;
+}
+
+alias RASCONNSTATUS _RASCONNSTATUS;
+alias RASCONNSTATUS TRASCONNSTATUS;
+alias RASCONNSTATUS* PRASCONNSTATUS;
+
+struct RASDIALEXTENSIONS
+{
+    DWORD dwSize;
+    DWORD dwfOptions;
+    HWND hwndParent;
+    DWORD reserved;
+}
+
+alias RASDIALEXTENSIONS _RASDIALEXTENSIONS;
+alias RASDIALEXTENSIONS TRASDIALEXTENSIONS;
+alias RASDIALEXTENSIONS* PRASDIALEXTENSIONS;
+
+struct RASDIALPARAMS
+{
+    DWORD dwSize;
+    TCHAR[1 + RAS_MaxEntryName+1-1] szEntryName;
+    TCHAR[1 + RAS_MaxPhoneNumber+1-1] szPhoneNumber;
+    TCHAR[1 + (RAS_MaxCallbackNumber+1)-1] szCallbackNumber;
+    TCHAR[1 + (UNLEN+1)-1] szUserName;
+    TCHAR[1 + (PWLEN+1)-1] szPassword;
+    TCHAR[1 + (DNLEN+1)-1] szDomain;
+}
+
+alias RASDIALPARAMS _RASDIALPARAMS;
+alias RASDIALPARAMS TRASDIALPARAMS;
+alias RASDIALPARAMS* PRASDIALPARAMS;
+
+struct RASENTRYNAME
+{
+    DWORD dwSize;
+    TCHAR[1 + (RAS_MaxEntryName+1)-1] szEntryName;
+}
+
+alias RASENTRYNAME _RASENTRYNAME;
+alias RASENTRYNAME TRASENTRYNAME;
+alias RASENTRYNAME* PRASENTRYNAME;
+
+struct RASPPPIP
+{
+    DWORD dwSize;
+    DWORD dwError;
+    TCHAR[1 + (RAS_MaxIpAddress+1)-1] szIpAddress;
+}
+
+alias RASPPPIP _RASPPPIP;
+alias RASPPPIP TRASPPPIP;
+alias RASPPPIP* PRASPPPIP;
+
+struct RASPPPIPX
+{
+    DWORD dwSize;
+    DWORD dwError;
+    TCHAR[1 + (RAS_MaxIpxAddress+1)-1] szIpxAddress;
+}
+
+alias RASPPPIPX _RASPPPIPX;
+alias RASPPPIPX TRASPPPIPX;
+alias RASPPPIPX* PRASPPPIPX;
+
+struct RASPPPNBF
+{
+    DWORD dwSize;
+    DWORD dwError;
+    DWORD dwNetBiosError;
+    TCHAR[1 + (NETBIOS_NAME_LEN+1)-1] szNetBiosError;
+    TCHAR[1 + (NETBIOS_NAME_LEN+1)-1] szWorkstationName;
+    ubyte bLana;
+}
+
+alias RASPPPNBF _RASPPPNBF;
+alias RASPPPNBF TRASPPPNBF;
+alias RASPPPNBF* PRASPPPNBF;
+
+struct RASTERIZER_STATUS
+{
+    int nSize;
+    int wFlags;
+    int nLanguageID;
+}
+
+alias RASTERIZER_STATUS* LPRASTERIZER_STATUS;
+alias RASTERIZER_STATUS _RASTERIZER_STATUS;
+alias RASTERIZER_STATUS TRASTERIZERSTATUS;
+alias RASTERIZER_STATUS* PRASTERIZERSTATUS;
+
+struct REASSIGN_BLOCKS
+{
+    ushort Reserved;
+    ushort Count;
+    DWORD[1 + 0] BlockNumber;
+}
+
+alias REASSIGN_BLOCKS _REASSIGN_BLOCKS;
+alias REASSIGN_BLOCKS TREASSIGNBLOCKS;
+alias REASSIGN_BLOCKS* PREASSIGNBLOCKS;
+
+struct REMOTE_NAME_INFO
+{
+    LPTSTR lpUniversalName;
+    LPTSTR lpConnectionName;
+    LPTSTR lpRemainingPath;
+}
+
+alias REMOTE_NAME_INFO _REMOTE_NAME_INFO;
+alias REMOTE_NAME_INFO TREMOTENAMEINFO;
+alias REMOTE_NAME_INFO* PREMOTENAMEINFO;
+
+struct REPASTESPECIAL
+{
+    DWORD dwAspect;
+    DWORD dwParam;
+}
+
+alias REPASTESPECIAL _REPASTESPECIAL;
+alias REPASTESPECIAL TREPASTESPECIAL;
+alias REPASTESPECIAL* PREPASTESPECIAL;
+
+struct REQRESIZE
+{
+    NMHDR nmhdr;
+    RECT rc;
+}
+
+alias REQRESIZE _REQRESIZE;
+alias REQRESIZE TREQRESIZE;
+alias REQRESIZE* PREQRESIZE;
+
+struct RGNDATAHEADER
+{
+    DWORD dwSize;
+    DWORD iType;
+    DWORD nCount;
+    DWORD nRgnSize;
+    RECT rcBound;
+}
+
+alias RGNDATAHEADER _RGNDATAHEADER;
+alias RGNDATAHEADER TRGNDATAHEADER;
+alias RGNDATAHEADER* PRGNDATAHEADER;
+alias RGNDATAHEADER* LPRGNDATAHEADER;
+
+struct RGNDATA
+{
+    RGNDATAHEADER rdh;
+    char[1 + 0] Buffer;
+}
+
+alias RGNDATA* LPRGNDATA;
+alias RGNDATA _RGNDATA;
+alias RGNDATA TRGNDATA;
+alias RGNDATA* PRGNDATA;
+
+struct SCROLLINFO
+{
+    UINT cbSize;
+    UINT fMask;
+    int nMin;
+    int nMax;
+    UINT nPage;
+    int nPos;
+    int nTrackPos;
+}
+
+alias SCROLLINFO* LPSCROLLINFO;
+alias SCROLLINFO* LPCSCROLLINFO;
+alias SCROLLINFO TAGSCROLLINFO;
+alias SCROLLINFO TSCROLLINFO;
+alias SCROLLINFO* PSCROLLINFO;
+
+struct SECURITY_ATTRIBUTES
+{
+    DWORD nLength;
+    LPVOID lpSecurityDescriptor;
+    WINBOOL bInheritHandle;
+}
+
+alias SECURITY_ATTRIBUTES* LPSECURITY_ATTRIBUTES;
+alias SECURITY_ATTRIBUTES _SECURITY_ATTRIBUTES;
+alias SECURITY_ATTRIBUTES TSECURITYATTRIBUTES;
+alias SECURITY_ATTRIBUTES* PSECURITYATTRIBUTES;
+alias DWORD SECURITY_INFORMATION;
+alias SECURITY_INFORMATION* PSECURITY_INFORMATION;
+alias SECURITY_INFORMATION TSECURITYINFORMATION;
+alias SECURITY_INFORMATION* PSECURITYINFORMATION;
+
+struct SELCHANGE
+{
+    NMHDR nmhdr;
+    CHARRANGE chrg;
+    ushort seltyp;
+}
+
+alias SELCHANGE _SELCHANGE;
+alias SELCHANGE TSELCHANGE;
+alias SELCHANGE* PSELCHANGE;
+
+struct SERIALKEYS
+{
+    DWORD cbSize;
+    DWORD dwFlags;
+    LPSTR lpszActivePort;
+    LPSTR lpszPort;
+    DWORD iBaudRate;
+    DWORD iPortState;
+}
+
+alias SERIALKEYS* LPSERIALKEYS;
+alias SERIALKEYS TAGSERIALKEYS;
+alias SERIALKEYS TSERIALKEYS;
+alias SERIALKEYS* PSERIALKEYS;
+
+struct SERVICE_TABLE_ENTRY
+{
+    LPTSTR lpServiceName;
+    LPSERVICE_MAIN_FUNCTION lpServiceProc;
+}
+
+alias SERVICE_TABLE_ENTRY* LPSERVICE_TABLE_ENTRY;
+alias SERVICE_TABLE_ENTRY _SERVICE_TABLE_ENTRY;
+alias SERVICE_TABLE_ENTRY TSERVICETABLEENTRY;
+alias SERVICE_TABLE_ENTRY* PSERVICETABLEENTRY;
+
+struct SERVICE_TYPE_VALUE_ABS
+{
+    DWORD dwNameSpace;
+    DWORD dwValueType;
+    DWORD dwValueSize;
+    LPTSTR lpValueName;
+    PVOID lpValue;
+}
+
+alias SERVICE_TYPE_VALUE_ABS _SERVICE_TYPE_VALUE_ABS;
+alias SERVICE_TYPE_VALUE_ABS TSERVICETYPEVALUEABS;
+alias SERVICE_TYPE_VALUE_ABS* PSERVICETYPEVALUEABS;
+
+struct SERVICE_TYPE_INFO_ABS
+{
+    LPTSTR lpTypeName;
+    DWORD dwValueCount;
+    SERVICE_TYPE_VALUE_ABS[1 + 0] Values;
+}
+
+alias SERVICE_TYPE_INFO_ABS _SERVICE_TYPE_INFO_ABS;
+alias SERVICE_TYPE_INFO_ABS TSERVICETYPEINFOABS;
+alias SERVICE_TYPE_INFO_ABS* PSERVICETYPEINFOABS;
+
+struct SESSION_BUFFER
+{
+    UCHAR lsn;
+    UCHAR state;
+    UCHAR[1 + NCBNAMSZ-1] local_name;
+    UCHAR[1 + NCBNAMSZ-1] remote_name;
+    UCHAR rcvs_outstanding;
+    UCHAR sends_outstanding;
+}
+
+alias SESSION_BUFFER _SESSION_BUFFER;
+alias SESSION_BUFFER TSESSIONBUFFER;
+alias SESSION_BUFFER* PSESSIONBUFFER;
+
+struct SESSION_HEADER
+{
+    UCHAR sess_name;
+    UCHAR num_sess;
+    UCHAR rcv_dg_outstanding;
+    UCHAR rcv_any_outstanding;
+}
+
+alias SESSION_HEADER _SESSION_HEADER;
+alias SESSION_HEADER TSESSIONHEADER;
+alias SESSION_HEADER* PSESSIONHEADER;
+
+struct SET_PARTITION_INFORMATION
+{
+    ubyte PartitionType;
+}
+
+alias SET_PARTITION_INFORMATION _SET_PARTITION_INFORMATION;
+alias SET_PARTITION_INFORMATION TSETPARTITIONINFORMATION;
+alias SET_PARTITION_INFORMATION* PSETPARTITIONINFORMATION;
+alias int SHCONTF;
+enum { SHCONTF_FOLDERS = 32, SHCONTF_NONFOLDERS = 64, SHCONTF_INCLUDEHIDDEN = 128,  };
+alias SHCONTF TAGSHCONTF;
+alias SHCONTF TSHCONTF;
+
+struct SHFILEINFOA
+{
+    HICON hIcon;
+    int iIcon;
+    DWORD dwAttributes;
+    CHAR[MAX_PATH] szDisplayName;
+    CHAR[80] szTypeName;
+}
+struct SHFILEINFOW
+{
+    HICON hIcon;
+    int iIcon;
+    DWORD dwAttributes;
+    WCHAR[MAX_PATH] szDisplayName;
+    WCHAR[80] szTypeName;
+}
+version(Win32SansUnicode)
+{
+    alias SHFILEINFOA SHFILEINFO;
+}
+else
+{
+    alias SHFILEINFOW SHFILEINFO;
+}
+
+alias SHFILEINFO _SHFILEINFO;
+alias SHFILEINFO TSHFILEINFO;
+alias SHFILEINFO* PSHFILEINFO;
+
+alias ushort FILEOP_FLAGS;
+alias FILEOP_FLAGS TFILEOPFLAGS;
+alias FILEOP_FLAGS* PFILEOPFLAGS;
+
+struct SHFILEOPSTRUCT
+{
+    HWND hwnd;
+    UINT wFunc;
+    LPCSTR pFrom;
+    LPCSTR pTo;
+    FILEOP_FLAGS fFlags;
+    WINBOOL fAnyOperationsAborted;
+    LPVOID hNameMappings;
+    LPCSTR lpszProgressTitle;
+}
+
+alias SHFILEOPSTRUCT* LPSHFILEOPSTRUCT;
+alias SHFILEOPSTRUCT _SHFILEOPSTRUCT;
+alias SHFILEOPSTRUCT TSHFILEOPSTRUCT;
+alias SHFILEOPSTRUCT* PSHFILEOPSTRUCT;
+alias int SHGNO;
+enum { SHGDN_NORMAL = 0, SHGDN_INFOLDER = 1, SHGDN_FORPARSING = 0x8000,  };
+alias SHGNO TAGSHGDN;
+alias SHGNO TSHGDN;
+
+struct SHNAMEMAPPING
+{
+    LPSTR pszOldPath;
+    LPSTR pszNewPath;
+    int cchOldPath;
+    int cchNewPath;
+}
+
+alias SHNAMEMAPPING* LPSHNAMEMAPPING;
+alias SHNAMEMAPPING _SHNAMEMAPPING;
+alias SHNAMEMAPPING TSHNAMEMAPPING;
+alias SHNAMEMAPPING* PSHNAMEMAPPING;
+
+struct SID_AND_ATTRIBUTES
+{
+    PSID Sid;
+    DWORD Attributes;
+}
+
+alias SID_AND_ATTRIBUTES _SID_AND_ATTRIBUTES;
+alias SID_AND_ATTRIBUTES TSIDANDATTRIBUTES;
+alias SID_AND_ATTRIBUTES* PSIDANDATTRIBUTES;
+alias SID_AND_ATTRIBUTES[1 + ANYSIZE_ARRAY-1] SID_AND_ATTRIBUTES_ARRAY;
+alias SID_AND_ATTRIBUTES_ARRAY* PSID_AND_ATTRIBUTES_ARRAY;
+alias SID_AND_ATTRIBUTES_ARRAY TSIDANDATTRIBUTESARRAY;
+alias SID_AND_ATTRIBUTES_ARRAY* PSIDANDATTRIBUTESARRAY;
+
+struct SINGLE_LIST_ENTRY
+{
+    _SINGLE_LIST_ENTRY* Next;
+}
+
+alias SINGLE_LIST_ENTRY _SINGLE_LIST_ENTRY;
+alias SINGLE_LIST_ENTRY TSINGLELISTENTRY;
+alias SINGLE_LIST_ENTRY* PSINGLELISTENTRY;
+
+struct SOUNDSENTRY
+{
+    UINT cbSize;
+    DWORD dwFlags;
+    DWORD iFSTextEffect;
+    DWORD iFSTextEffectMSec;
+    DWORD iFSTextEffectColorBits;
+    DWORD iFSGrafEffect;
+    DWORD iFSGrafEffectMSec;
+    DWORD iFSGrafEffectColor;
+    DWORD iWindowsEffect;
+    DWORD iWindowsEffectMSec;
+    LPTSTR lpszWindowsEffectDLL;
+    DWORD iWindowsEffectOrdinal;
+}
+
+alias SOUNDSENTRY* LPSOUNDSENTRY;
+alias SOUNDSENTRY TAGSOUNDSENTRY;
+alias SOUNDSENTRY TSOUNDSENTRY;
+alias SOUNDSENTRY* PSOUNDSENTRY;
+
+struct STARTUPINFO
+{
+    DWORD cb;
+    LPTSTR lpReserved;
+    LPTSTR lpDesktop;
+    LPTSTR lpTitle;
+    DWORD dwX;
+    DWORD dwY;
+    DWORD dwXSize;
+    DWORD dwYSize;
+    DWORD dwXCountChars;
+    DWORD dwYCountChars;
+    DWORD dwFillAttribute;
+    DWORD dwFlags;
+    ushort wShowWindow;
+    ushort cbReserved2;
+    LPBYTE lpReserved2;
+    HANDLE hStdInput;
+    HANDLE hStdOutput;
+    HANDLE hStdError;
+}
+
+alias STARTUPINFO* LPSTARTUPINFO;
+alias STARTUPINFO _STARTUPINFO;
+alias STARTUPINFO TSTARTUPINFO;
+alias STARTUPINFO* PSTARTUPINFO;
+
+struct STICKYKEYS
+{
+    DWORD cbSize;
+    DWORD dwFlags;
+}
+
+alias STICKYKEYS* LPSTICKYKEYS;
+alias STICKYKEYS TAGSTICKYKEYS;
+alias STICKYKEYS TSTICKYKEYS;
+alias STICKYKEYS* PSTICKYKEYS;
+
+struct STRRET
+{
+    UINT uType;
+
+    union
+    {
+        struct
+        {
+            LPWSTR pOleStr;
+        }
+        struct
+        {
+            UINT uOffset;
+        }
+        struct
+        {
+            char[1 + MAX_PATH-1] cStr;
+        }
+    }
+}
+
+alias STRRET* LPSTRRET;
+alias STRRET _STRRET;
+alias STRRET TSTRRET;
+alias STRRET* PSTRRET;
+
+struct STYLEBUF
+{
+    DWORD dwStyle;
+    char[1 + 31] szDescription;
+}
+
+alias STYLEBUF* LPSTYLEBUF;
+alias STYLEBUF _TAGSTYLEBUF;
+alias STYLEBUF TSTYLEBUF;
+alias STYLEBUF* PSTYLEBUF;
+
+struct STYLESTRUCT
+{
+    DWORD styleOld;
+    DWORD styleNew;
+}
+
+alias STYLESTRUCT* LPSTYLESTRUCT;
+alias STYLESTRUCT TAGSTYLESTRUCT;
+alias STYLESTRUCT TSTYLESTRUCT;
+alias STYLESTRUCT* PSTYLESTRUCT;
+
+struct SYSTEM_AUDIT_ACE
+{
+    ACE_HEADER Header;
+    ACCESS_MASK Mask;
+    DWORD SidStart;
+}
+
+alias SYSTEM_AUDIT_ACE _SYSTEM_AUDIT_ACE;
+alias SYSTEM_AUDIT_ACE TSYSTEMAUDITACE;
+alias SYSTEM_AUDIT_ACE* PSYSTEMAUDITACE;
+
+struct SYSTEM_INFO_U
+{
+
+    union
+    {
+        struct
+        {
+            DWORD dwOemId;
+        }
+        struct
+        {
+            ushort wProcessorArchitecture;
+            ushort wReserved;
+        }
+    }
+}
+
+
+struct SYSTEM_INFO
+{
+    SYSTEM_INFO_U u;
+    DWORD dwPageSize;
+    LPVOID lpMinimumApplicationAddress;
+    LPVOID lpMaximumApplicationAddress;
+    DWORD dwActiveProcessorMask;
+    DWORD dwNumberOfProcessors;
+    DWORD dwProcessorType;
+    DWORD dwAllocationGranularity;
+    ushort wProcessorLevel;
+    ushort wProcessorRevision;
+}
+
+alias SYSTEM_INFO* LPSYSTEM_INFO;
+alias SYSTEM_INFO _SYSTEM_INFO;
+alias SYSTEM_INFO TSYSTEMINFO;
+alias SYSTEM_INFO* PSYSTEMINFO;
+
+struct SYSTEM_POWER_STATUS
+{
+    ubyte ACLineStatus;
+    ubyte BatteryFlag;
+    ubyte BatteryLifePercent;
+    ubyte Reserved1;
+    DWORD BatteryLifeTime;
+    DWORD BatteryFullLifeTime;
+}
+
+alias SYSTEM_POWER_STATUS _SYSTEM_POWER_STATUS;
+alias SYSTEM_POWER_STATUS TSYSTEMPOWERSTATUS;
+alias SYSTEM_POWER_STATUS* PSYSTEMPOWERSTATUS;
+alias EMPTYRECORD* LPSYSTEM_POWER_STATUS;
+
+struct TAPE_ERASE
+{
+    ULONG _Type;
+}
+
+alias TAPE_ERASE _TAPE_ERASE;
+alias TAPE_ERASE TTAPEERASE;
+alias TAPE_ERASE* PTAPEERASE;
+
+struct TAPE_GET_DRIVE_PARAMETERS
+{
+    ubyte ECC;
+    ubyte Compression;
+    ubyte DataPadding;
+    ubyte ReportSetmarks;
+    ULONG DefaultBlockSize;
+    ULONG MaximumBlockSize;
+    ULONG MinimumBlockSize;
+    ULONG MaximumPartitionCount;
+    ULONG FeaturesLow;
+    ULONG FeaturesHigh;
+    ULONG EOTWarningZoneSize;
+}
+
+alias TAPE_GET_DRIVE_PARAMETERS _TAPE_GET_DRIVE_PARAMETERS;
+alias TAPE_GET_DRIVE_PARAMETERS TTAPEGETDRIVEPARAMETERS;
+alias TAPE_GET_DRIVE_PARAMETERS* PTAPEGETDRIVEPARAMETERS;
+
+struct TAPE_GET_MEDIA_PARAMETERS
+{
+    LARGE_INTEGER Capacity;
+    LARGE_INTEGER Remaining;
+    DWORD BlockSize;
+    DWORD PartitionCount;
+    ubyte WriteProtected;
+}
+
+alias TAPE_GET_MEDIA_PARAMETERS _TAPE_GET_MEDIA_PARAMETERS;
+alias TAPE_GET_MEDIA_PARAMETERS TTAPEGETMEDIAPARAMETERS;
+alias TAPE_GET_MEDIA_PARAMETERS* PTAPEGETMEDIAPARAMETERS;
+
+struct TAPE_GET_POSITION
+{
+    ULONG _Type;
+    ULONG Partition;
+    ULONG OffsetLow;
+    ULONG OffsetHigh;
+}
+
+alias TAPE_GET_POSITION _TAPE_GET_POSITION;
+alias TAPE_GET_POSITION TTAPEGETPOSITION;
+alias TAPE_GET_POSITION* PTAPEGETPOSITION;
+
+struct TAPE_PREPARE
+{
+    ULONG Operation;
+}
+
+alias TAPE_PREPARE _TAPE_PREPARE;
+alias TAPE_PREPARE TTAPEPREPARE;
+alias TAPE_PREPARE* PTAPEPREPARE;
+
+struct TAPE_SET_DRIVE_PARAMETERS
+{
+    ubyte ECC;
+    ubyte Compression;
+    ubyte DataPadding;
+    ubyte ReportSetmarks;
+    ULONG EOTWarningZoneSize;
+}
+
+alias TAPE_SET_DRIVE_PARAMETERS _TAPE_SET_DRIVE_PARAMETERS;
+alias TAPE_SET_DRIVE_PARAMETERS TTAPESETDRIVEPARAMETERS;
+alias TAPE_SET_DRIVE_PARAMETERS* PTAPESETDRIVEPARAMETERS;
+
+struct TAPE_SET_MEDIA_PARAMETERS
+{
+    ULONG BlockSize;
+}
+
+alias TAPE_SET_MEDIA_PARAMETERS _TAPE_SET_MEDIA_PARAMETERS;
+alias TAPE_SET_MEDIA_PARAMETERS TTAPESETMEDIAPARAMETERS;
+alias TAPE_SET_MEDIA_PARAMETERS* PTAPESETMEDIAPARAMETERS;
+
+struct TAPE_SET_POSITION
+{
+    ULONG Method;
+    ULONG Partition;
+    ULONG OffsetLow;
+    ULONG OffsetHigh;
+}
+
+alias TAPE_SET_POSITION _TAPE_SET_POSITION;
+alias TAPE_SET_POSITION TTAPESETPOSITION;
+alias TAPE_SET_POSITION* PTAPESETPOSITION;
+
+struct TAPE_WRITE_MARKS
+{
+    ULONG _Type;
+    ULONG Count;
+}
+
+alias TAPE_WRITE_MARKS _TAPE_WRITE_MARKS;
+alias TAPE_WRITE_MARKS TTAPEWRITEMARKS;
+alias TAPE_WRITE_MARKS* PTAPEWRITEMARKS;
+
+struct TBADDBITMAP
+{
+    HINST hInst;
+    UINT nID;
+}
+
+alias TBADDBITMAP* LPTBADDBITMAP;
+alias TBADDBITMAP TTBADDBITMAP;
+alias TBADDBITMAP* PTBADDBITMAP;
+
+struct TBBUTTON {
+    align(2):
+    int     iBitmap;
+    int     idCommand;
+    BYTE    fsState;
+    BYTE    fsStyle;
+//#ifdef _WIN64
+//    BYTE     bReserved[6]     // padding for alignment
+//#elif defined(_WIN32)
+//    BYTE     bReserved[2]     // padding for alignment
+//#endif
+    DWORD_PTR   dwData;
+    INT_PTR     iString;
+}
+
+alias TBBUTTON* LPTBBUTTON;
+alias TBBUTTON* LPCTBBUTTON;
+alias TBBUTTON _TBBUTTON;
+alias TBBUTTON TTBBUTTON;
+alias TBBUTTON* PTBBUTTON;
+
+struct TBNOTIFY
+{
+    NMHDR hdr;
+    int iItem;
+    TBBUTTON tbButton;
+    int cchText;
+    LPTSTR pszText;
+}
+
+alias TBNOTIFY* LPTBNOTIFY;
+alias TBNOTIFY TTBNOTIFY;
+alias TBNOTIFY* PTBNOTIFY;
+
+struct TBSAVEPARAMS
+{
+    HKEY hkr;
+    LPCTSTR pszSubKey;
+    LPCTSTR pszValueName;
+}
+
+alias TBSAVEPARAMS TTBSAVEPARAMS;
+alias TBSAVEPARAMS* PTBSAVEPARAMS;
+
+struct TC_HITTESTINFO
+{
+    POINT pt;
+    UINT flags;
+}
+
+alias TC_HITTESTINFO TCHITTESTINFO;
+alias TC_HITTESTINFO _TC_HITTESTINFO;
+alias TC_HITTESTINFO TTCHITTESTINFO;
+alias TC_HITTESTINFO* PTCHITTESTINFO;
+
+struct TC_ITEM
+{
+    UINT mask;
+    UINT lpReserved1;
+    UINT lpReserved2;
+    LPTSTR pszText;
+    int cchTextMax;
+    int iImage;
+    LPARAM lParam;
+}
+
+alias TC_ITEM _TC_ITEM;
+alias TC_ITEM TTCITEM;
+alias TC_ITEM* PTCITEM;
+
+struct TC_ITEMHEADER
+{
+    UINT mask;
+    UINT lpReserved1;
+    UINT lpReserved2;
+    LPTSTR pszText;
+    int cchTextMax;
+    int iImage;
+}
+
+alias TC_ITEMHEADER _TC_ITEMHEADER;
+alias TC_ITEMHEADER TTCITEMHEADER;
+alias TC_ITEMHEADER* PTCITEMHEADER;
+
+struct TC_KEYDOWN
+{
+    NMHDR hdr;
+    ushort wVKey;
+    UINT flags;
+}
+
+alias TC_KEYDOWN _TC_KEYDOWN;
+alias TC_KEYDOWN TTCKEYDOWN;
+alias TC_KEYDOWN* PTCKEYDOWN;
+
+struct TEXTRANGE
+{
+    CHARRANGE chrg;
+    LPSTR lpstrText;
+}
+
+alias TEXTRANGE _TEXTRANGE;
+alias TEXTRANGE TTEXTRANGE;
+alias TEXTRANGE* PTEXTRANGE;
+
+struct TIME_ZONE_INFORMATION
+{
+    LONG Bias;
+    WCHAR[1 + 31] StandardName;
+    SYSTEMTIME StandardDate;
+    LONG StandardBias;
+    WCHAR[1 + 31] DaylightName;
+    SYSTEMTIME DaylightDate;
+    LONG DaylightBias;
+}
+
+alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION;
+alias TIME_ZONE_INFORMATION _TIME_ZONE_INFORMATION;
+alias TIME_ZONE_INFORMATION TTIMEZONEINFORMATION;
+alias TIME_ZONE_INFORMATION* PTIMEZONEINFORMATION;
+
+struct TOGGLEKEYS
+{
+    DWORD cbSize;
+    DWORD dwFlags;
+}
+
+alias TOGGLEKEYS TAGTOGGLEKEYS;
+alias TOGGLEKEYS TTOGGLEKEYS;
+alias TOGGLEKEYS* PTOGGLEKEYS;
+
+struct TOKEN_SOURCE
+{
+    char[1 + 7] SourceName;
+    LUID SourceIdentifier;
+}
+
+alias TOKEN_SOURCE _TOKEN_SOURCE;
+alias TOKEN_SOURCE TTOKENSOURCE;
+alias TOKEN_SOURCE* PTOKENSOURCE;
+
+struct TOKEN_CONTROL
+{
+    LUID TokenId;
+    LUID AuthenticationId;
+    LUID ModifiedId;
+    TOKEN_SOURCE TokenSource;
+}
+
+alias TOKEN_CONTROL _TOKEN_CONTROL;
+alias TOKEN_CONTROL TTOKENCONTROL;
+alias TOKEN_CONTROL* PTOKENCONTROL;
+
+struct TOKEN_DEFAULT_DACL
+{
+    PACL DefaultDacl;
+}
+
+alias TOKEN_DEFAULT_DACL _TOKEN_DEFAULT_DACL;
+alias TOKEN_DEFAULT_DACL TTOKENDEFAULTDACL;
+alias TOKEN_DEFAULT_DACL* PTOKENDEFAULTDACL;
+
+struct TOKEN_GROUPS
+{
+    DWORD GroupCount;
+    SID_AND_ATTRIBUTES[1 + ANYSIZE_ARRAY-1] Groups;
+}
+
+alias TOKEN_GROUPS* PTOKEN_GROUPS;
+alias TOKEN_GROUPS* LPTOKEN_GROUPS;
+alias TOKEN_GROUPS _TOKEN_GROUPS;
+alias TOKEN_GROUPS TTOKENGROUPS;
+alias TOKEN_GROUPS* PTOKENGROUPS;
+
+struct TOKEN_OWNER
+{
+    PSID Owner;
+}
+
+alias TOKEN_OWNER _TOKEN_OWNER;
+alias TOKEN_OWNER TTOKENOWNER;
+alias TOKEN_OWNER* PTOKENOWNER;
+
+struct TOKEN_PRIMARY_GROUP
+{
+    PSID PrimaryGroup;
+}
+
+alias TOKEN_PRIMARY_GROUP _TOKEN_PRIMARY_GROUP;
+alias TOKEN_PRIMARY_GROUP TTOKENPRIMARYGROUP;
+alias TOKEN_PRIMARY_GROUP* PTOKENPRIMARYGROUP;
+
+struct TOKEN_PRIVILEGES
+{
+    DWORD PrivilegeCount;
+    LUID_AND_ATTRIBUTES[1 + ANYSIZE_ARRAY-1] Privileges;
+}
+
+alias TOKEN_PRIVILEGES* PTOKEN_PRIVILEGES;
+alias TOKEN_PRIVILEGES* LPTOKEN_PRIVILEGES;
+alias TOKEN_PRIVILEGES _TOKEN_PRIVILEGES;
+alias TOKEN_PRIVILEGES TTOKENPRIVILEGES;
+alias TOKEN_PRIVILEGES* PTOKENPRIVILEGES;
+
+struct TOKEN_STATISTICS
+{
+    LUID TokenId;
+    LUID AuthenticationId;
+    LARGE_INTEGER ExpirationTime;
+    TOKEN_TYPE TokenType;
+    SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+    DWORD DynamicCharged;
+    DWORD DynamicAvailable;
+    DWORD GroupCount;
+    DWORD PrivilegeCount;
+    LUID ModifiedId;
+}
+
+alias TOKEN_STATISTICS _TOKEN_STATISTICS;
+alias TOKEN_STATISTICS TTOKENSTATISTICS;
+alias TOKEN_STATISTICS* PTOKENSTATISTICS;
+
+struct TOKEN_USER
+{
+    SID_AND_ATTRIBUTES User;
+}
+
+alias TOKEN_USER _TOKEN_USER;
+alias TOKEN_USER TTOKENUSER;
+alias TOKEN_USER* PTOKENUSER;
+
+struct TOOLINFOA
+{
+    UINT cbSize;
+    UINT uFlags;
+    HWND hwnd;
+    UINT uId;
+    RECT rect;
+    HINST hinst;
+    LPSTR lpszText;
+}
+struct TOOLINFOW
+{
+    UINT cbSize;
+    UINT uFlags;
+    HWND hwnd;
+    UINT uId;
+    RECT rect;
+    HINST hinst;
+    LPWSTR lpszText;
+}
+version(Win32SansUnicode)
+{
+    alias TOOLINFOA TOOLINFO;
+}
+else
+{
+    alias TOOLINFOW TOOLINFO;
+}
+alias TOOLINFO* LPTOOLINFO;
+alias TOOLINFO TTOOLINFO;
+alias TOOLINFO* PTOOLINFO;
+
+struct TOOLTIPTEXTA
+{
+    NMHDR hdr;
+    LPSTR lpszText;
+    CHAR[80] szText;
+    HINST hinst;
+    UINT uFlags;
+}
+struct TOOLTIPTEXTW
+{
+    NMHDR hdr;
+    LPWSTR lpszText;
+    WCHAR[80] szText;
+    HINST hinst;
+    UINT uFlags;
+}
+version(Win32SansUnicode)
+{
+    alias TOOLTIPTEXTA TOOLTIPTEXT;
+}
+else
+{
+    alias TOOLTIPTEXTW TOOLTIPTEXT;
+}
+alias TOOLTIPTEXT* LPTOOLTIPTEXT;
+alias TOOLTIPTEXT TTOOLTIPTEXT;
+alias TOOLTIPTEXT* PTOOLTIPTEXT;
+
+struct TPMPARAMS
+{
+    UINT cbSize;
+    RECT rcExclude;
+}
+
+alias TPMPARAMS* LPTPMPARAMS;
+alias TPMPARAMS TAGTPMPARAMS;
+alias TPMPARAMS TTPMPARAMS;
+alias TPMPARAMS* PTPMPARAMS;
+
+struct TRANSMIT_FILE_BUFFERS
+{
+    PVOID Head;
+    DWORD HeadLength;
+    PVOID Tail;
+    DWORD TailLength;
+}
+
+alias TRANSMIT_FILE_BUFFERS _TRANSMIT_FILE_BUFFERS;
+alias TRANSMIT_FILE_BUFFERS TTRANSMITFILEBUFFERS;
+alias TRANSMIT_FILE_BUFFERS* PTRANSMITFILEBUFFERS;
+
+struct TTHITTESTINFO
+{
+    HWND hwnd;
+    POINT pt;
+    TOOLINFO ti;
+}
+
+alias TTHITTESTINFO* LPHITTESTINFO;
+alias TTHITTESTINFO _TT_HITTESTINFO;
+alias TTHITTESTINFO TTTHITTESTINFO;
+alias TTHITTESTINFO* PTTHITTESTINFO;
+
+struct TTPOLYCURVE
+{
+    ushort wType;
+    ushort cpfx;
+    POINTFX[1 + 0] apfx;
+}
+
+alias TTPOLYCURVE* LPTTPOLYCURVE;
+alias TTPOLYCURVE TAGTTPOLYCURVE;
+alias TTPOLYCURVE TTTPOLYCURVE;
+alias TTPOLYCURVE* PTTPOLYCURVE;
+
+struct TTPOLYGONHEADER
+{
+    DWORD cb;
+    DWORD dwType;
+    POINTFX pfxStart;
+}
+
+alias TTPOLYGONHEADER* LPTTPOLYGONHEADER;
+alias TTPOLYGONHEADER _TTPOLYGONHEADER;
+alias TTPOLYGONHEADER TTTPOLYGONHEADER;
+alias TTPOLYGONHEADER* PTTPOLYGONHEADER;
+
+struct TV_DISPINFO
+{
+    NMHDR hdr;
+    TV_ITEM item;
+}
+
+alias TV_DISPINFO _TV_DISPINFO;
+alias TV_DISPINFO TTVDISPINFO;
+alias TV_DISPINFO* PTVDISPINFO;
+
+struct TV_HITTESTINFO
+{
+    POINT pt;
+    UINT flags;
+    HTREEITEM hItem;
+}
+
+alias TV_HITTESTINFO* LPTV_HITTESTINFO;
+alias TV_HITTESTINFO _TVHITTESTINFO;
+alias TV_HITTESTINFO TTVHITTESTINFO;
+alias TV_HITTESTINFO* PTVHITTESTINFO;
+
+struct TVINSERTSTRUCTA
+{
+    HTREEITEM hParent;
+    HTREEITEM hInsertAfter;
+    TVITEMA item;
+}
+struct TVINSERTSTRUCTW
+{
+    HTREEITEM hParent;
+    HTREEITEM hInsertAfter;
+    TVITEMW item;
+}
+version(Win32SansUnicode)
+{
+    alias TVINSERTSTRUCTA TVINSERTSTRUCT;
+}
+else
+{
+    alias TVINSERTSTRUCTW TVINSERTSTRUCT;
+}
+
+alias TVINSERTSTRUCT  TV_INSERTSTRUCT;
+alias TVINSERTSTRUCT* LPTV_INSERTSTRUCT;
+alias TVINSERTSTRUCT _TV_INSERTSTRUCT;
+alias TVINSERTSTRUCT TTVINSERTSTRUCT;
+alias TVINSERTSTRUCT* PTVINSERTSTRUCT;
+
+struct TV_KEYDOWN
+{
+    NMHDR hdr;
+    ushort wVKey;
+    UINT flags;
+}
+
+alias TV_KEYDOWN _TV_KEYDOWN;
+alias TV_KEYDOWN TTVKEYDOWN;
+alias TV_KEYDOWN* PTVKEYDOWN;
+
+struct TV_SORTCB
+{
+    HTREEITEM hParent;
+    PFNTVCOMPARE lpfnCompare;
+    LPARAM lParam;
+}
+
+alias TV_SORTCB* LPTV_SORTCB;
+alias TV_SORTCB _TV_SORTCB;
+alias TV_SORTCB TTVSORTCB;
+alias TV_SORTCB* PTVSORTCB;
+
+struct UDACCEL
+{
+    UINT nSec;
+    UINT nInc;
+}
+
+alias UDACCEL TUDACCEL;
+alias UDACCEL* PUDACCEL;
+
+union ULARGE_INTEGER
+{
+    struct
+    {
+        DWORD LowPart;
+        DWORD HighPart;
+    };
+    struct u
+    {
+        DWORD LowPart;
+        DWORD HighPart;
+    };
+    DWORDLONG QuadPart;
+}
+alias ULARGE_INTEGER* PULARGE_INTEGER;
+alias ULARGE_INTEGER _ULARGE_INTEGER;
+alias ULARGE_INTEGER TULARGEINTEGER;
+alias ULARGE_INTEGER* PULARGEINTEGER;
+
+struct UNIVERSAL_NAME_INFO
+{
+    LPTSTR lpUniversalName;
+}
+
+alias UNIVERSAL_NAME_INFO _UNIVERSAL_NAME_INFO;
+alias UNIVERSAL_NAME_INFO TUNIVERSALNAMEINFO;
+alias UNIVERSAL_NAME_INFO* PUNIVERSALNAMEINFO;
+
+struct USEROBJECTFLAGS
+{
+    WINBOOL fInherit;
+    WINBOOL fReserved;
+    DWORD dwFlags;
+}
+
+alias USEROBJECTFLAGS TAGUSEROBJECTFLAGS;
+alias USEROBJECTFLAGS TUSEROBJECTFLAGS;
+alias USEROBJECTFLAGS* PUSEROBJECTFLAGS;
+
+struct VALENT
+{
+    LPTSTR ve_valuename;
+    DWORD ve_valuelen;
+    DWORD ve_valueptr;
+    DWORD ve_type;
+}
+
+alias VALENT TVALENT;
+alias VALENT* PVALENT;
+alias VALENT VALUE_ENT;
+alias VALENT TVALUE_ENT;
+alias VALENT* PVALUE_ENT;
+
+struct VERIFY_INFORMATION
+{
+    LARGE_INTEGER StartingOffset;
+    DWORD Length;
+}
+
+alias VERIFY_INFORMATION _VERIFY_INFORMATION;
+alias VERIFY_INFORMATION TVERIFYINFORMATION;
+alias VERIFY_INFORMATION* PVERIFYINFORMATION;
+
+struct VS_FIXEDFILEINFO
+{
+    DWORD dwSignature;
+    DWORD dwStrucVersion;
+    DWORD dwFileVersionMS;
+    DWORD dwFileVersionLS;
+    DWORD dwProductVersionMS;
+    DWORD dwProductVersionLS;
+    DWORD dwFileFlagsMask;
+    DWORD dwFileFlags;
+    DWORD dwFileOS;
+    DWORD dwFileType;
+    DWORD dwFileSubtype;
+    DWORD dwFileDateMS;
+    DWORD dwFileDateLS;
+}
+
+alias VS_FIXEDFILEINFO _VS_FIXEDFILEINFO;
+alias VS_FIXEDFILEINFO TVSFIXEDFILEINFO;
+alias VS_FIXEDFILEINFO* PVSFIXEDFILEINFO;
+
+struct WIN32_FIND_DATA
+{
+    DWORD dwFileAttributes;
+    FILETIME ftCreationTime;
+    FILETIME ftLastAccessTime;
+    FILETIME ftLastWriteTime;
+    DWORD nFileSizeHigh;
+    DWORD nFileSizeLow;
+    DWORD dwReserved0;
+    DWORD dwReserved1;
+    TCHAR[1 + MAX_PATH-1] cFileName;
+    TCHAR[1 + 13] cAlternateFileName;
+}
+
+alias WIN32_FIND_DATA* LPWIN32_FIND_DATA;
+alias WIN32_FIND_DATA* PWIN32_FIND_DATA;
+alias WIN32_FIND_DATA _WIN32_FIND_DATA;
+alias WIN32_FIND_DATA TWIN32FINDDATA;
+alias WIN32_FIND_DATA TWIN32FINDDATAA;
+alias WIN32_FIND_DATA* PWIN32FINDDATA;
+
+struct WIN32_FIND_DATAW {
+    DWORD dwFileAttributes;
+    FILETIME ftCreationTime;
+    FILETIME ftLastAccessTime;
+    FILETIME ftLastWriteTime;
+    DWORD nFileSizeHigh;
+    DWORD nFileSizeLow;
+    DWORD dwReserved0;
+    DWORD dwReserved1;
+    WCHAR  cFileName[MAX_PATH];
+    WCHAR  cAlternateFileName[14];
+}
+
+alias WIN32_FIND_DATAW* LPWIN32_FIND_DATAW;
+alias WIN32_FIND_DATAW* PWIN32_FIND_DATAW;
+
+struct WIN32_FILE_ATTRIBUTE_DATA {
+  DWORD dwFileAttributes;
+  FILETIME ftCreationTime;
+  FILETIME ftLastAccessTime;
+  FILETIME ftLastWriteTime;
+  DWORD nFileSizeHigh;
+  DWORD nFileSizeLow;
+}
+
+enum {
+    GetFileInfoLevelStandard,
+    GetFileInfoLevelMax
+}
+
+struct WIN32_STREAM_ID
+{
+    DWORD dwStreamId;
+    DWORD dwStreamAttributes;
+    LARGE_INTEGER Size;
+    DWORD dwStreamNameSize;
+    WCHAR* cStreamName;
+}
+
+alias WIN32_STREAM_ID _WIN32_STREAM_ID;
+alias WIN32_STREAM_ID TWIN32STREAMID;
+alias WIN32_STREAM_ID* PWIN32STREAMID;
+
+struct WINDOWPLACEMENT
+{
+    UINT length;
+    UINT flags;
+    UINT showCmd;
+    POINT ptMinPosition;
+    POINT ptMaxPosition;
+    RECT rcNormalPosition;
+}
+
+alias WINDOWPLACEMENT _WINDOWPLACEMENT;
+alias WINDOWPLACEMENT TWINDOWPLACEMENT;
+alias WINDOWPLACEMENT* PWINDOWPLACEMENT;
+
+struct WNDCLASSA
+{
+    UINT style;
+    WNDPROC lpfnWndProc;
+    int cbClsExtra;
+    int cbWndExtra;
+    HANDLE hInstance;
+    HICON hIcon;
+    HCURSOR hCursor;
+    HBRUSH hbrBackground;
+    LPCTSTR lpszMenuName;
+    LPCTSTR lpszClassName;
+}
+
+alias WNDCLASSA* PWNDCLASSA, LPWNDCLASSA;
+
+struct WNDCLASSW
+{
+    UINT        style;
+    WNDPROC     lpfnWndProc;
+    int         cbClsExtra;
+    int         cbWndExtra;
+    HINSTANCE   hInstance;
+    HICON       hIcon;
+    HCURSOR     hCursor;
+    HBRUSH      hbrBackground;
+    LPCWSTR     lpszMenuName;
+    LPCWSTR     lpszClassName;
+}
+
+alias WNDCLASSW* PWNDCLASSW, LPWNDCLASSW;
+
+version(Win32SansUnicode)
+{
+    alias WNDCLASSA WNDCLASS;
+}
+else
+{
+    alias WNDCLASSW WNDCLASS;
+}
+alias WNDCLASS* LPWNDCLASS;
+alias WNDCLASS _WNDCLASS;
+alias WNDCLASS TWNDCLASS;
+alias WNDCLASS WNDCLASS_T;
+alias WNDCLASS* PWNDCLASS;
+
+struct WNDCLASSEX
+{
+    UINT cbSize;
+    UINT style;
+    WNDPROC lpfnWndProc;
+    int cbClsExtra;
+    int cbWndExtra;
+    HANDLE hInstance;
+    HICON hIcon;
+    HCURSOR hCursor;
+    HBRUSH hbrBackground;
+    LPCTSTR lpszMenuName;
+    LPCTSTR lpszClassName;
+    HANDLE hIconSm;
+}
+
+alias WNDCLASSEX* LPWNDCLASSEX;
+alias WNDCLASSEX _WNDCLASSEX;
+alias WNDCLASSEX TWNDCLASSEX;
+alias WNDCLASSEX TWNDCLASSEXA;
+alias WNDCLASSEX* PWNDCLASSEX;
+
+struct CONNECTDLGSTRUCT
+{
+    DWORD cbStructure;
+    HWND hwndOwner;
+    LPNETRESOURCE lpConnRes;
+    DWORD dwFlags;
+    DWORD dwDevNum;
+}
+
+alias CONNECTDLGSTRUCT* LPCONNECTDLGSTRUCT;
+alias CONNECTDLGSTRUCT _CONNECTDLGSTRUCT;
+alias CONNECTDLGSTRUCT TCONNECTDLGSTRUCT;
+alias CONNECTDLGSTRUCT* PCONNECTDLGSTRUCT;
+
+struct DISCDLGSTRUCT
+{
+    DWORD cbStructure;
+    HWND hwndOwner;
+    LPTSTR lpLocalName;
+    LPTSTR lpRemoteName;
+    DWORD dwFlags;
+}
+
+alias DISCDLGSTRUCT* LPDISCDLGSTRUCT;
+alias DISCDLGSTRUCT _DISCDLGSTRUCT;
+alias DISCDLGSTRUCT TDISCDLGSTRUCT;
+alias DISCDLGSTRUCT TDISCDLGSTRUCTA;
+alias DISCDLGSTRUCT* PDISCDLGSTRUCT;
+
+struct NETINFOSTRUCT
+{
+    DWORD cbStructure;
+    DWORD dwProviderVersion;
+    DWORD dwStatus;
+    DWORD dwCharacteristics;
+    DWORD dwHandle;
+    ushort wNetType;
+    DWORD dwPrinters;
+    DWORD dwDrives;
+}
+
+alias NETINFOSTRUCT* LPNETINFOSTRUCT;
+alias NETINFOSTRUCT _NETINFOSTRUCT;
+alias NETINFOSTRUCT TNETINFOSTRUCT;
+alias NETINFOSTRUCT* PNETINFOSTRUCT;
+
+struct NETCONNECTINFOSTRUCT
+{
+    DWORD cbStructure;
+    DWORD dwFlags;
+    DWORD dwSpeed;
+    DWORD dwDelay;
+    DWORD dwOptDataSize;
+}
+
+alias NETCONNECTINFOSTRUCT* LPNETCONNECTINFOSTRUCT;
+alias NETCONNECTINFOSTRUCT _NETCONNECTINFOSTRUCT;
+alias NETCONNECTINFOSTRUCT TNETCONNECTINFOSTRUCT;
+alias NETCONNECTINFOSTRUCT* PNETCONNECTINFOSTRUCT;
+extern(Windows){
+alias int (*ENUMMETAFILEPROC)(HDC, HANDLETABLE, METARECORD, int, LPARAM);
+alias int (*ENHMETAFILEPROC)(HDC, HANDLETABLE, ENHMETARECORD, int, LPARAM);
+alias int (*ENUMFONTSPROC)(LPLOGFONT, LPTEXTMETRIC, DWORD, LPARAM);
+alias int (*FONTENUMPROC)(ENUMLOGFONT*, NEWTEXTMETRIC*, int, LPARAM);
+alias int (*FONTENUMEXPROC)(ENUMLOGFONTEX*, NEWTEXTMETRICEX*, int, LPARAM);
+alias void (*LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD, DWORD);
+}
+
+struct POINTFLOAT
+{
+    FLOAT x;
+    FLOAT y;
+}
+
+alias POINTFLOAT _POINTFLOAT;
+alias POINTFLOAT TPOINTFLOAT;
+alias POINTFLOAT* PPOINTFLOAT;
+
+struct GLYPHMETRICSFLOAT
+{
+    FLOAT gmfBlackBoxX;
+    FLOAT gmfBlackBoxY;
+    POINTFLOAT gmfptGlyphOrigin;
+    FLOAT gmfCellIncX;
+    FLOAT gmfCellIncY;
+}
+
+alias GLYPHMETRICSFLOAT* LPGLYPHMETRICSFLOAT;
+alias GLYPHMETRICSFLOAT _GLYPHMETRICSFLOAT;
+alias GLYPHMETRICSFLOAT TGLYPHMETRICSFLOAT;
+alias GLYPHMETRICSFLOAT* PGLYPHMETRICSFLOAT;
+
+struct LAYERPLANEDESCRIPTOR
+{
+    ushort nSize;
+    ushort nVersion;
+    DWORD dwFlags;
+    ubyte iPixelType;
+    ubyte cColorBits;
+    ubyte cRedBits;
+    ubyte cRedShift;
+    ubyte cGreenBits;
+    ubyte cGreenShift;
+    ubyte cBlueBits;
+    ubyte cBlueShift;
+    ubyte cAlphaBits;
+    ubyte cAlphaShift;
+    ubyte cAccumBits;
+    ubyte cAccumRedBits;
+    ubyte cAccumGreenBits;
+    ubyte cAccumBlueBits;
+    ubyte cAccumAlphaBits;
+    ubyte cDepthBits;
+    ubyte cStencilBits;
+    ubyte cAuxBuffers;
+    ubyte iLayerPlane;
+    ubyte bReserved;
+    COLORREF crTransparent;
+}
+
+alias LAYERPLANEDESCRIPTOR* LPLAYERPLANEDESCRIPTOR;
+alias LAYERPLANEDESCRIPTOR TAGLAYERPLANEDESCRIPTOR;
+alias LAYERPLANEDESCRIPTOR TLAYERPLANEDESCRIPTOR;
+alias LAYERPLANEDESCRIPTOR* PLAYERPLANEDESCRIPTOR;
+
+struct PIXELFORMATDESCRIPTOR
+{
+    ushort nSize;
+    ushort nVersion;
+    DWORD dwFlags;
+    ubyte iPixelType;
+    ubyte cColorBits;
+    ubyte cRedBits;
+    ubyte cRedShift;
+    ubyte cGreenBits;
+    ubyte cGreenShift;
+    ubyte cBlueBits;
+    ubyte cBlueShift;
+    ubyte cAlphaBits;
+    ubyte cAlphaShift;
+    ubyte cAccumBits;
+    ubyte cAccumRedBits;
+    ubyte cAccumGreenBits;
+    ubyte cAccumBlueBits;
+    ubyte cAccumAlphaBits;
+    ubyte cDepthBits;
+    ubyte cStencilBits;
+    ubyte cAuxBuffers;
+    ubyte iLayerType;
+    ubyte bReserved;
+    DWORD dwLayerMask;
+    DWORD dwVisibleMask;
+    DWORD dwDamageMask;
+}
+
+alias PIXELFORMATDESCRIPTOR* LPPIXELFORMATDESCRIPTOR;
+alias PIXELFORMATDESCRIPTOR TAGPIXELFORMATDESCRIPTOR;
+alias PIXELFORMATDESCRIPTOR TPIXELFORMATDESCRIPTOR;
+alias PIXELFORMATDESCRIPTOR* PPIXELFORMATDESCRIPTOR;
+
+struct USER_INFO_2
+{
+    LPWSTR usri2_name;
+    LPWSTR usri2_password;
+    DWORD usri2_password_age;
+    DWORD usri2_priv;
+    LPWSTR usri2_home_dir;
+    LPWSTR usri2_comment;
+    DWORD usri2_flags;
+    LPWSTR usri2_script_path;
+    DWORD usri2_auth_flags;
+    LPWSTR usri2_full_name;
+    LPWSTR usri2_usr_comment;
+    LPWSTR usri2_parms;
+    LPWSTR usri2_workstations;
+    DWORD usri2_last_logon;
+    DWORD usri2_last_logoff;
+    DWORD usri2_acct_expires;
+    DWORD usri2_max_storage;
+    DWORD usri2_units_per_week;
+    PBYTE usri2_logon_hours;
+    DWORD usri2_bad_pw_count;
+    DWORD usri2_num_logons;
+    LPWSTR usri2_logon_server;
+    DWORD usri2_country_code;
+    DWORD usri2_code_page;
+}
+
+alias USER_INFO_2* PUSER_INFO_2;
+alias USER_INFO_2* LPUSER_INFO_2;
+alias USER_INFO_2 TUSERINFO2;
+alias USER_INFO_2* PUSERINFO2;
+
+struct USER_INFO_0
+{
+    LPWSTR usri0_name;
+}
+
+alias USER_INFO_0* PUSER_INFO_0;
+alias USER_INFO_0* LPUSER_INFO_0;
+alias USER_INFO_0 TUSERINFO0;
+alias USER_INFO_0* PUSERINFO0;
+
+struct USER_INFO_3
+{
+    LPWSTR usri3_name;
+    LPWSTR usri3_password;
+    DWORD usri3_password_age;
+    DWORD usri3_priv;
+    LPWSTR usri3_home_dir;
+    LPWSTR usri3_comment;
+    DWORD usri3_flags;
+    LPWSTR usri3_script_path;
+    DWORD usri3_auth_flags;
+    LPWSTR usri3_full_name;
+    LPWSTR usri3_usr_comment;
+    LPWSTR usri3_parms;
+    LPWSTR usri3_workstations;
+    DWORD usri3_last_logon;
+    DWORD usri3_last_logoff;
+    DWORD usri3_acct_expires;
+    DWORD usri3_max_storage;
+    DWORD usri3_units_per_week;
+    PBYTE usri3_logon_hours;
+    DWORD usri3_bad_pw_count;
+    DWORD usri3_num_logons;
+    LPWSTR usri3_logon_server;
+    DWORD usri3_country_code;
+    DWORD usri3_code_page;
+    DWORD usri3_user_id;
+    DWORD usri3_primary_group_id;
+    LPWSTR usri3_profile;
+    LPWSTR usri3_home_dir_drive;
+    DWORD usri3_password_expired;
+}
+
+alias USER_INFO_3* PUSER_INFO_3;
+alias USER_INFO_3* LPUSER_INFO_3;
+alias USER_INFO_3 TUSERINFO3;
+alias USER_INFO_3* PUSERINFO3;
+
+struct GROUP_INFO_2
+{
+    LPWSTR grpi2_name;
+    LPWSTR grpi2_comment;
+    DWORD grpi2_group_id;
+    DWORD grpi2_attributes;
+}
+
+alias GROUP_INFO_2* PGROUP_INFO_2;
+alias GROUP_INFO_2 TGROUPINFO2;
+alias GROUP_INFO_2* PGROUPINFO2;
+
+struct LOCALGROUP_INFO_0
+{
+    LPWSTR lgrpi0_name;
+}
+
+alias LOCALGROUP_INFO_0* PLOCALGROUP_INFO_0;
+alias LOCALGROUP_INFO_0* LPLOCALGROUP_INFO_0;
+alias LOCALGROUP_INFO_0 TLOCALGROUPINFO0;
+alias LOCALGROUP_INFO_0* PLOCALGROUPINFO0;
+
+struct IMAGE_DOS_HEADER
+{
+    ushort e_magic;
+    ushort e_cblp;
+    ushort e_cp;
+    ushort e_crlc;
+    ushort e_cparhdr;
+    ushort e_minalloc;
+    ushort e_maxalloc;
+    ushort e_ss;
+    ushort e_sp;
+    ushort e_csum;
+    ushort e_ip;
+    ushort e_cs;
+    ushort e_lfarlc;
+    ushort e_ovno;
+    ushort[1 + 3] e_res;
+    ushort e_oemid;
+    ushort e_oeminfo;
+    ushort[1 + 9] e_res2;
+    LONG e_lfanew;
+}
+
+alias IMAGE_DOS_HEADER* PIMAGE_DOS_HEADER;
+alias IMAGE_DOS_HEADER TIMAGEDOSHEADER;
+alias IMAGE_DOS_HEADER* PIMAGEDOSHEADER;
+alias ushort TVARTYPE;
+alias TVARIANT* PVARIANT;
+
+struct TVARIANT
+{
+    TVARTYPE vt;
+    ushort wReserved1;
+    ushort wReserved2;
+    ushort wReserved3;
+
+    union
+    {
+        struct
+        {
+            ubyte bVal;
+        }
+        struct
+        {
+            byte iVal;
+        }
+        struct
+        {
+            int lVal;
+        }
+        struct
+        {
+            float fltVal;
+        }
+        struct
+        {
+            double dblVal;
+        }
+        struct
+        {
+            ushort vbool;
+        }
+        struct
+        {
+            HRESULT scode;
+        }
+        struct
+        {
+            ubyte* pbVal;
+        }
+        struct
+        {
+            byte* piVal;
+        }
+        struct
+        {
+            int* plVal;
+        }
+        struct
+        {
+            float* pfltVal;
+        }
+        struct
+        {
+            double* pdblVal;
+        }
+        struct
+        {
+            ushort* pbool;
+        }
+        struct
+        {
+            HRESULT* pscode;
+        }
+        struct
+        {
+            POINTER byRef;
+        }
+    }
+}
+
+alias TVARIANT VARIANT;
+alias int MMRESULT;
+alias TWAVEFORMATEX* PWAVEFORMATEX;
+
+align(1) struct TWAVEFORMATEX
+{
+    ushort wFormatTag;
+    ushort nChannels;
+    DWORD nSamplesPerSec;
+    DWORD nAvgBytesPerSec;
+    ushort nBlockAlign;
+    ushort wBitsPerSample;
+    ushort cbSize;
+}
+
+alias CRITICAL_SECTION TRTLCRITICALSECTION;
+alias PCRITICAL_SECTION PRTLCRITICALSECTION;
+alias PGUID PIID;
+alias TGUID TIID;
+alias HANDLE THANDLE;
+alias TSMALLRECT* PSMALLRECT;
+alias SMALL_RECT TSMALLRECT;
+alias TCHARINFO* PCHARINFO;
+alias _CHAR_INFO TCHARINFO;
+alias POINTER TFARPROC;
+alias POINTER TFNDLGPROC;
+alias POINTER TFNTHREADSTARTROUTINE;
+
+struct _OBJECT_TYPE_LIST
+{
+    ushort Level;
+    ushort Sbz;
+    PGUID ObjectType;
+}
+
+alias _OBJECT_TYPE_LIST TOBJECTTYPELIST;
+alias TOBJECTTYPELIST* POBJECTTYPELIST;
+alias _OBJECT_TYPE_LIST OBJECT_TYPE_LIST;
+alias DWORD AUDIT_EVENT_TYPE;
+
+align(1) struct _BLENDFUNCTION
+{
+    ubyte BlendOp;
+    ubyte BlendFlags;
+    ubyte SourceConstantAlpha;
+    ubyte AlphaFormat;
+}
+
+alias _BLENDFUNCTION TBLENDFUNCTION;
+alias TBLENDFUNCTION* PBLENDFUNCTION;
+alias _BLENDFUNCTION BLENDFUNCTION;
+
+alias HANDLE HMONITOR;
+
+struct tagMONITORINFOEX
+{
+    DWORD  cbSize;
+    RECT   rcMonitor;
+    RECT   rcWork;
+    DWORD  dwFlags;
+    TCHAR  szDevice[CCHDEVICENAME];
+}
+alias tagMONITORINFOEX MONITORINFOEX;
+alias MONITORINFOEX* LPMONITORINFOEX;
+
+struct tagMONITORINFO
+{
+    DWORD  cbSize;
+    RECT   rcMonitor;
+    RECT   rcWork;
+    DWORD  dwFlags;
+}
+alias tagMONITORINFO MONITORINFO;
+alias MONITORINFO* LPMONITORINFO;
+
+struct WINDOWINFO
+{
+    DWORD cbSize;
+    RECT rcWindow;
+    RECT rcClient;
+    DWORD dwStyle;
+    DWORD dwExStyle;
+    DWORD dwWindowStatus;
+    UINT cxWindowBorders;
+    UINT cyWindowBorders;
+    ATOM atomWindowType;
+    short wCreatorVersion;
+};
+alias WINDOWINFO* PWINDOWINFO;
+alias WINDOWINFO* LPWINDOWINFO;
+
+enum : HRESULT
+{
+    S_OK            = 0x00000000,
+    S_FALSE         = 0x00000001,
+    E_UNEXPECTED    = 0x8000FFFF,
+    E_NOTIMPL       = 0x80004001,
+    E_OUTOFMEMORY   = 0x8007000E,
+    E_INVALIDARG    = 0x80070057,
+    E_NOINTERFACE   = 0x80004002,
+    E_POINTER       = 0x80004003,
+    E_HANDLE        = 0x80070006,
+    E_ABORT         = 0x80004004,
+    E_FAIL          = 0x80004005,
+    E_ACCESSDENIED  = 0x80070005,
+    E_PENDING       = 0x8000000A,
+}
+
+/*
+int CO_E_INIT_TLS = (DWORD)((0x80004006));
+int CO_E_INIT_MEMORY_ALLOCATOR = (DWORD)((0x80004008));
+int CO_E_INIT_CLASS_CACHE = (DWORD)((0x80004009));
+int CO_E_INIT_RPC_CHANNEL = (DWORD)((0x8000400A));
+int CO_E_INIT_TLS_SET_CHANNEL_CONTROL = (DWORD)((0x8000400B));
+int CO_E_INIT_TLS_CHANNEL_CONTROL = (DWORD)((0x8000400C));
+int CO_E_INIT_UNACCEPTED_USER_ALLOCATOR = (DWORD)((0x8000400D));
+int CO_E_INIT_SCM_MUTEX_EXISTS = (DWORD)((0x8000400E));
+int CO_E_INIT_SCM_FILE_MAPPING_EXISTS = (DWORD)((0x8000400F));
+int CO_E_INIT_SCM_MAP_VIEW_OF_FILE = (DWORD)((0x80004010));
+int CO_E_INIT_SCM_EXEC_FAILURE = (DWORD)((0x80004011));
+int CO_E_INIT_ONLY_SINGLE_THREADED = (DWORD)((0x80004012));
+int CO_E_CANT_REMOTE = (DWORD)((0x80004013));
+int CO_E_BAD_SERVER_NAME = (DWORD)((0x80004014));
+int CO_E_WRONG_SERVER_IDENTITY = (DWORD)((0x80004015));
+int CO_E_OLE1DDE_DISABLED = (DWORD)((0x80004016));
+int CO_E_RUNAS_SYNTAX = (DWORD)((0x80004017));
+int CO_E_CREATEPROCESS_FAILURE = (DWORD)((0x80004018));
+int CO_E_RUNAS_CREATEPROCESS_FAILURE = (DWORD)((0x80004019));
+int CO_E_RUNAS_LOGON_FAILURE = (DWORD)((0x8000401A));
+int CO_E_LAUNCH_PERMSSION_DENIED = (DWORD)((0x8000401B));
+int CO_E_START_SERVICE_FAILURE = (DWORD)((0x8000401C));
+int CO_E_REMOTE_COMMUNICATION_FAILURE = (DWORD)((0x8000401D));
+int CO_E_SERVER_START_TIMEOUT = (DWORD)((0x8000401E));
+int CO_E_CLSREG_INCONSISTENT = (DWORD)((0x8000401F));
+int CO_E_IIDREG_INCONSISTENT = (DWORD)((0x80004020));
+int CO_E_NOT_SUPPORTED = (DWORD)((0x80004021));
+int CO_E_FIRST = (DWORD)((0x800401F0));
+int CO_E_LAST = (DWORD)((0x800401FF));
+int CO_S_FIRST = (0x401F0);
+int CO_E_NOTINITIALIZED = (DWORD)((0x800401F0));
+int CO_E_ALREADYINITIALIZED = (DWORD)((0x800401F1));
+int CO_E_CANTDETERMINECLASS = (DWORD)((0x800401F2));
+int CO_E_CLASSSTRING = (DWORD)((0x800401F3));
+int CO_E_IIDSTRING = (DWORD)((0x800401F4));
+int CO_E_APPNOTFOUND = (DWORD)((0x800401F5));
+int CO_E_APPSINGLEUSE = (DWORD)((0x800401F6));
+int CO_E_ERRORINAPP = (DWORD)((0x800401F7));
+int CO_E_DLLNOTFOUND = (DWORD)((0x800401F8));
+int CO_E_ERRORINDLL = (DWORD)((0x800401F9));
+int CO_E_WRONGOSFORAPP = (DWORD)((0x800401FA));
+int CO_E_OBJNOTREG = (DWORD)((0x800401FB));
+int CO_E_OBJISREG = (DWORD)((0x800401FC));
+int CO_E_OBJNOTCONNECTED = (DWORD)((0x800401FD));
+int CO_E_APPDIDNTREG = (DWORD)((0x800401FE));
+int CO_E_RELEASED = (DWORD)((0x800401FF));
+*/
+
+///////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// missing in tango
+//alias TLOGFONTA* LPLOGFONTA;
+//alias TLOGFONTA LOGFONTA;
+//alias char CHAR;
+alias OPENFILENAME OPENFILENAMEW;
+alias OPENFILENAME OPENFILENAMEA;
+//alias WNDCLASS_T   WNDCLASS;
+
+//alias TCLSID *REFCLSID;
+
+//interface IUnknown{}
+//alias IUnknown LPUNKNOWN;
+
+
+struct SCRIPT_DIGITSUBSTITUTE {
+  ushort NationalDigitLanguage;
+  ushort TraditionalDigitLanguage;
+  DWORD DigitSubstitute;
+  DWORD dwReserved;
+}
+
+struct BUTTON_IMAGELIST {
+    HIMAGELIST himl;
+    RECT margin;
+    UINT uAlign;
+}
+
+alias HANDLE HTHEME;
+
+struct NMREBARCHILDSIZE {
+    NMHDR hdr;
+    UINT uBand;
+    UINT wID;
+    RECT rcChild;
+    RECT rcBand;
+}
+const int MAX_LINKID_TEXT = 48;
+const int L_MAX_URL_LENGTH = 2084;
+struct LITEM {
+    UINT mask;
+    int iLink;
+    UINT state;
+    UINT stateMask;
+    WCHAR szID[MAX_LINKID_TEXT];
+    WCHAR szUrl[L_MAX_URL_LENGTH];
+}
+struct NMLINK {
+    NMHDR hdr;
+    LITEM item;
+}
+struct NMLVODSTATECHANGE {
+  NMHDR hdr;
+  int iFrom;
+  int iTo;
+  UINT uNewState;
+  UINT uOldState;
+}
+struct NMTBHOTITEM {
+    NMHDR hdr;
+    int idOld;
+    int idNew;
+    DWORD dwFlags;
+}
+struct NMTVDISPINFO {
+    NMHDR hdr;
+    TVITEM item;
+}
+struct NMTVITEMCHANGE {
+    NMHDR hdr;
+    UINT uChanged;
+    HTREEITEM hItem;
+    UINT uStateNew;
+    UINT uStateOld;
+    LPARAM lParam;
+}
+
+struct ACTCTXA {
+  ULONG cbSize;
+  DWORD dwFlags;
+  LPCSTR lpSource;
+  USHORT wProcessorArchitecture;
+  LANGID wLangId;
+  LPCTSTR lpAssemblyDirectory;
+  LPCTSTR lpResourceName;
+  LPCTSTR lpApplicationName;
+  HMODULE hModule;
+}
+struct ACTCTXW {
+  ULONG cbSize;
+  DWORD dwFlags;
+  LPCWSTR lpSource;
+  USHORT wProcessorArchitecture;
+  LANGID wLangId;
+  LPCTSTR lpAssemblyDirectory;
+  LPCTSTR lpResourceName;
+  LPCTSTR lpApplicationName;
+  HMODULE hModule;
+}
+version(Win32SansUnicode) alias ACTCTXA ACTCTX;
+else          alias ACTCTXW ACTCTX;
+alias HANDLE HACTCTX;
+
+struct OSVERSIONINFOEX
+{
+  DWORD dwOSVersionInfoSize;
+  DWORD dwMajorVersion;
+  DWORD dwMinorVersion;
+  DWORD dwBuildNumber;
+  DWORD dwPlatformId;
+  TCHAR szCSDVersion[128];
+  WORD wServicePackMajor;
+  WORD wServicePackMinor;
+  WORD wSuiteMask;
+  BYTE wProductType;
+  BYTE wReserved;
+}
+
+
+
+// ....
+//--------------------------------------------------------------------------------
+
+// const int LF_FACESIZE = 32;
+// const int LF_FULLFACESIZE = 64;
+
+alias HANDLE HIMC;
+// alias HANDLE HTREEITEM;
+//alias HANDLE HDWP;
+//alias HANDLE HIMAGELIST;
+//alias HANDLE HMONITOR;
+//alias HANDLE HHOOK;
+//alias HANDLE HDROP;
+//alias HANDLE *LPHANDLE;
+
+alias HRESULT WINOLEAPI;
+// alias LPRECT LPCRECT;
+// alias LPRECT LPCRECTL;
+alias DWORD LGRPID;
+//alias LONG LONG_PTR;
+//alias ULONG ULONG_PTR;
+alias DWORD DWORD_PTR;
+//alias int INT_PTR;
+//alias uint UINT_PTR;
+// alias DWORD LCID;
+// alias DWORD LCTYPE;
+alias USHORT COLOR16;
+
+//alias POINT POINTL;
+
+//alias long LONGLONG;
+//alias ulong DWORDLONG;
+
+//alias LONGLONG  *PLONGLONG;
+//alias DWORDLONG *PDWORDLONG;
+alias size_t    SIZE_T;
+//alias int       WPARAM_I;
+
+extern(Windows){
+
+/**
+ * Since Eclipse/SWT uses int as (msg, wparam, lparam) and some times check the value against (-1),
+ * but WNDPROC_I declared in windows header the (msg, wparam) is UINT which will never be -1 but 0xFFFF or
+ * something else. This made some DWT API failed. to fix the problem, it better to declare (msg, wparam)
+ * as int like Eclispe/SWT does. and we alias int to WPARAM_I.
+ */
+// alias LRESULT function(HWND, uint, uint, int) WNDPROC_I;
+// alias LRESULT function(int code, int wParam, LPARAM lParam) HOOKPROC_I;
+//
+// // Windows CALLBACK declaration here
+// alias WNDPROC_I BFFCALLBACK;        // browse for fold
+// alias WNDPROC_I LPCCHOOKPROC_I;     // choose color
+// alias WNDPROC_I LPCFHOOKPROC_I;     // choose font
+// alias WNDPROC_I LPPRINTHOOKPROC_I;  // print hook
+// alias WNDPROC_I LPSETUPHOOKPROC_I;  // print setup
+// alias WNDPROC_I TIMERPROC_I;        // timer
+
+alias LRESULT function (
+    int code,       // hook code
+    int wParam,  // undefined
+    int lParam   // address of structure with message data
+) MESSAGEPROC;
+
+
+//alias BOOL function (
+//  HMONITOR hMonitor,  // handle to display monitor
+//  HDC hdcMonitor,     // handle to monitor-appropriate device context
+//  LPRECT lprcMonitor, // pointer to monitor intersection rectangle
+//  LPARAM dwData       // data passed from EnumDisplayMonitors
+//) MONITORENUMPROC;
+
+//alias int function(
+//  ENUMLOGFONT *lpelf,    // logical-font data
+//  NEWTEXTMETRIC *lpntm,  // physical-font data
+//  DWORD FontType,        // type of font
+//  LPARAM lParam          // application-defined data
+//)FONTENUMPROC;
+
+//alias int function(
+//  ENUMLOGFONTEX *lpelfe,    // logical-font data
+//  NEWTEXTMETRICEX *lpntme,  // physical-font data
+//  DWORD FontType,           // type of font
+//  LPARAM lParam             // application-defined data
+//)FONTENUMEXPROC;
+
+alias BOOL function (
+  LGRPID LanguageGroup,             // language-group identifier
+  TCHAR* lpLanguageGroupString,     // language-group identifier string
+  TCHAR* lpLanguageGroupNameString, // language-group name string
+  DWORD dwFlags,                    // options
+  LONG_PTR  lParam                  // callback parameter
+)LANGUAGEGROUP_ENUMPROC;
+
+//alias BOOL function (
+//  TCHAR* lpLocaleString   // locale identifier string
+//)LOCALE_ENUMPROC;
+
+
+// end of Windows CALLBACK declaration
+
+
+
+//struct ABC {
+//    int     abcA;
+//    UINT    abcB;
+//    int     abcC;
+//}
+//alias ABC* PABC, LPABC;
+
+// declared in tango
+//struct ACCEL {
+//    align(1):
+//    BYTE   fVirt;
+//    WORD   key;
+//    WORD   cmd;
+//}
+//alias ACCEL* PACCEL, LPACCEL;
+
+// declared in phobos
+//struct BITMAP {
+//  int bmType;
+//  int bmWidth;
+//  int bmHeight;
+//  int bmWidthBytes;
+//  short bmPlanes;
+//  short bmBitsPixel;
+//  void* bmBits;
+//}
+
+//struct RGBQUAD { // rgbq
+//    byte    rgbBlue;
+//    byte    rgbGreen;
+//    byte    rgbRed;
+//    byte    rgbReserved;
+//}
+
+// declared in phobos
+//struct BITMAPINFO { // bmi
+//    BITMAPINFOHEADER bmiHeader;
+//    RGBQUAD          bmiColors[1];
+//}
+
+//struct BITMAPINFOHEADER {
+//  int biSize;
+//  int biWidth;
+//  int biHeight;
+//  short biPlanes;
+//  short biBitCount;
+//  int biCompression;
+//  int biSizeImage;
+//  int biXPelsPerMeter;
+//  int biYPelsPerMeter;
+//  int biClrUsed;
+//  int biClrImportant;
+//}
+
+
+
+//struct CHARSETINFO {
+//    UINT ciCharset;
+//    UINT ciACP;
+//    FONTSIGNATURE fs;
+//}alias CHARSETINFO* PCHARSETINFO, LPCHARSETINFO;
+
+
+
+
+struct CHOOSEFONTA {
+    // sizeof = 60 ???
+//  align(2):
+    DWORD        lStructSize;
+    HWND         hwndOwner;
+    HDC          hDC;
+    LPLOGFONTA   lpLogFont;
+    INT          iPointSize;
+    DWORD        Flags;
+    DWORD        rgbColors;
+    LPARAM       lCustData;
+    LPCFHOOKPROC lpfnHook;
+    LPCSTR      lpTemplateName;
+    HINSTANCE    hInstance;
+    LPSTR       lpszStyle;
+    WORD         nFontType;
+    WORD         ___MISSING_ALIGNMENT__;
+    INT          nSizeMin;
+    INT          nSizeMax;
+}alias CHOOSEFONTA* PCHOOSEFONTA, LPCHOOSEFONTA;
+
+struct CHOOSEFONTW {
+    // sizeof = 60 ???
+//  align(2):
+    DWORD        lStructSize;
+    HWND         hwndOwner;
+    HDC          hDC;
+    LOGFONTW*    lpLogFont;
+    INT          iPointSize;
+    DWORD        Flags;
+    DWORD        rgbColors;
+    LPARAM       lCustData;
+    LPCFHOOKPROC lpfnHook;
+    LPCWSTR      lpTemplateName;
+    HINSTANCE    hInstance;
+    LPWSTR       lpszStyle;
+    WORD         nFontType;
+    WORD         ___MISSING_ALIGNMENT__;
+    INT          nSizeMin;
+    INT          nSizeMax;
+}alias CHOOSEFONTW* PCHOOSEFONTW, LPCHOOSEFONTW;
+version(Win32SansUnicode){
+    alias CHOOSEFONTA CHOOSEFONT;
+}else{
+    alias CHOOSEFONTW CHOOSEFONT;
+}
+
+struct COMBOBOXINFO {
+    DWORD cbSize;
+    RECT rcItem;
+    RECT rcButton;
+    DWORD stateButton;
+    HWND hwndCombo;
+    HWND hwndItem;
+    HWND hwndList;
+} alias COMBOBOXINFO* PCOMBOBOXINFO, LPCOMBOBOXINFO;
+
+//struct COMPOSITIONFORM {
+//    DWORD dwStyle;
+//    POINT ptCurrentPos;
+//    RECT rcArea;
+//}
+//alias COMPOSITIONFORM* LPCOMPOSITIONFORM;
+
+// const uint CCHDEVICENAME = 32;
+// const uint CCHFORMNAME = 32;
+
+struct DEVMODEA {    // dvmd
+    BYTE   dmDeviceName[CCHDEVICENAME];
+    WORD   dmSpecVersion;
+    WORD   dmDriverVersion;
+    WORD   dmSize;
+    WORD   dmDriverExtra;
+    DWORD  dmFields;
+//    union {
+//      struct {
+//        short dmOrientation;
+//        short dmPaperSize;
+//        short dmPaperLength;
+//        short dmPaperWidth;
+//      };
+//      POINTL dmPosition;
+//    };
+    POINT  dmPosition;
+    short  dmScale;
+    short  dmCopies;
+    short  dmDefaultSource;
+    short  dmPrintQuality;
+    short  dmColor;
+    short  dmDuplex;
+    short  dmYResolution;
+    short  dmTTOption;
+    short  dmCollate;
+    BYTE  dmFormName[CCHFORMNAME];
+    WORD  dmLogPixels;
+    DWORD  dmBitsPerPel;
+    DWORD  dmPelsWidth;
+    DWORD  dmPelsHeight;
+    DWORD  dmDisplayFlags;
+    DWORD  dmDisplayFrequency;
+//#if(WINVER >= 0x0400)
+    DWORD  dmICMMethod;
+    DWORD  dmICMIntent;
+    DWORD  dmMediaType;
+    DWORD  dmDitherType;
+    DWORD  dmReserved1;
+    DWORD  dmReserved2;
+//#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
+    DWORD  dmPanningWidth;
+    DWORD  dmPanningHeight;
+//#endif
+//#endif /* WINVER >= 0x0400 */
+}
+
+struct DEVMODEW {    // dvmd
+    WCHAR  dmDeviceName[CCHDEVICENAME];
+    WORD   dmSpecVersion;
+    WORD   dmDriverVersion;
+    WORD   dmSize;
+    WORD   dmDriverExtra;
+    DWORD  dmFields;
+//    union {
+//      struct {
+//        short dmOrientation;
+//        short dmPaperSize;
+//        short dmPaperLength;
+//        short dmPaperWidth;
+//      };
+      POINTL dmPosition;
+//    };
+    short  dmScale;
+    short  dmCopies;
+    short  dmDefaultSource;
+    short  dmPrintQuality;
+    short  dmColor;
+    short  dmDuplex;
+    short  dmYResolution;
+    short  dmTTOption;
+    short  dmCollate;
+    WCHAR dmFormName[CCHFORMNAME];
+    WORD  dmLogPixels;
+    DWORD  dmBitsPerPel;
+    DWORD  dmPelsWidth;
+    DWORD  dmPelsHeight;
+    DWORD  dmDisplayFlags;
+    DWORD  dmDisplayFrequency;
+//#if(WINVER >= 0x0400)
+    DWORD  dmICMMethod;
+    DWORD  dmICMIntent;
+    DWORD  dmMediaType;
+    DWORD  dmDitherType;
+    DWORD  dmReserved1;
+    DWORD  dmReserved2;
+//#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
+    DWORD  dmPanningWidth;
+    DWORD  dmPanningHeight;
+//#endif
+//#endif /* WINVER >= 0x0400 */
+}
+
+//PORTING_TODO: defined in tango
+//version(Win32SansUnicode){
+//    alias DEVMODEA DEVMODE;
+//}else{
+//    alias DEVMODEW DEVMODE;
+//}
+
+//struct DIBSECTION {
+//    // BITMAP
+//    int bmType;
+//    int bmWidth;
+//    int bmHeight;
+//    int bmWidthBytes;
+//    short bmPlanes;
+//    short bmBitsPixel;
+//    void* bmBits;
+//    // end BITMAP
+//    int biSize;
+//    int biWidth;
+//    int biHeight;
+//    short biPlanes;
+//    short biBitCount;
+//    int biCompression;
+//    int biSizeImage;
+//    int biXPelsPerMeter;
+//    int biYPelsPerMeter;
+//    int biClrUsed;
+//    int biClrImportant;
+//    int dsBitfields0;
+//    int dsBitfields1;
+//    int dsBitfields2;
+//    int dshSection;
+//    int dsOffset;
+//}
+
+struct DLLVERSIONINFO {
+    DWORD cbSize;
+    DWORD dwMajorVersion;
+    DWORD dwMinorVersion;
+    DWORD dwBuildNumber;
+    DWORD dwPlatformID;
+}
+
+
+
+struct DROPFILES {
+    DWORD  pFiles; // Offset of the file list from the beginning of this structure, in bytes.
+    POINT pt; // Drop point. The coordinates depend on fNC.
+    BOOL fNC;   // Nonclient area flag. If this member is TRUE, pt specifies the screen
+                      // coordinates of a point in a window's nonclient area. If it is FALSE,
+                      // pt specifies the client coordinates of a point in the client area.
+    BOOL fWide; // Value that indicates whether the file contains ANSI or Unicode
+                      // characters. If it is zero, it contains ANSI characters. Otherwise, it
+                      // contains Unicode characters.
+
+}
+
+
+// struct ENUMLOGFONTA {
+//   LOGFONTA elfLogFont;
+//   CHAR   elfFullName[LF_FULLFACESIZE];
+//   CHAR   elfStyle[LF_FACESIZE];
+// }
+// struct ENUMLOGFONTW {
+//   LOGFONTW elfLogFont;
+//   WCHAR   elfFullName[LF_FULLFACESIZE];
+//   WCHAR   elfStyle[LF_FACESIZE];
+// }
+// struct ENUMLOGFONTEXA {
+//     LOGFONTA  elfLogFont;
+//     BYTE  elfFullName[LF_FULLFACESIZE];
+//     BYTE  elfStyle[LF_FACESIZE];
+//     BYTE  elfScript[LF_FACESIZE];
+// }
+// struct ENUMLOGFONTEXW {
+//     LOGFONTW  elfLogFont;
+//     WCHAR  elfFullName[LF_FULLFACESIZE];
+//     WCHAR  elfStyle[LF_FACESIZE];
+//     WCHAR  elfScript[LF_FACESIZE];
+// }
+// version(Win32SansUnicode){
+//     alias ENUMLOGFONTA ENUMLOGFONT;
+//     alias ENUMLOGFONTEXA ENUMLOGFONTEX;
+// }else {
+//     alias ENUMLOGFONTW ENUMLOGFONT;
+//     alias ENUMLOGFONTEXW ENUMLOGFONTEX;
+// }
+
+// in phobos aready
+//struct FILETIME {
+//    DWORD dwLowDateTime;
+//    DWORD dwHighDateTime;
+//}
+
+
+
+struct GOFFSET {
+  LONG  du;
+  LONG  dv;
+}
+
+struct GRADIENT_RECT {
+  ULONG    UpperLeft;
+  ULONG    LowerRight;
+}
+
+struct GUITHREADINFO {
+    DWORD cbSize;
+    DWORD flags;
+    HWND hwndActive;
+    HWND hwndFocus;
+    HWND hwndCapture;
+    HWND hwndMenuOwner;
+    HWND hwndMoveSize;
+    HWND hwndCaret;
+    RECT rcCaret;
+}alias GUITHREADINFO* PGUITHREADINFO, LPGUITHREADINFO;
+
+struct HDITEMA {
+    UINT    mask;
+    int     cxy;
+    LPSTR  pszText;
+    HBITMAP hbm;
+    int     cchTextMax;
+    int     fmt;
+    LPARAM  lParam;
+    int     iImage;
+    int     iOrder;
+}
+struct HDITEMW {
+    UINT    mask;
+    int     cxy;
+    LPWSTR  pszText;
+    HBITMAP hbm;
+    int     cchTextMax;
+    int     fmt;
+    LPARAM  lParam;
+    int     iImage;
+    int     iOrder;
+}
+version(Win32SansUnicode){
+    alias HDITEMA HDITEM;
+}else{
+    alias HDITEMW HDITEM;
+}
+alias HDITEM* LPHDITEM;
+
+
+//struct ICONINFO {
+//   BOOL    fIcon;
+//   DWORD   xHotspot;
+//   DWORD   yHotspot;
+//   HBITMAP hbmMask;
+//   HBITMAP hbmColor;
+//}
+//alias ICONINFO*  PICONINFO, LPICONINFO;
+
+struct INITCOMMONCONTROLSEX {
+    DWORD dwSize;
+    DWORD dwICC;
+}alias INITCOMMONCONTROLSEX* PINITCOMMONCONTROLSEX, LPINITCOMMONCONTROLSEX;
+
+struct INPUT {
+    // Note: <Shawn> sizeof = 28
+    int type;
+  union {
+        MOUSEINPUT mi;
+        KEYBDINPUT ki;
+//        HARDWAREINPUT hi;
+    }
+}alias INPUT* PINPUT, LPINPUT;
+
+//struct ITEMIDLIST {
+//    SHITEMID mkid;
+//}
+//alias ITEMIDLIST* PITEMIDLIST, LPITEMIDLIST, LPCITEMIDLIST;
+
+struct KEYBDINPUT {
+    WORD wVk;
+    WORD wScan;
+    DWORD dwFlags;
+    DWORD time;
+    ULONG_PTR dwExtraInfo;
+}
+
+
+// struct LOGBRUSH {
+//   UINT     lbStyle;
+//   COLORREF lbColor;
+//   LONG     lbHatch;
+// }
+
+
+struct LVCOLUMNA {
+    UINT mask;
+    int fmt;
+    int cx;
+    LPSTR pszText;
+    int cchTextMax;
+    int iSubItem;
+    int iImage;
+    int iOrder;
+}
+struct LVCOLUMNW {
+    UINT mask;
+    int fmt;
+    int cx;
+    LPWSTR pszText;
+    int cchTextMax;
+    int iSubItem;
+    int iImage;
+    int iOrder;
+}
+version(Win32SansUnicode){
+    alias LVCOLUMNA LVCOLUMN;
+}else{
+    alias LVCOLUMNW LVCOLUMN;
+}
+alias LVCOLUMN* LPLVCOLUMN;
+
+struct LVFINDINFOA {
+    UINT flags;
+    LPCSTR psz;
+    LPARAM lParam;
+    POINT pt;
+    UINT vkDirection;
+}
+alias LVFINDINFOA* LPFINDINFOA;
+struct LVFINDINFOW {
+    UINT flags;
+    LPCWSTR psz;
+    LPARAM lParam;
+    POINT pt;
+    UINT vkDirection;
+}
+alias LVFINDINFOW* LPFINDINFOW;
+
+version(Win32SansUnicode){
+    alias LVFINDINFOA LVFINDINFO;
+}else{
+    alias LVFINDINFOW LVFINDINFO;
+}
+
+struct LVHITTESTINFO
+{
+    POINT pt;
+    UINT flags;
+    int iItem;
+    int iSubItem;
+}
+
+
+struct LVITEMA {
+    UINT   mask;
+    int    iItem;
+    int    iSubItem;
+    UINT   state;
+    UINT   stateMask;
+    LPSTR  pszText;
+    int    cchTextMax;
+    int    iImage;
+    LPARAM lParam;
+    int iIndent;
+}
+struct LVITEMW {
+    UINT   mask;
+    int    iItem;
+    int    iSubItem;
+    UINT   state;
+    UINT   stateMask;
+    LPWSTR  pszText;
+    int    cchTextMax;
+    int    iImage;
+    LPARAM lParam;
+    int iIndent;
+}
+version(Win32SansUnicode){
+    alias LVITEMA LVITEM;
+}else{
+    alias LVITEMW LVITEM;
+}
+alias LVITEM* LPLVITEM;
+
+struct MARGINS {
+    int cxLeftWidth;
+    int cxRightWidth;
+    int cyTopHeight;
+    int cyBottomHeight;
+}
+
+struct MENUBARINFO {
+  DWORD cbSize;
+  RECT  rcBar;
+  HMENU hMenu;
+  HWND  hwndMenu;
+  BOOL  fBarFocused;
+  BOOL  fFocused;
+}alias MENUBARINFO* PMENUBARINFO, LPMENUBARINFO;
+
+struct MENUINFO {
+  DWORD   cbSize;
+  DWORD   fMask;
+  DWORD   dwStyle;
+  UINT    cyMax;
+  HBRUSH  hbrBack;
+  DWORD   dwContextHelpID;
+  ULONG_PTR  dwMenuData;
+}
+alias MENUINFO* PCMENUINFO, LPCMENUINFO, LPCCMENUINFO;
+
+/*
+* Feature in Windows.  The hbmpItem field requires Windows 4.10
+* or greater.  On Windows NT 4.0, passing in a larger struct size
+* in the cbSize field does nothing.  On Windows 95, the MENUITEMINFO
+* calls fail when the struct size is too large.  The fix is to ensure
+* that the correct struct size is used for the Windows platform.
+*/
+// struct MENUITEMINFOA
+// {
+//     UINT    cbSize;
+//     UINT    fMask;
+//     UINT    fType;          // used if MIIM_TYPE
+//     UINT    fState;         // used if MIIM_STATE
+//     UINT    wID;            // used if MIIM_ID
+//     HMENU   hSubMenu;       // used if MIIM_SUBMENU
+//     HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
+//     HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
+//     DWORD   dwItemData;     // used if MIIM_DATA
+//     LPSTR   dwTypeData;     // used if MIIM_TYPE
+//     UINT    cch;            // used if MIIM_TYPE
+//     HBITMAP hbmpItem;
+// }
+// alias MENUITEMINFOA* PMENUITEMINFOA, LPMENUITEMINFOA;
+// struct MENUITEMINFOW
+// {
+//     UINT    cbSize;
+//     UINT    fMask;
+//     UINT    fType;          // used if MIIM_TYPE
+//     UINT    fState;         // used if MIIM_STATE
+//     UINT    wID;            // used if MIIM_ID
+//     HMENU   hSubMenu;       // used if MIIM_SUBMENU
+//     HBITMAP hbmpChecked;    // used if MIIM_CHECKMARKS
+//     HBITMAP hbmpUnchecked;  // used if MIIM_CHECKMARKS
+//     DWORD   dwItemData;     // used if MIIM_DATA
+//     LPWSTR  dwTypeData;     // used if MIIM_TYPE
+//     UINT    cch;            // used if MIIM_TYPE
+//     HBITMAP hbmpItem;
+// }   alias MENUITEMINFOW* PMENUITEMINFOW, LPMENUITEMINFOW;
+//version(Win32SansUnicode){
+//    alias MENUITEMINFOA MENUITEMINFO;
+//}else{
+//    alias MENUITEMINFOW MENUITEMINFO;
+//}
+//alias MENUITEMINFO * LPMENUITEMINFO;
+
+
+//struct MONITORINFO {
+//    DWORD  cbSize;
+//    RECT   rcMonitor;
+//    RECT   rcWork;
+//    DWORD  dwFlags;
+//}
+//alias MONITORINFO* PMONITORINFO, LPMONITORINFO;
+
+struct MOUSEINPUT {
+    LONG    dx;
+    LONG    dy;
+    DWORD   mouseData;
+    DWORD   dwFlags;
+    DWORD   dwExtraInfo;
+}
+
+//struct MSG {
+//  int hwnd;
+//  int message;
+//  int wParam;
+//  int lParam;
+//  int time;
+////    POINT pt;
+//  int x, y;
+//}
+/+
+struct NEWTEXTMETRICA { // ntm
+    LONG   tmHeight;
+    LONG   tmAscent;
+    LONG   tmDescent;
+    LONG   tmInternalLeading;
+    LONG   tmExternalLeading;
+    LONG   tmAveCharWidth;
+    LONG   tmMaxCharWidth;
+    LONG   tmWeight;
+    LONG   tmOverhang;
+    LONG   tmDigitizedAspectX;
+    LONG   tmDigitizedAspectY;
+    BYTE  tmFirstChar;
+    BYTE  tmLastChar;
+    BYTE  tmDefaultChar;
+    BYTE  tmBreakChar;
+    BYTE   tmItalic;
+    BYTE   tmUnderlined;
+    BYTE   tmStruckOut;
+    BYTE   tmPitchAndFamily;
+    BYTE   tmCharSet;
+    DWORD  ntmFlags;
+    UINT   ntmSizeEM;
+    UINT   ntmCellHeight;
+    UINT   ntmAvgWidth;
+}
+struct NEWTEXTMETRICW { // ntm
+    LONG   tmHeight;
+    LONG   tmAscent;
+    LONG   tmDescent;
+    LONG   tmInternalLeading;
+    LONG   tmExternalLeading;
+    LONG   tmAveCharWidth;
+    LONG   tmMaxCharWidth;
+    LONG   tmWeight;
+    LONG   tmOverhang;
+    LONG   tmDigitizedAspectX;
+    LONG   tmDigitizedAspectY;
+    WCHAR  tmFirstChar;
+    WCHAR  tmLastChar;
+    WCHAR  tmDefaultChar;
+    WCHAR  tmBreakChar;
+    BYTE   tmItalic;
+    BYTE   tmUnderlined;
+    BYTE   tmStruckOut;
+    BYTE   tmPitchAndFamily;
+    BYTE   tmCharSet;
+    DWORD  ntmFlags;
+    UINT   ntmSizeEM;
+    UINT   ntmCellHeight;
+    UINT   ntmAvgWidth;
+}
+struct NEWTEXTMETRICEXA {
+    NEWTEXTMETRICA  ntmentm;
+    FONTSIGNATURE  ntmeFontSignature;
+}
+struct NEWTEXTMETRICEXW {
+    NEWTEXTMETRICW  ntmentm;
+    FONTSIGNATURE  ntmeFontSignature;
+}
+version(Win32SansUnicode){
+    alias NEWTEXTMETRICA NEWTEXTMETRIC;
+    alias NEWTEXTMETRICEXA NEWTEXTMETRICEX;
+}else{
+    alias NEWTEXTMETRICW NEWTEXTMETRIC;
+    alias NEWTEXTMETRICEXW NEWTEXTMETRICEX;
+}
++/
+
+struct NMCUSTOMDRAW {
+    NMHDR  hdr;
+    DWORD  dwDrawStage;
+    HDC    hdc;
+    RECT   rc;
+    DWORD  dwItemSpec;
+    UINT   uItemState;
+    LPARAM lItemlParam;
+}
+
+struct NMHEADER {
+    NMHDR    hdr;
+    int      iItem;
+    int      iButton;
+    HDITEM  *pitem;
+}
+
+struct NMLISTVIEW {
+    NMHDR   hdr;
+    int     iItem;
+    int     iSubItem;
+    UINT    uNewState;
+    UINT    uOldState;
+    UINT    uChanged;
+    POINT   ptAction;
+    LPARAM  lParam;
+}
+
+struct NMLVCUSTOMDRAW {
+    NMCUSTOMDRAW nmcd;
+    COLORREF clrText;
+    COLORREF clrTextBk;
+//#if (_WIN32_IE >= 0x0400)
+    int iSubItem;
+//#endif
+}
+
+struct NMLVDISPINFOA {
+    NMHDR hdr;
+    LVITEMA item;
+}
+struct NMLVDISPINFOW {
+    NMHDR hdr;
+    LVITEMW item;
+}
+version(Win32SansUnicode){
+    alias NMLVDISPINFOA NMLVDISPINFO;
+}else{
+    alias NMLVDISPINFOW NMLVDISPINFO;
+}
+
+struct NMLVFINDITEMA {
+    NMHDR hdr;
+    int iStart;
+    LVFINDINFOA lvfi;
+}
+
+struct NMLVFINDITEMW {
+    NMHDR hdr;
+    int iStart;
+    LVFINDINFOW lvfi;
+}
+version(Win32SansUnicode){
+    alias NMLVFINDITEMA NMLVFINDITEM;
+}else{
+    alias NMLVFINDITEMW NMLVFINDITEM;
+}
+
+struct NMREBARCHEVRON {
+    NMHDR hdr;
+    UINT uBand;
+    UINT wID;
+    LPARAM lParam;
+    RECT rc;
+    LPARAM lParamNM;
+}
+
+struct NMRGINFO {
+    // NMHDR
+    HWND hwndFrom;
+    int idFrom;
+    int code;
+    // -end- NMHDR
+//  POINT ptAction;
+    int x;
+    int y;
+    int dwItemSpec;
+}
+struct NMTOOLBARA {
+    align(2):
+    NMHDR    hdr;
+    int      iItem;
+    TBBUTTON tbButton;
+    int      cchText;
+    LPSTR   pszText;
+}
+struct NMTOOLBARW {
+    align(2):
+    NMHDR    hdr;
+    int      iItem;
+    TBBUTTON tbButton;
+    int      cchText;
+    LPWSTR   pszText;
+}
+version(Win32SansUnicode){
+    alias NMTOOLBARA NMTOOLBAR;
+}else{
+    alias NMTOOLBARW NMTOOLBAR;
+}
+alias NMTOOLBAR* LPNMTOOLBAR;
+
+
+struct NMTTDISPINFOA {
+    NMHDR hdr;
+    LPSTR lpszText;
+    char szText[80];
+    HINSTANCE hinst;
+    UINT uFlags;
+    LPARAM lParam;
+}
+
+struct NMTTDISPINFOW {
+    NMHDR hdr;
+    LPWSTR lpszText;
+    WCHAR szText[80];
+    HINSTANCE hinst;
+    UINT uFlags;
+    LPARAM lParam;
+}
+version(Win32SansUnicode){
+    alias NMTTDISPINFOA NMTTDISPINFO;
+} else {
+    alias NMTTDISPINFOW NMTTDISPINFO;
+}
+
+struct NMTVCUSTOMDRAW {
+    NMCUSTOMDRAW nmcd;
+    COLORREF clrText;
+    COLORREF clrTextBk;
+//#if (_WIN32_IE &gt;= 0x0400)
+    int iLevel; // the iLevel field does not appear on WinCE
+//#endif
+}
+
+
+struct NOTIFYICONDATAA {
+    DWORD cbSize;
+    HWND hWnd;
+    UINT uID;
+    UINT uFlags;
+    UINT uCallbackMessage;
+    HICON hIcon;
+    char szTip[128] = '\0';
+    DWORD dwState;
+    DWORD dwStateMask;
+    char szInfo[256] = '\0';
+    union {
+        UINT uTimeout;
+        UINT uVersion;
+    };
+    char szInfoTitle[64] = '\0';
+    DWORD dwInfoFlags;
+    //GUID guidItem;
+    //HICON hBalloonIcon;
+} alias NOTIFYICONDATAA* PNOTIFYICONDATAA, LPNOTIFYICONDATAA;
+
+struct NOTIFYICONDATAW {
+    DWORD cbSize;
+    HWND hWnd;
+    UINT uID;
+    UINT uFlags;
+    UINT uCallbackMessage;
+    HICON hIcon;
+    WCHAR szTip[128] = '\0';
+    DWORD dwState;
+    DWORD dwStateMask;
+    WCHAR szInfo[256] = '\0';
+    union {
+        UINT uTimeout;
+        UINT uVersion;
+    }
+    WCHAR szInfoTitle[64] = '\0';
+    DWORD dwInfoFlags;
+    //GUID guidItem;
+    //HICON hBalloonIcon;
+}
+
+alias NOTIFYICONDATAW* PNOTIFYICONDATAW, LPNOTIFYICONDATAW;
+version(Win32SansUnicode){
+    alias NOTIFYICONDATAA NOTIFYICONDATA;
+}else{
+    alias NOTIFYICONDATAW NOTIFYICONDATA;
+}
+
+/* already in phobos now
+
+struct OPENFILENAMEA {
+   DWORD        lStructSize;
+   HWND         hwndOwner;
+   HINSTANCE    hInstance;
+   LPCSTR       lpstrFilter;
+   LPSTR        lpstrCustomFilter;
+   DWORD        nMaxCustFilter;
+   DWORD        nFilterIndex;
+   LPSTR        lpstrFile;
+   DWORD        nMaxFile;
+   LPSTR        lpstrFileTitle;
+   DWORD        nMaxFileTitle;
+   LPCSTR       lpstrInitialDir;
+   LPCSTR       lpstrTitle;
+   DWORD        Flags;
+   WORD         nFileOffset;
+   WORD         nFileExtension;
+   LPCSTR       lpstrDefExt;
+   LPARAM       lCustData;
+   LPOFNHOOKPROC lpfnHook;
+   LPCSTR       lpTemplateName;
+}
+
+struct OPENFILENAMEW {
+   DWORD        lStructSize;
+   HWND         hwndOwner;
+   HINSTANCE    hInstance;
+   LPCWSTR      lpstrFilter;
+   LPWSTR       lpstrCustomFilter;
+   DWORD        nMaxCustFilter;
+   DWORD        nFilterIndex;
+   LPWSTR       lpstrFile;
+   DWORD        nMaxFile;
+   LPWSTR       lpstrFileTitle;
+   DWORD        nMaxFileTitle;
+   LPCWSTR      lpstrInitialDir;
+   LPCWSTR      lpstrTitle;
+   DWORD        Flags;
+   WORD         nFileOffset;
+   WORD         nFileExtension;
+   LPCWSTR      lpstrDefExt;
+   LPARAM       lCustData;
+   LPOFNHOOKPROC lpfnHook;
+   LPCWSTR      lpTemplateName;
+}
+*/
+
+//PORTING_TODO: is needed?
+//version(Win32SansUnicode){
+//    alias OPENFILENAMEA OPENFILENAME;
+//}else{
+//    alias OPENFILENAMEW OPENFILENAME;
+//}
+
+
+//struct PAINTSTRUCT {
+//  int hdc;
+//  int fErase;
+////    RECT rcPaint;
+//  public int left, top, right, bottom;
+//  int fRestore;
+//  int fIncUpdate;
+//  byte rgbReserved[32];
+//}
+//alias windows.PAINTSTRUCT PAINTSTRUCT;
+
+//struct POINT {
+//  LONG x, y;
+//}
+
+
+struct PRINTDLGA {  // pd
+    align(2):
+    DWORD     lStructSize;
+    HWND      hwndOwner;
+    HANDLE    hDevMode;
+    HANDLE    hDevNames;
+    HDC       hDC;
+    DWORD     Flags;
+    WORD      nFromPage;
+    WORD      nToPage;
+    WORD      nMinPage;
+    WORD      nMaxPage;
+    WORD      nCopies;
+    HINSTANCE hInstance;
+    DWORD     lCustData;
+    LPPRINTHOOKPROC lpfnPrintHook;
+    LPSETUPHOOKPROC lpfnSetupHook;
+    LPCSTR    lpPrintTemplateName;
+    LPCSTR    lpSetupTemplateName;
+    HANDLE    hPrintTemplate;
+    HANDLE    hSetupTemplate;
+}
+alias PRINTDLGA* PPRINTDLGA, LPPRINTDLGA;
+struct PRINTDLGW {  // pd
+    align(2):
+    DWORD     lStructSize;
+    HWND      hwndOwner;
+    HANDLE    hDevMode;
+    HANDLE    hDevNames;
+    HDC       hDC;
+    DWORD     Flags;
+    WORD      nFromPage;
+    WORD      nToPage;
+    WORD      nMinPage;
+    WORD      nMaxPage;
+    WORD      nCopies;
+    HINSTANCE hInstance;
+    DWORD     lCustData;
+    LPPRINTHOOKPROC lpfnPrintHook;
+    LPSETUPHOOKPROC lpfnSetupHook;
+    LPCWSTR    lpPrintTemplateName;
+    LPCWSTR    lpSetupTemplateName;
+    HANDLE    hPrintTemplate;
+    HANDLE    hSetupTemplate;
+}
+alias PRINTDLGW* PPRINTDLGW, LPPRINTDLGW;
+version(Win32SansUnicode){
+    alias PRINTDLGA PRINTDLG;
+}else{
+    alias PRINTDLGW PRINTDLG;
+}
+
+struct REBARBANDINFOA {
+    UINT        cbSize;
+    UINT        fMask;
+    UINT        fStyle;
+    COLORREF    clrFore;
+    COLORREF    clrBack;
+    LPSTR      lpText;
+    UINT        cch;
+    int         iImage;
+    HWND        hwndChild;
+    UINT        cxMinChild;
+    UINT        cyMinChild;
+    UINT        cx;
+    HBITMAP     hbmBack;
+    UINT        wID;
+    UINT        cyChild;
+    UINT        cyMaxChild;
+    UINT        cyIntegral;
+    UINT        cxIdeal;
+    LPARAM      lParam;
+    UINT        cxHeader;
+    /* Note in WinCE.  The field cxHeader is not defined. */
+}
+struct REBARBANDINFOW {
+    UINT        cbSize;
+    UINT        fMask;
+    UINT        fStyle;
+    COLORREF    clrFore;
+    COLORREF    clrBack;
+    LPWSTR      lpText;
+    UINT        cch;
+    int         iImage;
+    HWND        hwndChild;
+    UINT        cxMinChild;
+    UINT        cyMinChild;
+    UINT        cx;
+    HBITMAP     hbmBack;
+    UINT        wID;
+    UINT        cyChild;
+    UINT        cyMaxChild;
+    UINT        cyIntegral;
+    UINT        cxIdeal;
+    LPARAM      lParam;
+    UINT        cxHeader;
+    /* Note in WinCE.  The field cxHeader is not defined. */
+}
+version(Win32SansUnicode){
+    alias REBARBANDINFOA REBARBANDINFO;
+}else{
+    alias REBARBANDINFOW REBARBANDINFO;
+}
+
+//struct RECT {
+//  int left;
+//  int top;
+//  int right;
+//  int bottom;
+//}
+
+//struct RGNDATA {
+//    RGNDATAHEADER rdh;
+//    char          Buffer[1];
+//} alias RGNDATA* PRGNDATA, LPRGNDATA;
+
+
+
+template BITWISE(T)
+{
+    // bit value set
+    void btvs(T* pData, uint bitnum, uint val){
+        *pData &=  ~(0x01 << bitnum);
+        if(val) *pData |= (0x01 << bitnum);
+    }
+    // bit value get
+    T btvg(T* pData, uint bitnum){
+        return cast(T)((*pData >> bitnum) & 0x01);
+    }
+}
+alias BITWISE!(BYTE).btvs btvs;
+alias BITWISE!(WORD).btvs btvs;
+alias BITWISE!(DWORD).btvs btvs;
+alias BITWISE!(BYTE).btvg btvg;
+alias BITWISE!(WORD).btvg btvg;
+alias BITWISE!(DWORD).btvg btvg;
+
+
+struct SCRIPT_ANALYSIS {
+    WORD BITS;
+    SCRIPT_STATE s;
+
+    // getter
+    uint eScript()      { return BITS & 0x03FFU; }
+    uint fRTL()         { return btvg(&BITS, 10); }
+    uint fLayoutRTL()   { return btvg(&BITS, 11); }
+    uint fLinkBefore()  { return btvg(&BITS, 12); }
+    uint fLinkAfter()   { return btvg(&BITS, 13); }
+    uint fLogicalOrder(){ return btvg(&BITS, 14); }
+    uint fNoGlyphIndex(){ return btvg(&BITS, 15); }
+    // setter
+    void eScript(uint val)      { BITS &= 0xFC00; BITS |= (val & 0x03FF); }
+    void fRTL(uint val)         { btvs(&BITS, 10, val); }
+    void fLayoutRTL(uint val)   { btvs(&BITS, 11, val); }
+    void fLinkBefore(uint val)  { btvs(&BITS, 12, val); }
+    void fLinkAfter(uint val)   { btvs(&BITS, 13, val); }
+    void fLogicalOrder(uint val){ btvs(&BITS, 14, val); }
+    void fNoGlyphIndex(uint val){ btvs(&BITS, 15, val); }
+}
+
+alias void *SCRIPT_CACHE;
+
+struct SCRIPT_CONTROL {
+    align(1):
+    WORD uDefaultLanguage;
+    BYTE BITS;
+    BYTE fReserved;
+
+    // getter
+    uint fContextDigits()       { return btvg(&BITS, 0); }
+    uint fInvertPreBoundDir()   { return btvg(&BITS, 1); }
+    uint fInvertPostBoundDir()  { return btvg(&BITS, 2); }
+    uint fLinkStringBefore()    { return btvg(&BITS, 3); }
+    uint fLinkStringAfter()     { return btvg(&BITS, 4); }
+    uint fNeutralOverride()     { return btvg(&BITS, 5); }
+    uint fNumericOverride()     { return btvg(&BITS, 6); }
+    uint fLegacyBidiClass()     { return btvg(&BITS, 7); }
+
+    void fContextDigits(uint val)       { btvs(&BITS, 0, val); }
+    void fInvertPreBoundDir(uint val)   { btvs(&BITS, 1, val); }
+    void fInvertPostBoundDir(uint val)  { btvs(&BITS, 2, val); }
+    void fLinkStringBefore(uint val)    { btvs(&BITS, 3, val); }
+    void fLinkStringAfter(uint val)     { btvs(&BITS, 4, val); }
+    void fNeutralOverride(uint val)     { btvs(&BITS, 5, val); }
+    void fNumericOverride(uint val)     { btvs(&BITS, 6, val); }
+    void fLegacyBidiClass(uint val)     { btvs(&BITS, 7, val); }
+}
+
+struct SCRIPT_FONTPROPERTIES {
+  int   cBytes;
+  WORD  wgBlank;
+  WORD  wgDefault;
+  WORD  wgInvalid;
+  WORD  wgKashida;
+  int   iKashidaWidth;
+}
+
+struct SCRIPT_ITEM {
+    int iCharPos;
+    SCRIPT_ANALYSIS a;
+}
+
+struct SCRIPT_LOGATTR {
+    align(1):
+    BYTE BITS;
+
+    // gettter
+    uint fSoftBreak()   { return btvg(&BITS, 0); }
+    uint fWhiteSpace()  { return btvg(&BITS, 1); }
+    uint fCharStop()    { return btvg(&BITS, 2); }
+    uint fWordStop()    { return btvg(&BITS, 3); }
+    uint fInvalid()     { return btvg(&BITS, 4); }
+    uint fReserved()    { return cast(BYTE)(BITS>>5); }
+
+    void fSoftBreak(uint val)   { btvs(&BITS, 0, val); }
+    void fWhiteSpace(uint val)  { btvs(&BITS, 1, val); }
+    void fCharStop(uint val)    { btvs(&BITS, 2, val); }
+    void fWordStop(uint val)    { btvs(&BITS, 3, val); }
+    void fInvalid(uint val)     { btvs(&BITS, 4, val); }
+    void fReserved(uint val)    { BITS &= 0x1F; BITS |= (val & 0x07)<<5; }
+}
+
+
+struct SCRIPT_PROPERTIES {
+    DWORD   BITS1;
+    DWORD   BITS2;
+
+    uint langid()   { return BITS1 >> 16; }
+    uint fNumeric() { return btvg(&BITS1, 16); }
+    uint fComplex() { return btvg(&BITS1, 17); }
+    uint fNeedsWordBreaking()   { return btvg(&BITS1, 18); }
+    uint fNeedsCaretInfo()      { return btvg(&BITS1, 19); }
+    uint bCharSet()             { return (BITS1 >> 20) & 0xFF; }
+    uint fControl()             { return btvg(&BITS1, 28); }
+    uint fPrivateUseArea()      { return btvg(&BITS1, 29); }
+    uint fNeedsCharacterJustify(){ return btvg(&BITS1, 30); }
+    uint fInvalidGlyph()        { return btvg(&BITS1, 31); }
+    uint fInvalidLogAttr()      { return btvg(&BITS2, 0); }
+    uint fCDM()                 { return btvg(&BITS2, 1); }
+    uint fAmbiguousCharSet()    { return btvg(&BITS2, 2); }
+    uint fClusterSizeVaries()   { return btvg(&BITS2, 3); }
+    uint fRejectInvalid()       { return btvg(&BITS2, 4); }
+
+    void langid(uint val)       { BITS1 &= 0xFFFF0000; BITS1 |= (val & 0xFFFF); }
+    void fNumeric(uint val)             { btvs(&BITS1, 16, val); }
+    void fComplex(uint val)             { btvs(&BITS1, 17, val); }
+    void fNeedsWordBreaking(uint val)   { btvs(&BITS1, 18, val); }
+    void fNeedsCaretInfo(uint val)      { btvs(&BITS1, 19, val); }
+    void bCharSet(uint val)             { BITS1 &= 0xF00FFFFF; BITS1 |= (val & 0xFF)<<20; }
+    void fControl(uint val)             { btvs(&BITS1, 28, val); }
+    void fPrivateUseArea(uint val)      { btvs(&BITS1, 29, val); }
+    void fNeedsCharacterJustify(uint val){ btvs(&BITS1, 30, val); }
+    void fInvalidGlyph(uint val)        { btvs(&BITS1, 31, val); }
+    void fInvalidLogAttr(uint val)      { btvs(&BITS2, 0, val); }
+    void fCDM(uint val)                 { btvs(&BITS2, 1, val); }
+    void fAmbiguousCharSet(uint val)    { btvs(&BITS2, 2, val); }
+    void fClusterSizeVaries(uint val)   { btvs(&BITS2, 3, val); }
+    void fRejectInvalid(uint val)       { btvs(&BITS2, 4, val); }
+}
+
+
+struct SCRIPT_STATE {
+    WORD BITS;
+    // getter
+    uint uBidiLevel()           { return (BITS & 0x1F);}
+    uint fOverrideDirection()   { return btvg(&BITS, 5); }
+    uint fInhibitSymSwap()      { return btvg(&BITS, 6); }
+    uint fCharShape()           { return btvg(&BITS, 7); }
+    uint fDigitSubstitute()     { return btvg(&BITS, 8); }
+    uint fInhibitLigate()       { return btvg(&BITS, 9); }
+    uint fDisplayZWG()          { return btvg(&BITS, 10); }
+    uint fArabicNumContext()    { return btvg(&BITS, 11); }
+    uint fGcpClusters()         { return btvg(&BITS, 12); }
+    uint fReserved()            { return btvg(&BITS, 13); }
+    uint fEngineReserved()      { return (BITS >> 14) & 0x03;}
+    // setter
+    void uBidiLevel(uint val)           { BITS &= 0xFFE0; BITS |= (val & 0x1F); }
+    void fOverrideDirection(uint val)   { btvs(&BITS, 5, val); }
+    void fInhibitSymSwap(uint val)      { btvs(&BITS, 6, val); }
+    void fCharShape(uint val)           { btvs(&BITS, 7, val); }
+    void fDigitSubstitute(uint val)     { btvs(&BITS, 8, val); }
+    void fInhibitLigate(uint val)       { btvs(&BITS, 9, val); }
+    void fDisplayZWG(uint val)          { btvs(&BITS, 10, val); }
+    void fArabicNumContext(uint val)    { btvs(&BITS, 11, val); }
+    void fGcpClusters(uint val)         { btvs(&BITS, 12, val); }
+    void fReserved(uint val)            { btvs(&BITS, 13, val); }
+    void fEngineReserved(uint val)      { BITS &= 0x3FFF; BITS |= ((val & 0x03) << 14); }
+}
+
+
+struct SCRIPT_VISATTR {
+    align(1):
+    BYTE BITS;
+    BYTE fShapeReserved;
+
+    // getter
+    uint uJustification()   { return BITS & 0x0F; }
+    uint fClusterStart()    { return btvg(&BITS, 4); }
+    uint fDiacritic()       { return btvg(&BITS, 5); }
+    uint fZeroWidth()       { return btvg(&BITS, 6); }
+    uint fReserved()        { return btvg(&BITS, 7); }
+
+    // setter
+    void uJustification(uint val)   { BITS &= 0xF0; BITS |= (val & 0x0F); }
+    void fClusterStart(uint val)    { btvs(&BITS, 4, val); }
+    void fDiacritic(uint val)       { btvs(&BITS, 5, val); }
+    void fZeroWidth(uint val)       { btvs(&BITS, 6, val); }
+    void fReserved(uint val)        { btvs(&BITS, 7, val); }
+}
+
+//struct SCROLLINFO {
+//    UINT cbSize;
+//    UINT fMask;
+//    int  nMin;
+//    int  nMax;
+//    UINT nPage;
+//    int  nPos;
+//    int  nTrackPos;
+//}
+//alias SCROLLINFO* PSCROLLINFO, LPSCROLLINFO, LPCSCROLLINFO;
+
+version(WinCE)
+{
+struct SHACTIVATEINFO {
+    int cbSize;
+    HWND hwndLastFocus;
+    int fSipUp;
+    int fSipOnDeactivation;
+    int fActive;
+    int fReserved;
+}
+}
+
+struct SHELLEXECUTEINFOA {
+    DWORD cbSize;
+    ULONG fMask;
+    HWND hwnd;
+    LPCSTR lpVerb;
+    LPCSTR lpFile;
+    LPCSTR lpParameters;
+    LPCSTR lpDirectory;
+    int nShow;
+    HINSTANCE hInstApp;
+
+    // Optional members
+    LPVOID lpIDList;
+    LPCSTR lpClass;
+    HKEY hkeyClass;
+    DWORD dwHotKey;
+    HANDLE hIcon;
+    HANDLE hProcess;
+} alias SHELLEXECUTEINFOA* PSHELLEXECUTEINFOA, LPSHELLEXECUTEINFOA;
+struct SHELLEXECUTEINFOW {
+    DWORD cbSize;
+    ULONG fMask;
+    HWND hwnd;
+    LPCWSTR lpVerb;
+    LPCWSTR lpFile;
+    LPCWSTR lpParameters;
+    LPCWSTR lpDirectory;
+    int nShow;
+    HINSTANCE hInstApp;
+
+    // Optional members
+    LPVOID lpIDList;
+    LPCWSTR lpClass;
+    HKEY hkeyClass;
+    DWORD dwHotKey;
+    HANDLE hIcon;
+    HANDLE hProcess;
+} alias SHELLEXECUTEINFOW* PSHELLEXECUTEINFOW, LPSHELLEXECUTEINFOW;
+version(Win32SansUnicode){
+    alias SHELLEXECUTEINFOA SHELLEXECUTEINFO;
+}else{
+    alias SHELLEXECUTEINFOW SHELLEXECUTEINFO;
+}
+alias SHELLEXECUTEINFO* LPSHELLEXECUTEINFO;
+
+
+//version(WinCE)
+//{
+    struct SHMENUBARINFO {
+        int cbSize;
+        HWND hwndParent;
+        int dwFlags;
+        int nToolBarId;
+        HINSTANCE hInstRes;
+        int nBmpId;
+        int cBmpImages;
+        HWND hwndMB;
+    }
+
+    struct SHRGINFO {
+        DWORD cbSize;
+        HWND hwndClient;
+        POINT ptDown;
+        DWORD dwFlags;
+    }
+
+    struct SIPINFO {
+        DWORD cbSize;
+        DWORD fdwFlags;
+        RECT rcVisibleDesktop;
+        RECT rcSipRect;
+        DWORD dwImDataSize;
+        VOID *pvImData;
+    }
+//} // end of version WinCE
+
+//struct SIZE {
+//  LONG cx;
+//  LONG cy;
+//}
+//alias SIZE* LPSIZE, LPSIZEL;
+//alias SIZE SIZEL;
+
+
+struct TBBUTTONINFOA{
+    align(2):
+    UINT cbSize;
+    DWORD dwMask;
+    int idCommand;
+    int iImage;
+    BYTE fsState;
+    BYTE fsStyle;
+    WORD cx;
+    DWORD_PTR lParam;
+    LPSTR pszText;
+    int cchText;
+}
+struct TBBUTTONINFOW{
+    align(2):
+    UINT cbSize;
+    DWORD dwMask;
+    int idCommand;
+    int iImage;
+    BYTE fsState;
+    BYTE fsStyle;
+    WORD cx;
+    DWORD_PTR lParam;
+    LPWSTR pszText;
+    int cchText;
+}
+version(Win32SansUnicode){
+    alias TBBUTTONINFOA TBBUTTONINFO;
+}else{
+    alias TBBUTTONINFOW TBBUTTONINFO;
+}
+alias TBBUTTONINFO* LPTBBUTTONINFO;
+
+
+struct TCITEMA {
+    UINT mask;
+    DWORD dwState;
+    DWORD dwStateMask;
+    LPSTR pszText;
+    int cchTextMax;
+    int iImage;
+}
+struct TCITEMW {
+    UINT mask;
+    DWORD dwState;
+    DWORD dwStateMask;
+    LPWSTR pszText;
+    int cchTextMax;
+    int iImage;
+    LPARAM lParam;
+}
+version(Win32SansUnicode){
+    alias TCITEMA TCITEM;
+}else{
+    alias TCITEMW TCITEM;
+}
+
+
+// struct TOOLINFOA {
+//     UINT cbSize;
+//     UINT uFlags;
+//     HWND hwnd;
+//     UINT uId;
+//     RECT rect;
+//     HINSTANCE hinst;
+//     LPSTR lpszText;
+//     LPARAM lParam;
+// }
+// struct TOOLINFOW {
+//     UINT cbSize;
+//     UINT uFlags;
+//     HWND hwnd;
+//     UINT uId;
+//     RECT rect;
+//     HINSTANCE hinst;
+//     LPWSTR lpszText;
+//     LPARAM lParam;
+// }
+// version(Win32SansUnicode){
+//     alias TOOLINFOA TOOLINFO;
+// }else{
+//     alias TOOLINFOW TOOLINFO;
+// }
+
+struct TRACKMOUSEEVENT {
+    DWORD cbSize;
+    DWORD dwFlags;
+    HWND hwndTrack;
+    DWORD dwHoverTime;
+}
+alias TRACKMOUSEEVENT* PTRACKMOUSEEVENT, LPTRACKMOUSEEVENT;
+
+struct TRIVERTEX {
+  LONG        x;
+  LONG        y;
+  COLOR16     Red;
+  COLOR16     Green;
+  COLOR16     Blue;
+  COLOR16     Alpha;
+}
+alias TRIVERTEX* PTRIVERTEX, LPTRIVERTEX;
+
+
+struct TVHITTESTINFO {
+    POINT pt;
+    UINT flags;
+    HTREEITEM hItem;
+}
+
+
+
+
+
+
+//alias extern(Windows) int (*PFNTVCOMPARE)(LPARAM, LPARAM, LPARAM);
+struct TVSORTCB {
+    HTREEITEM hParent;
+    PFNTVCOMPARE lpfnCompare;
+    LPARAM lParam;
+}
+
+
+
+
+//struct WINDOWPLACEMENT {
+//    UINT length;
+//    UINT flags;
+//    UINT showCmd;
+//    POINT ptMinPosition;
+//    POINT ptMaxPosition;
+//    RECT rcNormalPosition;
+//}
+//
+// struct WINDOWPOS {
+//     HWND hwnd;
+//     HWND hwndInsertAfter;
+//     int x;
+//     int y;
+//     int cx;
+//     int cy;
+//     UINT flags;
+// }
+
+// WNDCLASSA is declared in phobos
+// struct WNDCLASSW {
+//     UINT        style;
+//     WNDPROC_I     lpfnWndProc;
+//     int         cbClsExtra;
+//     int         cbWndExtra;
+//     HINSTANCE   hInstance;
+//     HICON       hIcon;
+//     HCURSOR     hCursor;
+//     HBRUSH      hbrBackground;
+//     LPCWSTR     lpszMenuName;
+//     LPCWSTR     lpszClassName;
+// }alias WNDCLASSW* PWNDCLASSW, LPWNDCLASSW;
+//
+// // since phobos has alias WNDCLASSA to WNDCLASS, we have to alias it another name
+// version(Win32SansUnicode){
+//     alias WNDCLASSA WNDCLASS_T;
+// }else{
+//     alias WNDCLASSW WNDCLASS_T;
+// }
+
+enum TF_DA_COLORTYPE {
+  TF_CT_NONE = 0,
+  TF_CT_SYSCOLOR = 1,
+  TF_CT_COLORREF = 2
+}
+
+enum TF_DA_LINESTYLE {
+  TF_LS_NONE = 0,
+  TF_LS_SOLID = 1,
+  TF_LS_DOT = 2,
+  TF_LS_DASH = 3,
+  TF_LS_SQUIGGLE = 4
+}
+
+enum TF_DA_ATTR_INFO {
+  TF_ATTR_INPUT = 0,
+  TF_ATTR_TARGET_CONVERTED = 1,
+  TF_ATTR_CONVERTED = 2,
+  TF_ATTR_TARGET_NOTCONVERTED = 3,
+  TF_ATTR_INPUT_ERROR = 4,
+  TF_ATTR_FIXEDCONVERTED = 5,
+  TF_ATTR_OTHER = -1
+}
+
+struct TF_DA_COLOR {
+  TF_DA_COLORTYPE type;
+  union {
+    int nIndex;
+    COLORREF cr;
+  };
+}
+
+struct TF_DISPLAYATTRIBUTE{
+  TF_DA_COLOR crText;
+  TF_DA_COLOR crBk;
+  TF_DA_LINESTYLE lsStyle;
+  BOOL fBoldLine;
+  TF_DA_COLOR crLine;
+  TF_DA_ATTR_INFO bAttr;
+}
+
+struct NMTTCUSTOMDRAW {
+    NMCUSTOMDRAW nmcd;
+    UINT uDrawFlags;
+}
+alias NMTTCUSTOMDRAW* LPNMTTCUSTOMDRAW;
+
+struct SHDRAGIMAGE {
+    SIZE sizeDragImage;
+    POINT ptOffset;
+    HBITMAP hbmpDragImage;
+    COLORREF crColorKey;
+}
+
+const CCHILDREN_SCROLLBAR = 5;
+struct SCROLLBARINFO {
+    DWORD cbSize;
+    RECT rcScrollBar;
+    int dxyLineButton;
+    int xyThumbTop;
+    int xyThumbBottom;
+    int reserved;
+    DWORD rgstate[CCHILDREN_SCROLLBAR+1];
+}
+alias SCROLLBARINFO* PSCROLLBARINFO;
+
+}   // end of extern(Windows)
+
+
+
+
+
+// shlwapi.h
+enum {ASSOCF_INIT_BYEXENAME,
+    ASSOCF_OPEN_BYEXENAME,
+    ASSOCF_INIT_DEFAULTTOSTAR,
+    ASSOCF_INIT_DEFAULTTOFOLDER,
+    ASSOCF_NOUSERSETTINGS,
+    ASSOCF_NOTRUNCATE,
+    ASSOCF_VERIFY,
+    ASSOCF_REMAPRUNDLL,
+    ASSOCF_NOFIXUPS,
+    ASSOCF_IGNOREBASECLASS
+};
+
+alias DWORD ASSOCF;